import java.applet.Applet;
import java.awt.event.*;
import com.sun.j3d.utils.applet.MainFrame;
import com.sun.j3d.utils.universe.*;
import javax.media.j3d.*;
import java.awt.*;
import javax.vecmath.*;
import java.util.Enumeration;

public class BugTest extends Applet {
    
    Behavior behavior;
    
    public BugTest() {
        setLayout( new BorderLayout() );
        BranchGroup sceneBG = new BranchGroup();
        
        Canvas3D c = new Canvas3D( SimpleUniverse.getPreferredConfiguration() );
        SimpleUniverse u = new SimpleUniverse( c );
        behavior = new Behavior(){
            WakeupCriterion wakeup = new WakeupOnAWTEvent( Event.MOUSE_DOWN );
            
            public void initialize(){
                setSchedulingBounds( new BoundingSphere( new Point3d(), Double.POSITIVE_INFINITY ) );
                wakeupOn( wakeup );
            }
            public void processStimulus( Enumeration criteria ){
                int count = 0;
                while( criteria.hasMoreElements() ){
                    WakeupOnAWTEvent awt = (WakeupOnAWTEvent)criteria.nextElement();
                    AWTEvent[] events = awt.getAWTEvent();
                    for( int i = 0; i < events.length; ++i ){
                        AWTEvent event = events[i];
                        ++count;
                    }
                }
                System.out.println( count );
                wakeupOn( wakeup );
            }
        };
        sceneBG.addChild( behavior );
        u.addBranchGraph( sceneBG );
        
        add( "Center", c );
        Button toggleButton = new Button( "Toggle" );
        toggleButton.addActionListener( new ActionListener(){
            public void actionPerformed( ActionEvent e ){
                behavior.setEnable( !behavior.getEnable() );
            }
        });
        add( "North", toggleButton );
    }
    public static void main(String[] args) {
        new MainFrame(new BugTest(), 1000, 700 );
    }
}
