import java.awt.*; import java.util.Hashtable; public class eventTracker extends Frame { Hashtable track = new Hashtable(30); List events; eventTracker() { setLayout(new BorderLayout()); Panel titles = new Panel(); events = new List(10, false); titles.add(new Label("Class ")); titles.add(new Label("Event ")); titles.add(new Label("Argument ")); titles.add(new Label(" X ")); titles.add(new Label(" Y ")); titles.add(new Label("Key")); titles.add(new Label("Mod")); add("North", titles); add("South", events); track.put(new Integer(Event.MOUSE_DOWN), new CheckboxMenuItem("MouseDown")); track.put(new Integer(Event.MOUSE_UP), new CheckboxMenuItem("MouseUp")); track.put(new Integer(Event.MOUSE_MOVE), new CheckboxMenuItem("MouseMove")); track.put(new Integer(Event.MOUSE_ENTER), new CheckboxMenuItem("MouseEnter")); track.put(new Integer(Event.MOUSE_EXIT), new CheckboxMenuItem("MouseExit")); track.put(new Integer(Event.MOUSE_DRAG), new CheckboxMenuItem("MouseDrag")); track.put(new Integer(Event.SCROLL_LINE_UP), new CheckboxMenuItem("ScrLnUp")); track.put(new Integer(Event.SCROLL_LINE_DOWN), new CheckboxMenuItem("ScrLnDn")); track.put(new Integer(Event.SCROLL_PAGE_UP), new CheckboxMenuItem("ScrPgUp")); track.put(new Integer(Event.SCROLL_PAGE_DOWN), new CheckboxMenuItem("ScrPgDn")); track.put(new Integer(Event.SCROLL_ABSOLUTE), new CheckboxMenuItem("ScrAbs")); track.put(new Integer(Event.LIST_SELECT), new CheckboxMenuItem("ListSel")); track.put(new Integer(Event.LIST_DESELECT), new CheckboxMenuItem("ListDesel")); track.put(new Integer(Event.ACTION_EVENT), new CheckboxMenuItem("Action")); track.put(new Integer(Event.LOAD_FILE), new CheckboxMenuItem("LoadFile")); track.put(new Integer(Event.SAVE_FILE), new CheckboxMenuItem("SaveFile")); track.put(new Integer(Event.GOT_FOCUS), new CheckboxMenuItem("GotFocus")); track.put(new Integer(Event.LOST_FOCUS), new CheckboxMenuItem("LostFocus")); track.put(new Integer(Event.KEY_PRESS), new CheckboxMenuItem("KeyPress")); track.put(new Integer(Event.KEY_RELEASE), new CheckboxMenuItem("Key_Rel")); track.put(new Integer(Event.KEY_ACTION), new CheckboxMenuItem("KeyAction")); track.put(new Integer(Event.KEY_ACTION_RELEASE),new CheckboxMenuItem("KeyActRel")); track.put(new Integer(Event.WINDOW_DESTROY), new CheckboxMenuItem("WinDestroy")); track.put(new Integer(Event.WINDOW_EXPOSE), new CheckboxMenuItem("WinExpose")); track.put(new Integer(Event.WINDOW_ICONIFY), new CheckboxMenuItem("WinIconify")); track.put(new Integer(Event.WINDOW_DEICONIFY), new CheckboxMenuItem("WinDeiconify")); track.put(new Integer(Event.WINDOW_MOVED), new CheckboxMenuItem("WinMoved")); MenuBar bar = new MenuBar(); Menu mouseMenu = new Menu("Mouse"); Menu scrollMenu = new Menu("Scroll"); Menu listMenu = new Menu("List"); Menu keyMenu = new Menu("Key"); Menu winMenu = new Menu("Window"); Menu miscMenu = new Menu("Misc"); bar.add(mouseMenu); bar.add(scrollMenu); bar.add(listMenu); bar.add(keyMenu); bar.add(winMenu); bar.add(miscMenu); setMenuBar(bar); mouseMenu.add((CheckboxMenuItem)track.get(new Integer(Event.MOUSE_DOWN))); mouseMenu.add((CheckboxMenuItem)track.get(new Integer(Event.MOUSE_UP))); mouseMenu.add((CheckboxMenuItem)track.get(new Integer(Event.MOUSE_MOVE))); mouseMenu.add((CheckboxMenuItem)track.get(new Integer(Event.MOUSE_ENTER))); mouseMenu.add((CheckboxMenuItem)track.get(new Integer(Event.MOUSE_EXIT))); mouseMenu.add((CheckboxMenuItem)track.get(new Integer(Event.MOUSE_DRAG))); scrollMenu.add((CheckboxMenuItem)track.get(new Integer(Event.SCROLL_LINE_UP))); scrollMenu.add((CheckboxMenuItem)track.get(new Integer(Event.SCROLL_LINE_DOWN))); scrollMenu.add((CheckboxMenuItem)track.get(new Integer(Event.SCROLL_PAGE_UP))); scrollMenu.add((CheckboxMenuItem)track.get(new Integer(Event.SCROLL_PAGE_DOWN))); scrollMenu.add((CheckboxMenuItem)track.get(new Integer(Event.SCROLL_ABSOLUTE))); listMenu.add((CheckboxMenuItem)track.get(new Integer(Event.LIST_SELECT))); listMenu.add((CheckboxMenuItem)track.get(new Integer(Event.LIST_DESELECT))); miscMenu.add((CheckboxMenuItem)track.get(new Integer(Event.ACTION_EVENT))); miscMenu.add((CheckboxMenuItem)track.get(new Integer(Event.LOAD_FILE))); miscMenu.add((CheckboxMenuItem)track.get(new Integer(Event.SAVE_FILE))); miscMenu.add((CheckboxMenuItem)track.get(new Integer(Event.GOT_FOCUS))); miscMenu.add((CheckboxMenuItem)track.get(new Integer(Event.LOST_FOCUS))); keyMenu.add((CheckboxMenuItem)track.get(new Integer(Event.KEY_PRESS))); keyMenu.add((CheckboxMenuItem)track.get(new Integer(Event.KEY_RELEASE))); keyMenu.add((CheckboxMenuItem)track.get(new Integer(Event.KEY_ACTION))); keyMenu.add((CheckboxMenuItem)track.get(new Integer(Event.KEY_ACTION_RELEASE))); winMenu.add((CheckboxMenuItem)track.get(new Integer(Event.WINDOW_DESTROY))); winMenu.add((CheckboxMenuItem)track.get(new Integer(Event.WINDOW_EXPOSE))); winMenu.add((CheckboxMenuItem)track.get(new Integer(Event.WINDOW_ICONIFY))); winMenu.add((CheckboxMenuItem)track.get(new Integer(Event.WINDOW_DEICONIFY))); winMenu.add((CheckboxMenuItem)track.get(new Integer(Event.WINDOW_MOVED))); resize(500, 300); show(); Font font = new Font("Courier", Font.PLAIN, 12); events.setFont(font); } public boolean handleEvent(Event evt) { if (evt.id == Event.MOUSE_DOWN) events.clear(); return true; } void log(Event evt) { Integer id = new Integer(evt.id); CheckboxMenuItem mi; StringBuffer classname, eventname, argument, x, y, key, modifiers; mi = (CheckboxMenuItem) track.get(id); if (mi.getState() == true) { classname = new StringBuffer(evt.target.getClass().getName()); while (classname.length() < 20) classname.append(" "); eventname = new StringBuffer(mi.getLabel()); while (eventname.length() < 17) eventname.append(" "); if (evt.arg == null) argument = new StringBuffer("null"); else argument = new StringBuffer(evt.arg.toString()); while (argument.length() < 14) argument.append(" "); x = new StringBuffer(String.valueOf(evt.x)); while (x.length() < 7) x.append(" "); y = new StringBuffer(String.valueOf(evt.y)); while (y.length() < 7) y.append(" "); key = new StringBuffer(String.valueOf(evt.key)); while (key.length() < 5) key.append(" "); modifiers = new StringBuffer(String.valueOf(evt.modifiers)); while (modifiers.length() < 5) modifiers.append(" "); String line = new String( classname.toString() + eventname + argument + x + y + key + modifiers); events.addItem(line); } } }