// Exercise 12.24 Solution

// SelectShape.java

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;



public class SelectShape extends JFrame {

   private final int CIRCLE = 0;

   private final int SQUARE = 1;

   private final int OVAL = 2;

   private final int RECTANGLE = 3;

   private JComboBox choice;

   private int shape;



   public SelectShape()

   {

      choice = new JComboBox();

      choice.addItem( "Circle" );

      choice.addItem( "Square" );

      choice.addItem( "Oval" );

      choice.addItem( "Rectangle" );



      choice.addItemListener(

         new ItemListener() {

            public void itemStateChanged( ItemEvent e )

            {

               setShape( choice.getSelectedIndex() );

               repaint();

            }

         }

      );



      getContentPane().add( choice, BorderLayout.SOUTH );

      setSize( 300, 200 );

      show();

   }



   public void paint( Graphics g )

   {

      for ( int k = 1; k <= 20; k ++ ) {

         int w = ( int ) ( Math.random() * getSize().width );

         int h = ( int ) ( Math.random() * getSize().height );

         int x = ( int ) ( Math.random() * getSize().width );

         int y = ( int ) ( Math.random() * getSize().height );



         switch ( shape ) {

            case CIRCLE:

               g.drawOval( x, y, w, w );

               break;

            case SQUARE:

               g.drawRect( x, y, w, w );

               break;

            case OVAL:

               g.drawOval( x, y, w, h );

               break;

            case RECTANGLE:

               g.drawRect( x, y, w, h );

               break;

         }

      }

   }


   public void setShape( int s ) { shape = s; }



   public static void main( String args[] )

   {

      SelectShape app = new SelectShape();



      app.addWindowListener(

         new WindowAdapter() {

            public void windowClosing( WindowEvent e )

            {

               System.exit( 0 );

            }

         }

      );

   }

}
