Author: kono
Date: 2012-01-18 12:18:42 -0800 (Wed, 18 Jan 2012)
New Revision: 28041

Modified:
   
cytoscape/trunk/application/src/main/java/cytoscape/view/CytoscapeDesktop.java
   cytoscape/trunk/corelibs/ding/src/main/java/ding/view/InnerCanvas.java
Log:
Pan key combination had been added.  For Mac, Command+Click is for Panning.  
Also, CTRL+arrow keys are assigned for Pan.

Modified: 
cytoscape/trunk/application/src/main/java/cytoscape/view/CytoscapeDesktop.java
===================================================================
--- 
cytoscape/trunk/application/src/main/java/cytoscape/view/CytoscapeDesktop.java  
    2012-01-18 19:43:41 UTC (rev 28040)
+++ 
cytoscape/trunk/application/src/main/java/cytoscape/view/CytoscapeDesktop.java  
    2012-01-18 20:18:42 UTC (rev 28041)
@@ -84,6 +84,8 @@
        
        private static final long serialVersionUID = 2986320083629749014L;
        
+       private static final String MAC_OS_ID = "mac";
+       
        protected long lastPluginRegistryUpdate;
        protected int returnVal;
 
@@ -382,9 +384,18 @@
                statusBar.setBorder(new EmptyBorder(0, 7, 0, 7));
                statusBar.setForeground(new Color(40, 40, 40));
                panel.add(statusBar, BorderLayout.SOUTH);
-               setStatusBarMsg("Welcome to Cytoscape " + 
CytoscapeVersion.version
+               if(isMacOS())
+                       setStatusBarMsg("Welcome to Cytoscape " + 
CytoscapeVersion.version
+                               + "              Right-click + drag or 
Control-Click + drag to ZOOM             Command-Click + drag to PAN");
+               else
+                       setStatusBarMsg("Welcome to Cytoscape " + 
CytoscapeVersion.version
                                + "              Right-click + drag to ZOOM     
        Middle-click + drag to PAN");
        }
+       
+       private boolean isMacOS() {
+               String os = System.getProperty("os.name");
+               return os.regionMatches(true, 0, MAC_OS_ID, 0, 
MAC_OS_ID.length());
+       }
 
        /**
         * Sets the Status Bar Message.

Modified: cytoscape/trunk/corelibs/ding/src/main/java/ding/view/InnerCanvas.java
===================================================================
--- cytoscape/trunk/corelibs/ding/src/main/java/ding/view/InnerCanvas.java      
2012-01-18 19:43:41 UTC (rev 28040)
+++ cytoscape/trunk/corelibs/ding/src/main/java/ding/view/InnerCanvas.java      
2012-01-18 20:18:42 UTC (rev 28041)
@@ -332,13 +332,11 @@
        public void mouseExited(MouseEvent e) {
        }
 
-       /**
-        * DOCUMENT ME!
-        *
-        * @param e DOCUMENT ME!
-        */
+       @Override
        public void mousePressed(MouseEvent e) {
-               if ((e.getButton() == MouseEvent.BUTTON1) && !(isMacPlatform() 
&& e.isControlDown())) { // on mac, mouse button1 click and control is simulate 
button 3 press
+               
+               e.getModifiersEx();
+               if ((e.getButton() == MouseEvent.BUTTON1) && !(isMacPlatform() 
&& e.isControlDown()) && !(isMacPlatform() && e.isMetaDown())) { // on mac, 
mouse button1 click and control is simulate button 3 press
                                                                                
                            // It's too complicated to correctly handle both 
control and shift
                                                                                
                            // simultaneously.
 
@@ -563,13 +561,14 @@
                        // Repaint after listener events are fired because 
listeners may change
                        // something in the graph view.
                        repaint();
-               } else if (e.getButton() == MouseEvent.BUTTON2) {
+               } else if (e.getButton() == MouseEvent.BUTTON2 || 
(isMacPlatform() && e.isMetaDown() && e.getButton() == MouseEvent.BUTTON1)) {
+                       // PAN
                        //******** Save all node positions
                        m_undoable_edit = new 
ViewChangeEdit(m_view,ViewChangeEdit.SavedObjs.NODES,"Move");
                        m_currMouseButton = 2;
                        m_lastXMousePos = e.getX();
                        m_lastYMousePos = e.getY();
-               } else if ((e.getButton() == MouseEvent.BUTTON3) || 
(isMacPlatform() && e.isControlDown())) {
+               } else if ((e.getButton() == MouseEvent.BUTTON3) || 
(isMacPlatform() && e.isControlDown() && e.getButton() == MouseEvent.BUTTON1)) {
                        //******** Save all node positions
                        m_undoable_edit = new 
ViewChangeEdit(m_view,ViewChangeEdit.SavedObjs.NODES,"Move");
                        m_currMouseButton = 3;
@@ -584,11 +583,7 @@
                requestFocusInWindow();
        }
 
-       /**
-        * DOCUMENT ME!
-        *
-        * @param e DOCUMENT ME!
-        */
+       @Override
        public void mouseReleased(MouseEvent e) {
                if (e.getButton() == MouseEvent.BUTTON1) {
                        if (m_currMouseButton == 1) {
@@ -747,21 +742,19 @@
                }
        }
 
-       /**
-        * DOCUMENT ME!
-        *
-        * @param e DOCUMENT ME!
-        */
+
+       @Override
        public void mouseDragged(MouseEvent e) {
                if (m_currMouseButton == 1) {
                        if (m_button1NodeDrag) {
-                               if (this.isNodeMovementDisabled()) {
+                               // Ignore if disabled.
+                               if (this.isNodeMovementDisabled())
                                        return;
-                               }
-                               //*****SAVE SELECTED NODE & EDGE POSITIONS******
-                               if (m_undoable_edit == null) {
+                               
+                               // SAVE SELECTED NODE & EDGE POSITIONS
+                               if (m_undoable_edit == null)
                                        m_undoable_edit = new 
ViewChangeEdit(m_view, ViewChangeEdit.SavedObjs.SELECTED, "Move");
-                               }
+
                                synchronized (m_lock) {
                                        m_ptBuff[0] = m_lastXMousePos;
                                        m_ptBuff[1] = m_lastYMousePos;
@@ -837,38 +830,47 @@
 
                        repaint();
                } else if (m_currMouseButton == 2) {
-                       double deltaX = e.getX() - m_lastXMousePos;
-                       double deltaY = e.getY() - m_lastYMousePos;
+                       // Middle-Click: Pan
+                       pan(e);
+               } else if (m_currMouseButton == 3) {
+                       // Right-click: Zoom
+                       zoom(e);
+               }
+       }
+       
+       private void pan(final MouseEvent e) {
+               double deltaX = e.getX() - m_lastXMousePos;
+               double deltaY = e.getY() - m_lastYMousePos;
+               m_lastXMousePos = e.getX();
+               m_lastYMousePos = e.getY();
+               pan(deltaX, deltaY);
+       }
+       
+       private void pan(double deltaX, double deltaY) {
+               synchronized (m_lock) {
+                       m_xCenter -= (deltaX / m_scaleFactor);
+                       m_yCenter -= (deltaY / m_scaleFactor);
+               }
+               m_view.m_viewportChanged = true;
+               repaint();
+       }
+       
+       private void zoom(final MouseEvent e) {
+               double deltaY = e.getY() - m_lastYMousePos;
+
+               synchronized (m_lock) {
                        m_lastXMousePos = e.getX();
                        m_lastYMousePos = e.getY();
+                       m_scaleFactor *= Math.pow(2, -deltaY / 300.0d);
+               }
 
-                       synchronized (m_lock) {
-                               m_xCenter -= (deltaX / m_scaleFactor);
-                               m_yCenter -= (deltaY / m_scaleFactor);
-                       }
-
-                       m_view.m_viewportChanged = true;
-                       repaint();
-               } else if (m_currMouseButton == 3) {
-                       double deltaY = e.getY() - m_lastYMousePos;
-
-                       synchronized (m_lock) {
-                               m_lastXMousePos = e.getX();
-                               m_lastYMousePos = e.getY();
-                               m_scaleFactor *= Math.pow(2, -deltaY / 300.0d);
-                       }
-
-                       m_view.m_viewportChanged = true;
-                       repaint();
-               }
+               m_view.m_viewportChanged = true;
+               repaint();
        }
 
-       // AJK: 05/02/06 BEGIN
-       /**
-        *  DOCUMENT ME!
-        *
-        * @param e DOCUMENT ME!
-        */
+       
+       
+       @Override
        public void mouseMoved(MouseEvent e) {
                NodeView nv = m_view.getPickedNodeView(e.getPoint());
                boolean toolTipSet = false;
@@ -907,11 +909,25 @@
 
                        if (k.isShiftDown())
                                move = 10.0;
-
+                       
+                       final int[] selectedNodes = 
m_view.getSelectedNodeIndices();
+                       
+                       if(k.isControlDown()) {
+                               // Pan
+                               if (code == KeyEvent.VK_UP) {
+                                       pan(0, move);
+                               } else if (code == KeyEvent.VK_DOWN) {
+                                       pan(0, -move);
+                               } else if (code == KeyEvent.VK_LEFT) {
+                                       pan(-move, 0);
+                               } else if (code == KeyEvent.VK_RIGHT) {
+                                       pan(move, 0);
+                               }
+                               return;
+                       }
+                       
                        if (m_view.m_nodeSelection) {
                                // move nodes
-                               int[] selectedNodes = 
m_view.getSelectedNodeIndices();
-
                                for (int i = 0; i < selectedNodes.length; i++) {
                                        DNodeView nv = ((DNodeView) 
m_view.getNodeView(selectedNodes[i]));
                                        double xPos = nv.getXPosition();

-- 
You received this message because you are subscribed to the Google Groups 
"cytoscape-cvs" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/cytoscape-cvs?hl=en.

Reply via email to