/*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Copyright (c) John D. Mitchell, 1996 -- All Rights Reserved PROJECT: JavaWorld MODULE: Tips & Tricks FILE: CascadeMenus.java AUTHOR: John D. Mitchell, Jul 19, 1996 REVISION HISTORY: Name Date Description ---- ---- ----------- JDM 96.07.19 Initial version. DESCRIPTION: This file defines a Java User Interface which highlights the creation of cascading menus. %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%*/ import java.awt.*; public class CascadeMenus extends Frame { public static void main (String args[]) { Frame frame = new CascadeMenus (); frame.resize (250,250); frame.show (); } // Build me! public CascadeMenus () { MenuBar menuBar; Menu menu; Menu cascadeMenu1; Menu cascadeMenu2; // I am not a "Hello, World" program! setTitle ("JavaWorld Cascading Menus Tip"); // Build toplevel menubar. menuBar = new MenuBar(); // Build toplevel first child. menu = new Menu ("File"); // First child of "File" menu is a pull-right style menu. cascadeMenu1 = new Menu ("Open"); cascadeMenu1.add (new MenuItem ("New")); cascadeMenu1.add (new MenuItem ("Template")); menu.add (cascadeMenu1); // Second child is a doubly-cascaded menu. cascadeMenu1 = new Menu ("Nuke"); cascadeMenu2 = new Menu ("Files"); cascadeMenu2.add (new MenuItem ("Save")); cascadeMenu2.add (new MenuItem ("Save As")); cascadeMenu2.add (new MenuItem ("Delete")); cascadeMenu1.add (cascadeMenu2); cascadeMenu2 = new Menu ("Food"); cascadeMenu2.add (new MenuItem ("High")); cascadeMenu2.add (new MenuItem ("Medium")); cascadeMenu2.add (new MenuItem ("Low")); cascadeMenu1.add (cascadeMenu2); menu.add (cascadeMenu1); // Something a bit more normal. menu.addSeparator (); menu.add (new MenuItem ("Quit")); // Add first child to menu bar. menuBar.add (menu); // Build toplevel second child. menu = new Menu ("Options"); // Nothing much here. menu.add (new MenuItem ("RTFM")); // Add second child to menu bar. menuBar.add (menu); // Make it actually happen! setMenuBar (menuBar); } // End of CascadeMenus constructor. // Handle Window events. public boolean handleEvent (Event event) { // We only care about quitting the app. if ((Event.WINDOW_DESTROY == event.id) && (this == event.target)) { System.exit (0); } // Pass on all other events for normal processing. return (super.handleEvent (event)); } // Handle user actions. public boolean action (Event event, Object target) { // We only care about quitting the app. // Was the action directed at the "Quit" menu selction? if ((event.target instanceof MenuItem) && (target.equals ("Quit"))) { System.exit (0); } // Otherwise, propagate the action upwards. return (false); } }