import java.awt.AWTEvent;import java.awt.event.*;import java.util.Enumeration;import javax.media.j3d.*;import javax.swing.JRadioButton;import javax.vecmath.*;import com.sun.j3d.utils.universe.*;public class HMDTrackerToIPBehavior extends Behavior {  private WakeupCondition keyCriterion;  Screen3D screen;  JRadioButton rb;    public HMDTrackerToIPBehavior(Screen3D screen, JRadioButton rb) {    this.screen = screen;    this.rb = rb;    System.out.println("HMDTrackerToIPBehavior constructor");  }  public void initialize() {        WakeupCriterion[] keyEvents = new WakeupCriterion[2];    keyEvents[0] = new WakeupOnAWTEvent( KeyEvent.KEY_PRESSED );    keyEvents[1] = new WakeupOnAWTEvent( KeyEvent.KEY_RELEASED );    keyCriterion = new WakeupOr( keyEvents );    wakeupOn( keyCriterion );    System.out.println("initialize complete");  }  public void processStimulus( Enumeration criteria )  {     WakeupCriterion wakeup;    AWTEvent[] event;    while( criteria.hasMoreElements() ) {      wakeup = (WakeupCriterion) criteria.nextElement();      if( !(wakeup instanceof WakeupOnAWTEvent) )        continue;      event = ((WakeupOnAWTEvent)wakeup).getAWTEvent();      for( int i = 0; i < event.length; i++ )      {        if( event[i].getID() == KeyEvent.KEY_PRESSED & rb.isSelected()==true)        {          processKeyEvent((KeyEvent)event[i]);        }      }    }    wakeupOn( keyCriterion );  }  protected void processKeyEvent(KeyEvent event) {    int keycode = event.getKeyCode();    Transform3D tscreen = new Transform3D();     screen.getHeadTrackerToLeftImagePlate(tscreen);        Transform3D tchange = new Transform3D();    tchange.setIdentity();        if(keycode == KeyEvent.VK_X) {       System.out.println("Rotating Imageplate around X");       tchange.rotX(Math.PI/36);       }     else if(keycode == KeyEvent.VK_Y) {       System.out.println("Rotating Imageplate around Y");       tchange.rotY(Math.PI/36);          }      else if(keycode == KeyEvent.VK_Z) {       System.out.println("Rotating Imageplate around Z");       tchange.rotZ(Math.PI/36);       }     tscreen.mul(tchange);    screen.setHeadTrackerToLeftImagePlate(tscreen);     }  //moves forward backward or rotates left right}