Author: pwang
Date: 2009-11-24 16:58:25 -0800 (Tue, 24 Nov 2009)
New Revision: 18576

Modified:
   cytoscape/trunk/src/cytoscape/actions/SelectConnectedNodesAction.java
Log:
Fixed Bug:0001941: SelectConnectedNodesAction horribly inefficient when lots of 
edges are selected

Modified: cytoscape/trunk/src/cytoscape/actions/SelectConnectedNodesAction.java
===================================================================
--- cytoscape/trunk/src/cytoscape/actions/SelectConnectedNodesAction.java       
2009-11-25 00:03:59 UTC (rev 18575)
+++ cytoscape/trunk/src/cytoscape/actions/SelectConnectedNodesAction.java       
2009-11-25 00:58:25 UTC (rev 18576)
@@ -40,23 +40,17 @@
 
 import cytoscape.CyNetwork;
 import cytoscape.Cytoscape;
-
 import cytoscape.util.CytoscapeAction;
-
-//-------------------------------------------------------------------------
 import giny.model.Node;
 import giny.model.Edge;
-
 import java.awt.event.ActionEvent;
 import java.awt.event.KeyEvent;
-
 import java.util.ArrayList;
-import java.util.Iterator;
 import java.util.List;
-
-import javax.swing.KeyStroke;
-
 import javax.swing.event.MenuEvent;
+import java.util.Set;
+import java.util.HashSet;
+import cytoscape.CyEdge;
 
 //-------------------------------------------------------------------------
 /**
@@ -79,14 +73,17 @@
         */
        public void actionPerformed(ActionEvent e) {
                final CyNetwork currentNetwork = Cytoscape.getCurrentNetwork();
-               final List<Edge> selectedEdges = new 
ArrayList<Edge>(currentNetwork.getSelectedEdges());
+               Set<CyEdge> edgeSet = currentNetwork.getSelectedEdges();
+               final List<Edge> selectedEdges = new ArrayList<Edge>(edgeSet);
 
+               final Set<Node>nodesToSelect = new HashSet<Node>();
                for (Edge edge: selectedEdges) {
-                       currentNetwork.setSelectedNodeState(edge.getSource(), 
true);
-                       currentNetwork.setSelectedNodeState(edge.getTarget(), 
true);
+                       nodesToSelect.add(edge.getSource());
+                       nodesToSelect.add(edge.getTarget());
                }
-
+               currentNetwork.setSelectedNodeState(nodesToSelect, true);
                Cytoscape.getCurrentNetworkView().updateView();
+
        } // actionPerformed
 
     public void menuSelected(MenuEvent e) {

--

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