/////////////////////////////////////////////////////////////////////// // // EventMonitor.java : display events fired by two techexplorer // instances in a Java text area. Provide mechanism for toggling // techexplorer events. // /////////////////////////////////////////////////////////////////////// // // Copyright © 1997-98 by the IBM Corporation. All Rights Reserved. // // Author: Angel L. Diaz aldiaz@us.ibm.com // Robert S. Sutor sutor@us.ibm.com // // IBM MAKES NO REPRESENTATIONS OR WARRANTIES ABOUT THE SUITABILITY OF // THE SOFTWARE, EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED // TO THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A // PARTICULAR PURPOSE, OR NON-INFRINGEMENT. IBM SHALL NOT BE LIABLE FOR // ANY DAMAGES SUFFERED BY LICENSEE AS A RESULT OF USING OR MODIFYING // THIS SOFTWARE OR ITS DERIVATIVES. // /////////////////////////////////////////////////////////////////////// import java.awt.*; import java.applet.Applet; import ibm.techexplorer.techexplorer; import ibm.techexplorer.control.techexplorerControl; import ibm.techexplorer.axtchexp.AxTchExpRaw; import ibm.techexplorer.event.InstanceEvent; import ibm.techexplorer.event.InstanceListener; import ibm.techexplorer.awt.AWTEvent; import ibm.techexplorer.awt.event.KeyListener; import ibm.techexplorer.awt.event.KeyEvent; import ibm.techexplorer.awt.event.FocusListener; import ibm.techexplorer.awt.event.FocusEvent; import ibm.techexplorer.awt.event.MouseEvent; import ibm.techexplorer.awt.event.MouseListener; import ibm.techexplorer.awt.event.MouseMotionListener; public class EventMonitor extends java.applet.Applet implements InstanceListener, KeyListener, FocusListener, MouseListener, MouseMotionListener { private static final boolean debug = true; techexplorer EventMonitorObject1 = null; techexplorer EventMonitorObject2 = null; Panel displayPanel = null; Panel eventMonitorPanel = null; TextArea keyTextArea = null; int numRows = 0; Button defaultButton = null; // event monitor 1 Panel evenMonitorPanel1 = null; Panel checkboxPanel1 = null; Panel listenerCheckboxes1 = null; Checkbox instanceCheckbox1 = null; Checkbox keyCheckbox1 = null; Checkbox focusCheckbox1 = null; Checkbox mouseCheckbox1 = null; Checkbox mouseMotionCheckbox1 = null; Panel disableEventCheckboxes1 = null; Checkbox disableFocusCheckbox1 = null; Checkbox disableKeyCheckbox1 = null; Checkbox disableMouseCheckbox1 = null; Checkbox disableMouseMotionCheckbox1 = null; Label eventArea2Label = null; // event monitor 2 Panel evenMonitorPanel2 = null; Panel checkboxPanel2 = null; Panel listenerCheckboxes2 = null; Checkbox instanceCheckbox2 = null; Checkbox keyCheckbox2 = null; Checkbox focusCheckbox2 = null; Checkbox mouseCheckbox2 = null; Checkbox mouseMotionCheckbox2 = null; Panel disableEventCheckboxes2 = null; Checkbox disableFocusCheckbox2 = null; Checkbox disableKeyCheckbox2 = null; Checkbox disableMouseCheckbox2 = null; Checkbox disableMouseMotionCheckbox2 = null; Label eventArea1Label = null; public void setPlugins( techexplorer plugin1, techexplorer plugin2 ) { if ( plugin1 instanceof techexplorer ) EventMonitorObject1 = plugin1; if ( plugin2 instanceof techexplorer ) EventMonitorObject2 = plugin2; initListener(); } public void setControls( AxTchExpRaw control1, AxTchExpRaw control2 ) { if ( control1 instanceof AxTchExpRaw ) EventMonitorObject1 = new techexplorerControl( control1 ); if ( control2 instanceof AxTchExpRaw ) EventMonitorObject2 = new techexplorerControl( control2 ); initListener(); } public void init() { // TextArea for displaying events keyTextArea = new TextArea(5, 20); //Build panel, which contains event listeners checkboxes instanceCheckbox1 = new Checkbox("Instance Listener", null, true); keyCheckbox1 = new Checkbox("Key Listener", null, true); focusCheckbox1 = new Checkbox("Focus Listener", null, true); mouseCheckbox1 = new Checkbox("Mouse Listener", null, true); mouseMotionCheckbox1 = new Checkbox("Mouse Motion Listener", null, true); listenerCheckboxes1 = new Panel(); listenerCheckboxes1.setLayout(new GridLayout(5, 1)); listenerCheckboxes1.add(instanceCheckbox1); listenerCheckboxes1.add(keyCheckbox1); listenerCheckboxes1.add(focusCheckbox1); listenerCheckboxes1.add(mouseCheckbox1); listenerCheckboxes1.add(mouseMotionCheckbox1); //Build panel, which contains techexplorer plug-in event processing checkboxes disableFocusCheckbox1 = new Checkbox("Focus event", null, true); disableKeyCheckbox1 = new Checkbox("Key event", null, true); disableMouseCheckbox1 = new Checkbox("Mouse event", null, true); disableMouseMotionCheckbox1 = new Checkbox("Mouse Motion event", null, true); disableEventCheckboxes1 = new Panel(); disableEventCheckboxes1.setLayout(new GridLayout(5, 1)); disableEventCheckboxes1.add(disableFocusCheckbox1); disableEventCheckboxes1.add(disableKeyCheckbox1); disableEventCheckboxes1.add(disableMouseCheckbox1); disableEventCheckboxes1.add(disableMouseMotionCheckbox1); checkboxPanel1 = new Panel(); checkboxPanel1.setLayout(new GridLayout(1, 2)); checkboxPanel1.add(listenerCheckboxes1); checkboxPanel1.add(disableEventCheckboxes1); eventArea1Label = new Label( "Event Area 1"); evenMonitorPanel1 = new Panel(); evenMonitorPanel1.setLayout(new BorderLayout(0,0)); evenMonitorPanel1.add("North",eventArea1Label); evenMonitorPanel1.add("Center",checkboxPanel1); //Build panel, which contains event listeners checkboxes instanceCheckbox2 = new Checkbox("Instance Listener", null, true); keyCheckbox2 = new Checkbox("Key Listener", null, true); focusCheckbox2 = new Checkbox("Focus Listener", null, true); mouseCheckbox2 = new Checkbox("Mouse Listener", null, true); mouseMotionCheckbox2 = new Checkbox("Mouse Motion Listener", null, true); listenerCheckboxes2 = new Panel(); listenerCheckboxes2.setLayout(new GridLayout(5, 2)); listenerCheckboxes2.add(instanceCheckbox2); listenerCheckboxes2.add(keyCheckbox2); listenerCheckboxes2.add(focusCheckbox2); listenerCheckboxes2.add(mouseCheckbox2); listenerCheckboxes2.add(mouseMotionCheckbox2); //Build panel, which contains techexplorer plug-in event processing checkboxes disableFocusCheckbox2 = new Checkbox("Focus event", null, true); disableKeyCheckbox2 = new Checkbox("Key event", null, true); disableMouseCheckbox2 = new Checkbox("Mouse event", null, true); disableMouseMotionCheckbox2 = new Checkbox("Mouse Motion event", null, true); disableEventCheckboxes2 = new Panel(); disableEventCheckboxes2.setLayout(new GridLayout(5, 1)); disableEventCheckboxes2.add(disableFocusCheckbox2); disableEventCheckboxes2.add(disableKeyCheckbox2); disableEventCheckboxes2.add(disableMouseCheckbox2); disableEventCheckboxes2.add(disableMouseMotionCheckbox2); checkboxPanel2 = new Panel(); checkboxPanel2.setLayout(new GridLayout(1, 2)); checkboxPanel2.add(listenerCheckboxes2); checkboxPanel2.add(disableEventCheckboxes2); eventArea2Label = new Label( "Event Area 2"); evenMonitorPanel2 = new Panel(); evenMonitorPanel2.setLayout(new BorderLayout(0,0)); evenMonitorPanel2.add("North",eventArea2Label); evenMonitorPanel2.add("Center",checkboxPanel2); eventMonitorPanel = new Panel(); eventMonitorPanel.setLayout(new GridLayout(1, 2)); eventMonitorPanel.add(evenMonitorPanel1); eventMonitorPanel.add(evenMonitorPanel2); defaultButton = new Button( "Press here to reset to default values" ); Panel displayPanel = new Panel(); GridBagLayout gridBag = new GridBagLayout(); displayPanel.setLayout(gridBag); GridBagConstraints c = new GridBagConstraints(); c.gridwidth = GridBagConstraints.REMAINDER; c.fill = GridBagConstraints.BOTH; c.weightx = 1.0; c.weighty = 1.0; gridBag.setConstraints(keyTextArea, c); displayPanel.add(keyTextArea); gridBag.setConstraints(eventMonitorPanel, c); displayPanel.add(eventMonitorPanel); setLayout(new BorderLayout(0,0)); add("Center",displayPanel); add("South",defaultButton); } public void initListener() { if (debug) System.out.println("EventMonitor: initListener"); if ( EventMonitorObject1 == null ) { System.out.println("EventMonitor: start(): null EventMonitorObject1"); } else { instanceCheckbox1.setState( EventMonitorObject1.addInstanceListener( (InstanceListener)this ) ); keyCheckbox1.setState( EventMonitorObject1.addKeyListener( (KeyListener)this ) ); focusCheckbox1.setState( EventMonitorObject1.addFocusListener( (FocusListener)this ) ); mouseCheckbox1.setState( EventMonitorObject1.addMouseListener( (MouseListener)this ) ); mouseMotionCheckbox1.setState( EventMonitorObject1.addMouseMotionListener( (MouseMotionListener)this ) ); } if ( EventMonitorObject2 == null ) { System.out.println("EventMonitor: start(): null EventMonitorObject2"); } else { instanceCheckbox2.setState( EventMonitorObject2.addInstanceListener( (InstanceListener)this ) ); keyCheckbox2.setState( EventMonitorObject2.addKeyListener( (KeyListener)this ) ); focusCheckbox2.setState( EventMonitorObject2.addFocusListener( (FocusListener)this ) ); mouseCheckbox2.setState( EventMonitorObject2.addMouseListener( (MouseListener)this ) ); mouseMotionCheckbox2.setState( EventMonitorObject2.addMouseMotionListener( (MouseMotionListener)this ) ); } } public void stop() { if (debug) System.out.println("EventMonitor: stop()"); if ( EventMonitorObject1 == null ) System.out.println("EventMonitor: start(): null EventMonitorObject1"); else { if ( instanceCheckbox1.getState() ) EventMonitorObject1.removeInstanceListener( (InstanceListener)this ); if ( keyCheckbox1.getState() ) EventMonitorObject1.removeKeyListener( (KeyListener)this ); if ( focusCheckbox1.getState() ) EventMonitorObject1.removeFocusListener( (FocusListener)this ); if ( mouseCheckbox1.getState() ) EventMonitorObject1.removeMouseListener( (MouseListener)this ); if ( mouseMotionCheckbox1.getState() ) EventMonitorObject1.removeMouseMotionListener( (MouseMotionListener)this ); } if ( EventMonitorObject2 == null ) System.out.println("EventMonitor: start(): null EventMonitorObject2"); else { if ( instanceCheckbox2.getState() ) EventMonitorObject2.removeInstanceListener( (InstanceListener)this ); if ( keyCheckbox2.getState() ) EventMonitorObject2.removeKeyListener( (KeyListener)this ); if ( focusCheckbox2.getState() ) EventMonitorObject2.removeFocusListener( (FocusListener)this ); if ( mouseCheckbox2.getState() ) EventMonitorObject2.removeMouseListener( (MouseListener)this ); if ( mouseMotionCheckbox2.getState() ) EventMonitorObject2.removeMouseMotionListener( (MouseMotionListener)this ); } } public boolean action(Event evt, Object arg) { if ( evt.target == defaultButton ) resetMonitor(); else // // Event Monitor 1 // // enable/disable techexplorer events if ( evt.target == disableFocusCheckbox1 ) { if ( disableFocusCheckbox1.getState() ) EventMonitorObject1.enableEvents( AWTEvent.FOCUS_EVENT_MASK ); else EventMonitorObject1.disableEvents( AWTEvent.FOCUS_EVENT_MASK ); return true; } if ( evt.target == disableKeyCheckbox1 ) { if ( disableKeyCheckbox1.getState() ) EventMonitorObject1.enableEvents( AWTEvent.KEY_EVENT_MASK ); else EventMonitorObject1.disableEvents( AWTEvent.KEY_EVENT_MASK ); return true; } if ( evt.target == disableMouseCheckbox1 ) { if ( disableMouseCheckbox1.getState() ) EventMonitorObject1.enableEvents( AWTEvent.MOUSE_EVENT_MASK ); else EventMonitorObject1.disableEvents( AWTEvent.MOUSE_EVENT_MASK ); return true; } if ( evt.target == disableMouseMotionCheckbox1 ) { if ( disableMouseMotionCheckbox1.getState() ) EventMonitorObject1.enableEvents( AWTEvent.MOUSE_MOTION_EVENT_MASK ); else EventMonitorObject1.disableEvents( AWTEvent.MOUSE_MOTION_EVENT_MASK ); return true; } // event listeners if ( evt.target == instanceCheckbox1 ) { if ( instanceCheckbox1.getState() ) EventMonitorObject1.addInstanceListener( (InstanceListener)this ); else EventMonitorObject1.removeInstanceListener( (InstanceListener)this ); return true; } else if ( evt.target == keyCheckbox1 ) { if ( keyCheckbox1.getState() ) EventMonitorObject1.addKeyListener( (KeyListener)this ); else EventMonitorObject1.removeKeyListener( (KeyListener)this ); return true; } else if ( evt.target == focusCheckbox1 ) { if ( focusCheckbox1.getState() ) EventMonitorObject1.addFocusListener( (FocusListener)this ); else EventMonitorObject1.removeFocusListener( (FocusListener)this ); return true; } else if ( evt.target == mouseCheckbox1 ) { if ( mouseCheckbox1.getState() ) EventMonitorObject1.addMouseListener( (MouseListener)this ); else EventMonitorObject1.removeMouseListener( (MouseListener)this ); return true; } else if ( evt.target == mouseMotionCheckbox1 ) { if ( mouseMotionCheckbox1.getState() ) EventMonitorObject1.addMouseMotionListener( (MouseMotionListener)this ); else EventMonitorObject1.removeMouseMotionListener( (MouseMotionListener)this ); return true; } else // // Event Monitor 2 // // enable/disable techexplorer events if ( evt.target == disableFocusCheckbox2 ) { if ( disableFocusCheckbox2.getState() ) EventMonitorObject2.enableEvents( AWTEvent.FOCUS_EVENT_MASK ); else EventMonitorObject2.disableEvents( AWTEvent.FOCUS_EVENT_MASK ); return true; } if ( evt.target == disableKeyCheckbox2 ) { if ( disableKeyCheckbox2.getState() ) EventMonitorObject2.enableEvents( AWTEvent.KEY_EVENT_MASK ); else EventMonitorObject2.disableEvents( AWTEvent.KEY_EVENT_MASK ); return true; } if ( evt.target == disableMouseCheckbox2 ) { if ( disableMouseCheckbox2.getState() ) EventMonitorObject2.enableEvents( AWTEvent.MOUSE_EVENT_MASK ); else EventMonitorObject2.disableEvents( AWTEvent.MOUSE_EVENT_MASK ); return true; } if ( evt.target == disableMouseMotionCheckbox2 ) { if ( disableMouseMotionCheckbox2.getState() ) EventMonitorObject2.enableEvents( AWTEvent.MOUSE_MOTION_EVENT_MASK ); else EventMonitorObject2.disableEvents( AWTEvent.MOUSE_MOTION_EVENT_MASK ); return true; } // event listeners if ( evt.target == instanceCheckbox2 ) { if ( instanceCheckbox2.getState() ) EventMonitorObject2.addInstanceListener( (InstanceListener)this ); else EventMonitorObject2.removeInstanceListener( (InstanceListener)this ); return true; } else if ( evt.target == keyCheckbox2 ) { if ( keyCheckbox2.getState() ) EventMonitorObject2.addKeyListener( (KeyListener)this ); else EventMonitorObject2.removeKeyListener( (KeyListener)this ); return true; } else if ( evt.target == focusCheckbox2 ) { if ( focusCheckbox2.getState() ) EventMonitorObject2.addFocusListener( (FocusListener)this ); else EventMonitorObject2.removeFocusListener( (FocusListener)this ); return true; } else if ( evt.target == mouseCheckbox2 ) { if ( mouseCheckbox2.getState() ) EventMonitorObject2.addMouseListener( (MouseListener)this ); else EventMonitorObject2.removeMouseListener( (MouseListener)this ); return true; } else if ( evt.target == mouseMotionCheckbox2 ) { if ( mouseMotionCheckbox2.getState() ) EventMonitorObject2.addMouseMotionListener( (MouseMotionListener)this ); else EventMonitorObject2.removeMouseMotionListener( (MouseMotionListener)this ); return true; } else return false; } // ====================================================================================== // // techexplorer listener methods // // ====================================================================================== public void instanceDelete( ibm.techexplorer.event.InstanceEvent e ) { updateTextArea( e.getDocumentName() + "instanceDelete\n" ); } public void keyPressed( ibm.techexplorer.awt.event.KeyEvent e ) { updateTextArea( keyInfo( e ) + " : " + e.getKeyCode() + "\n" ); } public void keyTyped( ibm.techexplorer.awt.event.KeyEvent e ) { updateTextArea( keyInfo( e ) + " : " + e.getKeyChar() + "\n"); } public void keyReleased( ibm.techexplorer.awt.event.KeyEvent e ) { updateTextArea( keyInfo( e ) + " : " + e.getKeyCode() + "\n"); } public void focusGained( FocusEvent e ) { updateTextArea( e.getDocumentName() + ":EventMonitor:FOCUS_GAINED\n"); } public void focusLost( FocusEvent e ){ updateTextArea( e.getDocumentName() + ":EventMonitor:FOCUS_LOST\n"); } public void mouseClicked( MouseEvent e ) { updateTextArea( mouseInfo(e) + "\n"); } public void mouseEntered( MouseEvent e ) { updateTextArea( mouseInfo(e) + "\n"); } public void mouseExited( MouseEvent e ) { updateTextArea( mouseInfo(e) + "\n"); } public void mousePressed( MouseEvent e ) { updateTextArea( mouseInfo(e) + "\n"); } public void mouseRelease( MouseEvent e ) { updateTextArea( mouseInfo(e) + "\n"); } public void mouseDragged( MouseEvent e ) { updateTextArea( mouseInfo(e) + "\n"); } public void mouseMoved( MouseEvent e ) { updateTextArea( mouseInfo(e) + "\n"); } // ====================================================================================== // // Utility // // ====================================================================================== public void updateTextArea( String sMessage ) { if ( numRows == 20 ) { numRows = 0; keyTextArea.setText( "" ); } keyTextArea.appendText( sMessage ); numRows++; } public String keyInfo( ibm.techexplorer.awt.event.KeyEvent e ) { int mods = e.getModifiers(); String s = e.getDocumentName() + ":EventMonitor:"; switch(e.getID()) { case KeyEvent.KEY_PRESSED: s +="KEY_PRESSED : key code : "; break; case KeyEvent.KEY_RELEASED: s +="KEY_RELEASED : key code : "; break; case KeyEvent.KEY_TYPED: s +="KEY_TYPED : character : "; break; } return s; } protected String mouseInfo( MouseEvent e ) { int mods = e.getModifiers(); String s = e.getDocumentName() + ":EventMonitor:"; switch(e.getID()) { case MouseEvent.MOUSE_CLICKED: s +="MOUSE_CLICKED:"; break; case MouseEvent.MOUSE_PRESSED: s +="MOUSE_PRESSED:"; break; case MouseEvent.MOUSE_RELEASED: s +="MOUSE_RELEASED:"; break; case MouseEvent.MOUSE_MOVED: s +="MOUSE_MOVED:"; break; case MouseEvent.MOUSE_ENTERED: s +="MOUSE_ENTERED:"; break; case MouseEvent.MOUSE_EXITED: s +="MOUSE_EXITED:"; break; case MouseEvent.MOUSE_DRAGGED: s +="MOUSE_DRAGGED:"; break; } if (e.isShiftDown()) s += "Shift "; if (e.isControlDown()) s += "Ctrl "; if ( (mods & MouseEvent.BUTTON1_MASK) != 0 ) s += "Button 1 "; if ( (mods & MouseEvent.BUTTON2_MASK) != 0 ) s += "Button 2 "; if ( (mods & MouseEvent.BUTTON3_MASK) != 0 ) s += "Button 3 "; s += ": [" +e.getX() + "," + e.getY() + "] " + "num clicks = " + e.getClickCount(); return s; } protected void resetMonitor( ){ keyTextArea.setText( "" ); if ( EventMonitorObject1 == null ) System.out.println("EventMonitor: start(): null EventMonitorObject1"); else { if ( !instanceCheckbox1.getState() ) { EventMonitorObject1.addInstanceListener( (InstanceListener)this ); instanceCheckbox1.setState( true ); } if ( !keyCheckbox1.getState() ) { EventMonitorObject1.addKeyListener( (KeyListener)this ); keyCheckbox1.setState( true ); } if ( !focusCheckbox1.getState() ) { EventMonitorObject1.addFocusListener( (FocusListener)this ); focusCheckbox1.setState( true ); } if ( !mouseCheckbox1.getState() ) { EventMonitorObject1.addMouseListener( (MouseListener)this ); mouseCheckbox1.setState( true ); } if ( !mouseMotionCheckbox1.getState() ) { EventMonitorObject1.addMouseMotionListener( (MouseMotionListener)this ); mouseMotionCheckbox1.setState( true ); } } if ( EventMonitorObject2 == null ) System.out.println("EventMonitor: start(): null EventMonitorObject2"); else { if ( !instanceCheckbox2.getState() ) { EventMonitorObject2.addInstanceListener( (InstanceListener)this ); instanceCheckbox2.setState( true ); } if ( !keyCheckbox2.getState() ) { EventMonitorObject2.addKeyListener( (KeyListener)this ); keyCheckbox2.setState( true ); } if ( !focusCheckbox2.getState() ) { EventMonitorObject2.addFocusListener( (FocusListener)this ); focusCheckbox2.setState( true ); } if ( !mouseCheckbox2.getState() ) { EventMonitorObject2.addMouseListener( (MouseListener)this ); mouseCheckbox2.setState( true ); } if ( !mouseMotionCheckbox2.getState() ) { EventMonitorObject2.addMouseMotionListener( (MouseMotionListener)this ); mouseMotionCheckbox2.setState( true ); } } disableFocusCheckbox1.setState( true ); disableKeyCheckbox1.setState( true ); disableMouseCheckbox1.setState( true ); disableMouseMotionCheckbox1.setState( true ); EventMonitorObject1.enableEvents( AWTEvent.FOCUS_EVENT_MASK |AWTEvent.KEY_EVENT_MASK | AWTEvent.MOUSE_EVENT_MASK | AWTEvent.MOUSE_MOTION_EVENT_MASK ); disableFocusCheckbox2.setState( true ); disableKeyCheckbox2.setState( true ); disableMouseCheckbox2.setState( true ); disableMouseMotionCheckbox2.setState( true ); EventMonitorObject2.enableEvents( AWTEvent.FOCUS_EVENT_MASK |AWTEvent.KEY_EVENT_MASK | AWTEvent.MOUSE_EVENT_MASK | AWTEvent.MOUSE_MOTION_EVENT_MASK ); } }