/**
 * Sample #7: Same as #6, but use progress bar.
 */
import java.awt.event.*;
import javax.swing.*;
import javax.swing.event.*;
import javax.swing.border.*;

public class Swing7
{
    public static void main( String [] args )
    {
        JFrame f = new JFrame( "Swing Test" );

        f.addWindowListener( new WindowAdapter( )
        {
            public void windowClosing( WindowEvent e )
            {
                System.exit( 0 );
            }
        } );

        JPanel p = new JPanel( );
        JPanel inputs = new JPanel( );
        JButton qb = new JButton( "quit" );
        final JSlider slide = new JSlider( JSlider.HORIZONTAL, 0, 30, 0 );
        slide.setPaintTicks( true );
        slide.setMajorTickSpacing( 5 );
        slide.setMinorTickSpacing( 1 );
        slide.setBorder( new TitledBorder( "Slider" ) );

        final JTextField tf = new JTextField( 20 );
        tf.setEditable( false );

        final JProgressBar pb = new JProgressBar( slide.getMinimum( ),
                                                  slide.getMaximum( ) );
        pb.setStringPainted( true );

        inputs.add( qb );
        inputs.add( slide );
        inputs.setBorder( new TitledBorder( "Inputs" ) );
        p.add( inputs );
        p.add( tf );
        p.add( pb );

        f.setContentPane( p );
        f.setSize( 300, 250 );
        f.setVisible( true );

        qb.setMnemonic( 'q' );
        qb.setToolTipText( "press to quit" );

        qb.addActionListener( new ActionListener( )
        {
            public void actionPerformed( ActionEvent e )
            {
                int option = JOptionPane.showConfirmDialog(null, 
                     "OK to exit?", "Verify exit",
                     JOptionPane.YES_NO_OPTION );

                if( option == JOptionPane.YES_OPTION )
                    System.exit( 0 );
            }
        } );
        slide.addChangeListener( new ChangeListener( )
        {
            public void stateChanged( ChangeEvent e )
            {
                String str = "";
                for( int i = slide.getValue( ); i > 0; i-- )
                    str += "*";

                tf.setText( str );
                pb.setValue( slide.getValue( ) );
            }
        } );
    }
}
