// 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 ); } }