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.