Author: ruschein
Date: 2011-07-28 12:35:43 -0700 (Thu, 28 Jul 2011)
New Revision: 26304

Modified:
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/subnetworkbuilder/CreateSubnetworkFromSearchTask.java
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/subnetworkbuilder/SubnetworkBuilderUtil.java
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/select/SelectFirstNeighborsTask.java
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/select/SelectFirstNeighborsTaskFactory.java
   
core3/core-task-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
   
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/select/AllFactoryTest.java
   
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/select/SelectFirstNeighborsTaskTest.java
Log:
Added undo/redo support for selection of nodes that are neighbours of selected 
nodes.

Modified: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/subnetworkbuilder/CreateSubnetworkFromSearchTask.java
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/subnetworkbuilder/CreateSubnetworkFromSearchTask.java
       2011-07-28 18:01:37 UTC (rev 26303)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/subnetworkbuilder/CreateSubnetworkFromSearchTask.java
       2011-07-28 19:35:43 UTC (rev 26304)
@@ -1,5 +1,6 @@
 package org.cytoscape.task.internal.quickstart.subnetworkbuilder;
 
+
 import java.util.ArrayList;
 import java.util.List;
 
@@ -14,8 +15,8 @@
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
-public class CreateSubnetworkFromSearchTask extends AbstractTask {
 
+public class CreateSubnetworkFromSearchTask extends AbstractTask {
        private static final Logger logger = 
LoggerFactory.getLogger(CreateSubnetworkFromSearchTask.class);
 
        static final String QUERY_GENE_ATTR_NAME = "Gene Type";
@@ -37,7 +38,6 @@
                selectGenes(new ArrayList<String>());
 
                taskMonitor.setProgress(1.0);
-
        }
 
        protected void selectGenes(final List<String> geneList) {
@@ -50,27 +50,25 @@
                        nodeTable.createColumn(SEARCH_GENE_ATTR_NAME, 
String.class, false);
 
                boolean found = false;
-               
+               List<CyNode> nodeList = target.getNodeList();
+               for (final CyNode node : nodeList) {
+                       final String nodeName = 
node.getCyRow().get(CyTableEntry.NAME, String.class);
 
-                       List<CyNode> nodeList = target.getNodeList();
-                       for (final CyNode node : nodeList) {
-                               final String nodeName = 
node.getCyRow().get(CyTableEntry.NAME, String.class);
-
-                               if (geneList.contains(nodeName) && 
state.getDiseaseGenes().contains(nodeName)) {
-                                       node.getCyRow().set(CyNetwork.SELECTED, 
true);
-                                       
node.getCyRow().set(QUERY_GENE_ATTR_NAME, "query and disease");
-                                       
node.getCyRow().set(SEARCH_GENE_ATTR_NAME, state.getSearchTerms());
-                                       found = true;
-                               } else if (geneList.contains(nodeName)) {
-                                       node.getCyRow().set(CyNetwork.SELECTED, 
true);
-                                       
node.getCyRow().set(QUERY_GENE_ATTR_NAME, "query");
-                                       found = true;
-                               } else if 
(state.getDiseaseGenes().contains(nodeName)) {
-                                       node.getCyRow().set(CyNetwork.SELECTED, 
true);
-                                       
node.getCyRow().set(QUERY_GENE_ATTR_NAME, "disease");
-                                       
node.getCyRow().set(SEARCH_GENE_ATTR_NAME, state.getSearchTerms());
-                               }
+                       if (geneList.contains(nodeName) && 
state.getDiseaseGenes().contains(nodeName)) {
+                               node.getCyRow().set(CyNetwork.SELECTED, true);
+                               node.getCyRow().set(QUERY_GENE_ATTR_NAME, 
"query and disease");
+                               node.getCyRow().set(SEARCH_GENE_ATTR_NAME, 
state.getSearchTerms());
+                               found = true;
+                       } else if (geneList.contains(nodeName)) {
+                               node.getCyRow().set(CyNetwork.SELECTED, true);
+                               node.getCyRow().set(QUERY_GENE_ATTR_NAME, 
"query");
+                               found = true;
+                       } else if (state.getDiseaseGenes().contains(nodeName)) {
+                               node.getCyRow().set(CyNetwork.SELECTED, true);
+                               node.getCyRow().set(QUERY_GENE_ATTR_NAME, 
"disease");
+                               node.getCyRow().set(SEARCH_GENE_ATTR_NAME, 
state.getSearchTerms());
                        }
+               }
 
                if (!found) {
                        logger.error("Query genes were not found in the 
interactome.");
@@ -84,8 +82,9 @@
                Task createNetworkTask = 
util.getNewNetworkSelectedNodesOnlyTask(target);
                this.insertTasksAfterCurrentTask(createNetworkTask);
 
-               SelectFirstNeighborsTask nextTask = new 
SelectFirstNeighborsTask(target, util.networkViewManager,
-                               util.eventHelper);
+               SelectFirstNeighborsTask nextTask =
+                       new SelectFirstNeighborsTask(util.getUndoSupport(), 
target, util.networkViewManager,
+                                                    util.eventHelper);
                this.insertTasksAfterCurrentTask(nextTask);
        }
 }

Modified: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/subnetworkbuilder/SubnetworkBuilderUtil.java
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/subnetworkbuilder/SubnetworkBuilderUtil.java
        2011-07-28 18:01:37 UTC (rev 26303)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/subnetworkbuilder/SubnetworkBuilderUtil.java
        2011-07-28 19:35:43 UTC (rev 26304)
@@ -1,5 +1,6 @@
 package org.cytoscape.task.internal.quickstart.subnetworkbuilder;
 
+
 import java.util.HashSet;
 import java.util.Map;
 import java.util.Properties;
@@ -24,9 +25,10 @@
 import org.cytoscape.view.vizmap.VisualMappingManager;
 import org.cytoscape.view.vizmap.VisualStyleFactory;
 import org.cytoscape.work.Task;
+import org.cytoscape.work.undo.UndoSupport;
 
+
 public class SubnetworkBuilderUtil {
-
        private CyNetworkReaderManager mgr;
        private CyNetworkManager netmgr;
        protected final CyNetworkViewManager networkViewManager;
@@ -52,12 +54,15 @@
        private VisualMappingFunctionFactory ptFactory;
        private final CyLayoutAlgorithmManager layouts;
 
+       private final UndoSupport undoSupport;
+
        public SubnetworkBuilderUtil(CyNetworkReaderManager mgr, 
CyNetworkManager netmgr,
                        final CyNetworkViewManager networkViewManager, 
CyProperty<Properties> cyProps,
                        CyNetworkNaming cyNetworkNaming, StreamUtil streamUtil, 
final CyEventHelper eventHelper,
                        final CyApplicationManager appManager, 
CyRootNetworkFactory crnf, CyNetworkViewFactory cnvf,
-                       VisualMappingManager vmm, final VisualStyleFactory 
vsFactory, final CyLayoutAlgorithmManager layouts) {
-
+                       final VisualMappingManager vmm, final 
VisualStyleFactory vsFactory,
+                       final CyLayoutAlgorithmManager layouts, final 
UndoSupport undoSupport)
+       {
                this.mgr = mgr;
                this.netmgr = netmgr;
                this.networkViewManager = networkViewManager;
@@ -72,6 +77,7 @@
                this.appManager = appManager;
                this.vsFactory = vsFactory;
                this.layouts = layouts;
+               this.undoSupport = undoSupport;
        }
 
        public void addProcessor(InteractionFilePreprocessor processor, Map 
props) {
@@ -85,6 +91,8 @@
 
        }
 
+       UndoSupport getUndoSupport() { return undoSupport; }
+
        public Task getWebServiceImportTask() {
                return new ImportNetworkFromPublicDataSetTask(processors, mgr, 
netmgr, networkViewManager, props,
                                cyNetworkNaming, streamUtil);

Modified: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/select/SelectFirstNeighborsTask.java
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/select/SelectFirstNeighborsTask.java
   2011-07-28 18:01:37 UTC (rev 26303)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/select/SelectFirstNeighborsTask.java
   2011-07-28 19:35:43 UTC (rev 26304)
@@ -1,7 +1,7 @@
 /*
  File: SelectFirstNeighborsTask.java
 
- Copyright (c) 2006, 2010, The Cytoscape Consortium (www.cytoscape.org)
+ Copyright (c) 2006, 2010-2011, The Cytoscape Consortium (www.cytoscape.org)
 
  This library is free software; you can redistribute it and/or modify it
  under the terms of the GNU Lesser General Public License as published
@@ -26,36 +26,51 @@
  You should have received a copy of the GNU Lesser General Public License
  along with this library; if not, write to the Free Software Foundation,
  Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
- */
+*/
 package org.cytoscape.task.internal.select;
 
+
 import java.util.HashSet;
 import java.util.List;
 import java.util.Set;
 
+
 import org.cytoscape.event.CyEventHelper;
 import org.cytoscape.model.CyEdge;
 import org.cytoscape.model.CyNetwork;
 import org.cytoscape.model.CyNode;
 import org.cytoscape.model.CyTableUtil;
+import org.cytoscape.view.model.CyNetworkView;
 import org.cytoscape.view.model.CyNetworkViewManager;
 import org.cytoscape.work.TaskMonitor;
+import org.cytoscape.work.undo.UndoSupport;
 
+
 public class SelectFirstNeighborsTask extends AbstractSelectTask {
-    public SelectFirstNeighborsTask(final CyNetwork net, final 
CyNetworkViewManager networkViewManager,
-           final CyEventHelper eventHelper) {
-       super(net, networkViewManager, eventHelper);
-    }
+       private final UndoSupport undoSupport;
 
-    @Override
-    public void run(TaskMonitor tm) {
-       final List<CyNode> selectedNodes = CyTableUtil.getNodesInState(network, 
"selected", true);
-       final Set<CyNode> nodes = new HashSet<CyNode>();
+       public SelectFirstNeighborsTask(final UndoSupport undoSupport, final 
CyNetwork net,
+                                       final CyNetworkViewManager 
networkViewManager,
+                                       final CyEventHelper eventHelper)
+       {
+               super(net, networkViewManager, eventHelper);
+               this.undoSupport = undoSupport;
+       }
 
-       for (CyNode currentNode : selectedNodes)
-           nodes.addAll(network.getNeighborList(currentNode, CyEdge.Type.ANY));
+       @Override
+       public void run(TaskMonitor tm) {
+               final CyNetworkView view = 
networkViewManager.getNetworkView(network.getSUID());
+               undoSupport.getUndoableEditSupport().postEdit(
+                       new SelectionEdit(eventHelper, "Select First-Neighbour 
Nodes", network, view,
+                                         
SelectionEdit.SelectionFilter.NODES_ONLY));
 
-       selectUtils.setSelectedNodes(nodes, true);
-       updateView();
-    }
+               final List<CyNode> selectedNodes = 
CyTableUtil.getNodesInState(network, CyNetwork.SELECTED, true);
+               final Set<CyNode> nodes = new HashSet<CyNode>();
+
+               for (CyNode currentNode : selectedNodes)
+                       nodes.addAll(network.getNeighborList(currentNode, 
CyEdge.Type.ANY));
+
+               selectUtils.setSelectedNodes(nodes, true);
+               updateView();
+       }
 }

Modified: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/select/SelectFirstNeighborsTaskFactory.java
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/select/SelectFirstNeighborsTaskFactory.java
    2011-07-28 18:01:37 UTC (rev 26303)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/select/SelectFirstNeighborsTaskFactory.java
    2011-07-28 19:35:43 UTC (rev 26304)
@@ -1,7 +1,7 @@
 /*
  File: SelectFirstNeighborsTaskFactory.java
 
- Copyright (c) 2006, 2010, The Cytoscape Consortium (www.cytoscape.org)
+ Copyright (c) 2006, 2010-2011, The Cytoscape Consortium (www.cytoscape.org)
 
  This library is free software; you can redistribute it and/or modify it
  under the terms of the GNU Lesser General Public License as published
@@ -26,25 +26,33 @@
  You should have received a copy of the GNU Lesser General Public License
  along with this library; if not, write to the Free Software Foundation,
  Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
- */
+*/
 package org.cytoscape.task.internal.select;
 
+
 import org.cytoscape.event.CyEventHelper;
 import org.cytoscape.task.AbstractNetworkTaskFactory;
 import org.cytoscape.view.model.CyNetworkViewManager;
 import org.cytoscape.work.TaskIterator;
+import org.cytoscape.work.undo.UndoSupport;
 
+
 public class SelectFirstNeighborsTaskFactory extends 
AbstractNetworkTaskFactory {
-    private CyNetworkViewManager networkViewManager;
-    private final CyEventHelper eventHelper;
+       private final UndoSupport undoSupport;
+       private final CyNetworkViewManager networkViewManager;
+       private final CyEventHelper eventHelper;
 
-    public SelectFirstNeighborsTaskFactory(final CyNetworkViewManager 
networkViewManager,
-           final CyEventHelper eventHelper) {
-       this.networkViewManager = networkViewManager;
-       this.eventHelper = eventHelper;
-    }
+       public SelectFirstNeighborsTaskFactory(final UndoSupport undoSupport,
+                                              final CyNetworkViewManager 
networkViewManager,
+                                              final CyEventHelper eventHelper)
+       {
+               this.undoSupport        = undoSupport;
+               this.networkViewManager = networkViewManager;
+               this.eventHelper = eventHelper;
+       }
 
-    public TaskIterator getTaskIterator() {
-       return new TaskIterator(new SelectFirstNeighborsTask(network, 
networkViewManager, eventHelper));
-    }
+       public TaskIterator getTaskIterator() {
+               return new TaskIterator(new 
SelectFirstNeighborsTask(undoSupport, network,
+                                                                    
networkViewManager, eventHelper));
+       }
 }

Modified: 
core3/core-task-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
===================================================================
--- 
core3/core-task-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
    2011-07-28 18:01:37 UTC (rev 26303)
+++ 
core3/core-task-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
    2011-07-28 19:35:43 UTC (rev 26304)
@@ -125,6 +125,7 @@
                
class="org.cytoscape.task.internal.select.SelectFirstNeighborsTaskFactory">
                <constructor-arg ref="cyNetworkViewManagerServiceRef" />
                <constructor-arg ref="cyEventHelperRef" />
+               <constructor-arg ref="undoSupportServiceRef" />
        </bean>
 
        <bean id="deselectAllTaskFactory"
@@ -425,7 +426,7 @@
                <constructor-arg ref="visualMappingManagerServiceRef" />
                <constructor-arg ref="visualStyleFactoryServiceRef" />
                <constructor-arg ref="cyLayoutsServiceRef" />
-
+               <constructor-arg ref="undoSupportServiceRef" />
        </bean>
        
        <bean id="connectSelectedNodesTaskFactory"

Modified: 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/select/AllFactoryTest.java
===================================================================
--- 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/select/AllFactoryTest.java
     2011-07-28 18:01:37 UTC (rev 26303)
+++ 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/select/AllFactoryTest.java
     2011-07-28 19:35:43 UTC (rev 26304)
@@ -118,7 +118,7 @@
 
        @Test
        public void testSelectFirstNeighborsTaskFactory() {
-               executeTest(new 
SelectFirstNeighborsTaskFactory(networkViewManager, eventHelper));
+               executeTest(new SelectFirstNeighborsTaskFactory(undoSupport, 
networkViewManager, eventHelper));
        }
 
        @Test

Modified: 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/select/SelectFirstNeighborsTaskTest.java
===================================================================
--- 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/select/SelectFirstNeighborsTaskTest.java
       2011-07-28 18:01:37 UTC (rev 26303)
+++ 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/select/SelectFirstNeighborsTaskTest.java
       2011-07-28 19:35:43 UTC (rev 26304)
@@ -1,5 +1,5 @@
 /*
-  Copyright (c) 2010, The Cytoscape Consortium (www.cytoscape.org)
+  Copyright (c) 2010-2011, The Cytoscape Consortium (www.cytoscape.org)
 
   This library is free software; you can redistribute it and/or modify it
   under the terms of the GNU Lesser General Public License as published
@@ -24,10 +24,13 @@
   You should have received a copy of the GNU Lesser General Public License
   along with this library; if not, write to the Free Software Foundation,
   Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
- */
-
+*/
 package org.cytoscape.task.internal.select;
 
+
+import javax.swing.undo.UndoableEditSupport;
+
+import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
 import static org.mockito.Mockito.when;
@@ -37,31 +40,41 @@
 
 import org.cytoscape.model.CyEdge;
 import org.cytoscape.model.CyNode;
+import org.cytoscape.model.CyTable;
 import org.cytoscape.work.Task;
+import org.cytoscape.work.undo.UndoSupport;
+
 import org.junit.Before;
 import org.junit.Test;
 
+
 public class SelectFirstNeighborsTaskTest extends AbstractSelectTaskTester {
-    @Before
-    public void setUp() throws Exception {
-       super.setUp();
-    }
+       @Before
+       public void setUp() throws Exception {
+               super.setUp();
+       }
 
-    @Test
-    public void testRun() throws Exception {
-       // more setup
-       when(r3.get("selected", Boolean.class)).thenReturn(true);
-       when(r4.get("selected", Boolean.class)).thenReturn(false);
+       @Test
+       public void testRun() throws Exception {
+               final CyTable nodeTable = mock(CyTable.class);
+               when(net.getDefaultNodeTable()).thenReturn(nodeTable);
+               UndoableEditSupport undoableEditSupport = 
mock(UndoableEditSupport.class);
+               UndoSupport undoSupport = mock(UndoSupport.class);
+               
when(undoSupport.getUndoableEditSupport()).thenReturn(undoableEditSupport);
 
-       List<CyNode> nl = new ArrayList<CyNode>();
-       nl.add(e4);
-       when(net.getNeighborList(e3, CyEdge.Type.ANY)).thenReturn(nl);
+               // more setup
+               when(r3.get("selected", Boolean.class)).thenReturn(true);
+               when(r4.get("selected", Boolean.class)).thenReturn(false);
 
-       // run the task
-       Task t = new SelectFirstNeighborsTask(net, networkViewManager, 
eventHelper);
-       t.run(tm);
+               List<CyNode> nl = new ArrayList<CyNode>();
+               nl.add(e4);
+               when(net.getNeighborList(e3, CyEdge.Type.ANY)).thenReturn(nl);
 
-       // check that the expected rows were set
-       verify(r4, times(1)).set("selected", true);
-    }
+               // run the task
+               Task t = new SelectFirstNeighborsTask(undoSupport, net, 
networkViewManager, eventHelper);
+               t.run(tm);
+
+               // check that the expected rows were set
+               verify(r4, times(1)).set("selected", true);
+       }
 }

-- 
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