import java.awt.*;
import java.awt.event.*;

import javax.swing.*;

import javax.media.j3d.*;
import javax.vecmath.*;

import com.sun.j3d.utils.geometry.*;
import com.sun.j3d.utils.universe.*;



public class MouseWheelTest extends JWindow implements MouseWheelListener
{
        private Canvas3D                                canvas                  = new Canvas3D(SimpleUniverse.getPreferredConfiguration());
        private SimpleUniverse                  universe                = new SimpleUniverse(canvas);


        private Alpha                                   rotationAlpha   = new Alpha(-1, 4000);
        private TransformGroup                  rotationTrans   = new TransformGroup();
        private RotationInterpolator    rotationInterp  = new RotationInterpolator(rotationAlpha, rotationTrans);



        public MouseWheelTest()
        {
                super();
                setSize(new Dimension(512, 512));
                getContentPane().add(canvas);
                canvas.addMouseWheelListener(this);

                rotationTrans.setCapability(TransformGroup.ALLOW_TRANSFORM_WRITE);
                rotationInterp.setSchedulingBounds(new BoundingSphere(new Point3d(), Double.POSITIVE_INFINITY));

                BranchGroup root = new BranchGroup();
                root.addChild(rotationTrans);
                root.addChild(rotationInterp);

                ColorCube cube = new ColorCube(0.5f);
                rotationTrans.addChild(cube);

                universe.addBranchGraph(root);
                universe.getViewingPlatform().setNominalViewingTransform();

                setVisible(true);

        } // MouseWheelTest


        public void mouseWheelMoved(MouseWheelEvent mwe)
        {
                rotationAlpha.pause();
                rotationAlpha.setIncreasingAlphaDuration(rotationAlpha.getIncreasingAlphaDuration()
                                                                                                + 100*mwe.getWheelRotation());
                rotationAlpha.resume();

        } // mouseWheelMoved



        public static void main(String [] args)
        {
                try
                {
                        new MouseWheelTest();
                }
                catch (Exception e) { System.err.println(e.getMessage()); System.exit(-1); }

        } // main

} // MouseWheelTest