Author: clopes
Date: 2012-02-02 12:15:01 -0800 (Thu, 02 Feb 2012)
New Revision: 28182
Modified:
core3/impl/trunk/application-impl/src/main/java/org/cytoscape/application/internal/CyApplicationManagerImpl.java
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkPanel.java
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkViewManager.java
Log:
Fixes #626 : Network Browser is not Bringing Networks to the Front of the
Display
Modified:
core3/impl/trunk/application-impl/src/main/java/org/cytoscape/application/internal/CyApplicationManagerImpl.java
===================================================================
---
core3/impl/trunk/application-impl/src/main/java/org/cytoscape/application/internal/CyApplicationManagerImpl.java
2012-02-02 00:35:22 UTC (rev 28181)
+++
core3/impl/trunk/application-impl/src/main/java/org/cytoscape/application/internal/CyApplicationManagerImpl.java
2012-02-02 20:15:01 UTC (rev 28182)
@@ -178,11 +178,15 @@
public void setCurrentNetwork(final CyNetwork network) {
final long networkId = network.getSUID();
+ boolean changed = false;
+
synchronized (this) {
if (!networkManager.networkExists(networkId))
throw new IllegalArgumentException("Network is
not registered in this ApplicationManager: ID = "
+ networkId);
+ changed = !network.equals(currentNetwork);
+
logger.info("Set current network called. Current
network ID = " + networkId);
currentNetwork = network;
currentNetworkView =
networkViewManager.getNetworkView(network);
@@ -194,7 +198,10 @@
logger.debug("Current network is set. Firing
SetCurrentNetworkEvent: Network ID = "
+ networkId);
- cyEventHelper.fireEvent(new SetCurrentNetworkEvent(this,
currentNetwork));
+
+ if (changed) {
+ cyEventHelper.fireEvent(new
SetCurrentNetworkEvent(this, currentNetwork));
+ }
}
public synchronized CyNetworkView getCurrentNetworkView() {
@@ -207,12 +214,17 @@
return;
}
+ boolean changed = false;
+
synchronized (this) {
if
(!networkManager.networkExists(view.getModel().getSUID()))
throw new IllegalArgumentException("network is
not recognized by this ApplicationManager");
logger.debug("Set current network view called: View ID
= " + view.getSUID());
+ changed = !view.equals(currentNetworkView);
+
+ currentNetworkView = view;
setCurrentNetwork(view.getModel());
// reset selected network views
@@ -222,7 +234,10 @@
logger.debug("Current network view is set. Firing
SetCurrentNetworkViewEvent: View ID = "
+ view.getSUID());
- cyEventHelper.fireEvent(new SetCurrentNetworkViewEvent(this,
currentNetworkView));
+
+ if (changed) {
+ cyEventHelper.fireEvent(new
SetCurrentNetworkViewEvent(this, currentNetworkView));
+ }
}
public synchronized List<CyNetworkView> getSelectedNetworkViews() {
Modified:
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkPanel.java
===================================================================
---
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkPanel.java
2012-02-02 00:35:22 UTC (rev 28181)
+++
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkPanel.java
2012-02-02 20:15:01 UTC (rev 28182)
@@ -55,7 +55,6 @@
import javax.swing.ToolTipManager;
import javax.swing.event.TreeSelectionEvent;
import javax.swing.event.TreeSelectionListener;
-import javax.swing.tree.DefaultMutableTreeNode;
import javax.swing.tree.TreeNode;
import javax.swing.tree.TreePath;
@@ -409,36 +408,50 @@
@Override
public void handleEvent(final SetCurrentNetworkViewEvent e) {
- SwingUtilities.invokeLater( new Runnable() {
- public void run() {
- final CyNetworkView view = e.getNetworkView();
-
- if (view == null) {
- logger.warn("Current network view is
set to null.");
- return;
+ final CyNetworkView view = e.getNetworkView();
+
+ if (view == null) {
+ logger.debug("Current network view is set to null.");
+ return;
+ }
+
+ final NetworkTreeNode node = (NetworkTreeNode)
treeTable.getTree().getLastSelectedPathComponent();
+ final CyNetwork selectedNet = node != null ? node.getNetwork()
: null;
+
+ if (!view.getModel().equals(selectedNet)) {
+ SwingUtilities.invokeLater( new Runnable() {
+ public void run() {
+ logger.debug("Got
SetCurrentNetworkViewEvent. View ID = " + e.getNetworkView().getSUID());
+ final long curr =
e.getNetworkView().getModel().getSUID();
+ focusNetworkNode(curr);
}
- logger.debug("Got SetCurrentNetworkViewEvent.
View ID = " + e.getNetworkView().getSUID());
- final long curr =
e.getNetworkView().getModel().getSUID();
- focusNetworkNode(curr);
- }
- });
+ });
+ }
}
@Override
public void handleEvent(final SetCurrentNetworkEvent e) {
- SwingUtilities.invokeLater( new Runnable() {
- public void run() {
- final CyNetwork cnet = e.getNetwork();
- if (cnet == null) {
- logger.warn("Got null for current
network.");
- return;
+ final CyNetwork cnet = e.getNetwork();
+
+ if (cnet == null) {
+ logger.debug("Got null for current network.");
+ return;
+ }
+
+ final NetworkTreeNode node = (NetworkTreeNode)
treeTable.getTree().getLastSelectedPathComponent();
+ final CyNetwork selectedNet = node != null ? node.getNetwork()
: null;
+
+ if (!cnet.equals(selectedNet)) {
+ SwingUtilities.invokeLater( new Runnable() {
+ public void run() {
+ logger.debug("Set current network " +
cnet.getSUID());
+ focusNetworkNode(cnet.getSUID());
}
- logger.debug("Set current network " +
cnet.getSUID());
- focusNetworkNode(cnet.getSUID());
- }
- });
+ });
+ }
}
+ @Override
public void handleEvent(final NetworkViewAboutToBeDestroyedEvent nde) {
SwingUtilities.invokeLater( new Runnable() {
public void run() {
@@ -449,6 +462,7 @@
});
}
+ @Override
public void handleEvent(final NetworkViewAddedEvent nde) {
SwingUtilities.invokeLater( new Runnable() {
public void run() {
@@ -515,12 +529,17 @@
}
public void focusNetworkNode(final Long networkID) {
- final DefaultMutableTreeNode node = getNetworkNode(networkID);
-
+ final NetworkTreeNode node = getNetworkNode(networkID);
+
if (node != null) {
- // fires valueChanged if the network isn't already
selected
-
treeTable.getTree().getSelectionModel().setSelectionPath(new
TreePath(node.getPath()));
- treeTable.getTree().scrollPathToVisible(new
TreePath(node.getPath()));
+ final CyNetwork net = node.getNetwork();
+ final NetworkTreeNode selectedNode = (NetworkTreeNode)
treeTable.getTree().getLastSelectedPathComponent();
+
+ if (selectedNode == null ||
!net.equals(selectedNode.getNetwork())) {
+ // fires valueChanged only if the network isn't
already selected
+
treeTable.getTree().getSelectionModel().setSelectionPath(new
TreePath(node.getPath()));
+ treeTable.getTree().scrollPathToVisible(new
TreePath(node.getPath()));
+ }
}
}
@@ -543,9 +562,6 @@
/**
* This method highlights a network in the NetworkPanel.
- *
- * @param e
- * DOCUMENT ME!
*/
@Override
public void valueChanged(TreeSelectionEvent e) {
@@ -560,11 +576,17 @@
return;
}
+ final CyNetwork net = node.getNetwork();
+
// This is a "network set" node.
- if (node.getNetwork() == null)
+ if (net == null)
return;
- appManager.setCurrentNetwork(node.getNetwork());
+ // No need to set the same network again. It should prevent
infinite loops.
+ // Also check if the network still exists (it could have been
removed by another thread).
+ if (netmgr.networkExists(net.getSUID()) &&
!net.equals(appManager.getCurrentNetwork())) {
+ appManager.setCurrentNetwork(net);
+ }
// creates a list of all selected networks
List<CyNetwork> networkList = new LinkedList<CyNetwork>();
Modified:
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkViewManager.java
===================================================================
---
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkViewManager.java
2012-02-02 00:35:22 UTC (rev 28181)
+++
core3/impl/trunk/swing-application-impl/src/main/java/org/cytoscape/internal/view/NetworkViewManager.java
2012-02-02 20:15:01 UTC (rev 28182)
@@ -245,6 +245,12 @@
logger.info("Attempting to set current network : null
network ");
return;
}
+
+ CyNetworkView view =
networkViewManager.getNetworkView(e.getNetwork());
+
+ if (view != null) {
+ setFocus(view);
+ }
}
@Override
@@ -461,7 +467,7 @@
private void setFocus(CyNetworkView targetViewModel) {
if (targetViewModel == null) {
- logger.warn("Set Focus method got a null vew.");
+ logger.warn("Set Focus method got a null view.");
return;
}
--
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.