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.