Mouse Wheel

Hello Visaders,

Those with mouse wheel and Java 1.4 or higher may find this piece of code useful, it implements the zoom. Its very simple and better than using the "shift + left button".

But the behavior is a little diferent from the "shift + left button" zoom, the center is the center of the box, not the center of the screen as the user might expect. I think this problem has already been solved in the list but I couldnt find it in the archive. Any other sugestions on funcionality and performance would also be apreciated:

//display is an instance of DisplayImpl that in this case must be declared final,
//but you can workaround this by calling a method outside the listener
display.getComponent().addMouseWheelListener(new java.awt.event.MouseWheelListener() {
   public void mouseWheelMoved(java.awt.event.MouseWheelEvent e) {
       int rot =  e.getWheelRotation();
       try{
       ProjectionControl pControl = display.getProjectionControl();
       double[] pControlMatrix = pControl.getMatrix();
       // 3D
       if (pControlMatrix.length > 10){
           // Zoom in
           if (rot < 0){
               pControlMatrix[0] = pControlMatrix[0]*1.1f;
               pControlMatrix[5] = pControlMatrix[5]*1.1f;
               pControlMatrix[10] = pControlMatrix[10]*1.1f;
           }
           // Zoom out
           if (rot > 0){
               pControlMatrix[0] = pControlMatrix[0]*0.9f;
               pControlMatrix[5] = pControlMatrix[5]*0.9f;
pControlMatrix[10] = pControlMatrix[10]*0.9f; } // 2D } else {
           // Zoom in
           if (rot < 0){
               pControlMatrix[0] = pControlMatrix[0]*1.1f;
               pControlMatrix[3] = pControlMatrix[3]*1.1f;
           }
           // Zoom out
           if (rot > 0){
               pControlMatrix[0] = pControlMatrix[0]*0.9f;
               pControlMatrix[3] = pControlMatrix[3]*0.9f;
           }
       }
       pControl.setMatrix(pControlMatrix);
       pControl.saveProjection();
       } catch (RemoteException re) {}
       catch (VisADException ve) {}
   }
});

Cicero Zandona


  • 2003 messages navigation, sorted by:
    1. Thread
    2. Subject
    3. Author
    4. Date
    5. ↑ Table Of Contents
  • Search the visad archives: