import java.awt.*; public class AllEvents extends AllComponents { public AllEvents(String title) { super(title); } // This method handles all the events generated by all the components. public boolean handleEvent(Event event) { switch (event.id) { // Most components generate ACTION_EVENT // We test the target field to find out which component. case Event.ACTION_EVENT: if (event.target == textfield) { textarea.setText("Your name is: " + (String)event.arg + "\n"); } else if (event.target == choice) { textarea.setText("Your favorite color is: " + (String)event.arg + "\n"); } else if ( (event.target == checkboxes[0]) || (event.target == checkboxes[1]) || (event.target == checkboxes[2]) ) { textarea.setText("Your favorite flavor is: " + checkbox_group.getCurrent().getLabel() + "\n"); } else if (event.target == list) { textarea.setText("You double-clicked on: " + (String)event.arg + "\n"); } else if (event.target == okay) { textarea.setText("Okay button clicked.\n"); } else if (event.target == cancel) { textarea.setText("Cancel button clicked.\n"); } else if (event.target instanceof MenuItem) { // Since we didn't save references to each of the menu objects, // we check which one was pressed by comparing labels. // Note that we respond to these menu items by // popping up kialog boxes. if (((String)event.arg).equals("Quit")) { YesNoDialog d = new ReallyQuitDialog(this,textarea); d.show(); } else if (((String)event.arg).equals("Open")) { textarea.setText("You selected Open.\n"); // Use the dialog box created by our superclass. file_dialog.pack(); // bug workaround file_dialog.show(); // blocks until user selects a file textarea.setText("you selected file:" + file_dialog.getFile()); } else if (((String)event.arg).equals("About")) { InfoDialog d; d = new InfoDialog(this,"About AWT Demo", "This demo was writen by David Flanagan\n" + "Copyright (c) 1996 O'Reilly & Associates"); d.show(); textarea.setText("You selected About.\n"); } } else { textarea.setText("Unknown action event."); } break; // Double-clicking on a list generates an action event. // But list selection and deselection are separate event types. case Event.LIST_SELECT: textarea.setText("You selected: " + list.getItem(((Integer)event.arg).intValue()) + "\n"); break; case Event.LIST_DESELECT: textarea.setText("You deselected: " + list.getItem(((Integer)event.arg).intValue()) + "\n"); break; // These are some events pertaining to the window itself. case Event.WINDOW_DESTROY: textarea.setText("Window Destroy\n"); break; case Event.WINDOW_ICONIFY: textarea.setText("Window Iconify\n"); break; case Event.WINDOW_DEICONIFY: textarea.setText("Window Deiconify\n"); break; case Event.WINDOW_MOVED: textarea.setText("Window Moved\n"); break; // We print a message about each of these mouse and key events. // but return false after so that they can still // be properly handled by their correct recipient. case Event.MOUSE_DOWN: textarea.setText("Window down: [" + event.x + "," + event.y + "]\n"); return false; case Event.MOUSE_UP: textarea.setText("Window up: [" + event.x + "," + event.y + "]\n"); return false; case Event.MOUSE_DRAG: textarea.setText("Window drag: [" + event.x + "," + event.y + "]\n"); return false; case Event.KEY_PRESS: case Event.KEY_ACTION: textarea.setText("Key press\n"); return false; case Event.KEY_RELEASE: case Event.KEY_ACTION_RELEASE: textarea.setText("Key release\n"); return false; // We ignore these event types. case Event.GOT_FOCUS: case Event.LOST_FOCUS: case Event.MOUSE_ENTER: case Event.MOUSE_EXIT: case Event.MOUSE_MOVE: return false; // We shouldn't ever get this... default: textarea.setText("Unexpected Event type: " + event + "\n"); break; } return true; } }