// Fig. 11.12: DialogBoxDemo.java
// Demonstrating modal and modeless Dialog boxes.
import java.awt.*;
import java.awt.event.*;
import com.deitel.jhtp2.ch11.CloseWindowAndExit;
import com.deitel.jhtp2.ch11.SelfContainedCanvas2;
import com.deitel.jhtp2.ch11.SelectColorDialog;
import com.deitel.jhtp2.ch11.MessageBox;

public class DialogBoxDemo extends Frame
             implements ActionListener, ItemListener {
   private MessageBox information;
   private MenuItem about, colors, exit;
   private MenuBar bar;
   private Menu helpMenu, fileMenu;
   private SelfContainedCanvas2 canvas;
   private SelectColorDialog selectColor;

   public DialogBoxDemo()
   {
      super( "Dialog boxes" );
      setSize( 275, 150 );

      // create Help menu
      helpMenu = new Menu( "Help" );
      about = new MenuItem( "About" );
      about.addActionListener( this );
      helpMenu.add( about );

      // create File menu
      fileMenu = new Menu( "File" );
      colors = new MenuItem( "Select color ..." );
      colors.addActionListener( this );
      fileMenu.add( colors );
      fileMenu.addSeparator();
      exit = new MenuItem( "Exit" );
      exit.addActionListener( this );
      fileMenu.add( exit );

      // setup MenuBar
      bar = new MenuBar();
      bar.add( fileMenu );
      bar.add( helpMenu );
      bar.setHelpMenu( helpMenu );
      setMenuBar( bar );

      // create About dialog
      information = new MessageBox(
         this, "Message", "Dialog box example", 200 );

      // create SelectColorDialog
      selectColor = new SelectColorDialog(
         this, "Click once on desired color" );

      // create SelfContainedCanvas2
      canvas = new SelfContainedCanvas2();
      add( canvas, BorderLayout.CENTER );

      setVisible( true );  // show window
   }

   public void actionPerformed( ActionEvent e )
   {
      if ( e.getSource() == about )
         information.setVisible( true );
      else if ( e.getSource() == colors )
         selectColor.setVisible( true );
      else if ( e.getSource() == exit )
         System.exit( 0 );         
   }

   public void itemStateChanged( ItemEvent e )
   {
      canvas.setDrawingColor( selectColor.getColor() );
   }

   public static void main( String args[] )
   {
      DialogBoxDemo d = new DialogBoxDemo();
      d.addWindowListener( new CloseWindowAndExit() );
   }
}

