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