import java.awt.AWTEvent;
import java.awt.event.*;
import javax.media.j3d.*;
import java.util.*;
import javax.vecmath.*;

public class Set6DOFBehavior extends Behavior {
   Virtual6DOF v6dof;
   private WakeupCondition keyCriterion;

   public Set6DOFBehavior(Virtual6DOF v6dof) {
     this.v6dof = v6dof;  
    }

    public void initialize() {
        //wakeupOn( conditions );
       System.out.println("Set6DOFBehavior 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 );  
    }

    public void processStimulus( Enumeration criteria ) {
      // System.out.println("processStimulus"); 
       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++ ) {
          processKeyEvent((KeyEvent)event[i]);
      }
  
    }
    wakeupOn( keyCriterion );
 
  }
     
 protected void processKeyEvent(KeyEvent event) {
   
     int keycode = event.getKeyCode();   
   
  // System.out.println("what: " + (.getID());
          if (keycode == KeyEvent.VK_X) {
            v6dof.setRotationX();
          }
          else if (keycode == KeyEvent.VK_Y) {
            v6dof.setRotationY();
          }
          else if (keycode == KeyEvent.VK_Z) {
            v6dof.setRotationZ();
          }
    }
}
