// Fig. 11.14: SelfContainedCanvas3.java
// Class that extends SelfContainedCanvas2 and adds
// a popup menu to select drawing color.
package com.deitel.jhtp2.ch11;
import java.awt.*;
import java.awt.event.*;

public class SelfContainedCanvas3 extends SelfContainedCanvas2
      implements ActionListener {
   private String colorNames[] =
      { "Black", "Blue", "Cyan", "Dark Gray", "Gray", "Green",
        "Light Gray", "Magenta", "Orange", "Pink", "Red",
        "White", "Yellow" };
   private Color colorValues[] =
      { Color.black, Color.blue, Color.cyan, Color.darkGray,
        Color.gray, Color.green, Color.lightGray, Color.magenta,
        Color.orange, Color.pink, Color.red, Color.white,
        Color.yellow };
   private MenuItem colors[];
   private PopupMenu popup;

   public SelfContainedCanvas3()
   {
      popup = new PopupMenu( "Colors" );
      colors = new MenuItem[ colorNames.length ];

      for ( int i = 0; i < colorNames.length; i++ ) {
         colors[ i ] = new MenuItem( colorNames[ i ] );
         popup.add ( colors[ i ] );
         colors[ i ].addActionListener( this );
      }

      add( popup );  // add popup to this canvas
      enableEvents( AWTEvent.MOUSE_EVENT_MASK );
   }

   public void actionPerformed( ActionEvent e )
   {
      for ( int i = 0; i < colors.length; i++ )
         if ( e.getSource() == colors[ i ] ) {
            setDrawingColor( colorValues[ i ] );
            break;
         }
   }

   public void processMouseEvent( MouseEvent e )
   {
      if ( e.isPopupTrigger() )
         popup.show( this, e.getX(), e.getY() );

      super.processMouseEvent( e );
   }
}
