Author: ruschein
Date: 2011-07-28 13:48:56 -0700 (Thu, 28 Jul 2011)
New Revision: 26317

Modified:
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/select/SelectFromFileListTask.java
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/select/SelectFromFileListTaskFactory.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/SelectFromFileListTaskTest.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/select/SelectFromFileListTask.java
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/select/SelectFromFileListTask.java
     2011-07-28 20:46:57 UTC (rev 26316)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/select/SelectFromFileListTask.java
     2011-07-28 20:48:56 UTC (rev 26317)
@@ -1,7 +1,7 @@
 /*
   File: SelectFromFileListTask.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,9 +26,10 @@
   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.io.BufferedReader;
 import java.io.File;
 import java.io.FileReader;
@@ -36,59 +37,66 @@
 import java.util.List;
 import java.util.Set;
 
+
 import org.cytoscape.event.CyEventHelper;
 import org.cytoscape.model.CyNetwork;
 import org.cytoscape.model.CyNode;
 import org.cytoscape.model.CyTableEntry;
+import org.cytoscape.view.model.CyNetworkView;
 import org.cytoscape.view.model.CyNetworkViewManager;
 import org.cytoscape.work.TaskMonitor;
 import org.cytoscape.work.Tunable;
+import org.cytoscape.work.undo.UndoSupport;
 
+
 public class SelectFromFileListTask extends AbstractSelectTask {
-    @Tunable(description = "Node selection file")
-    public File file;
+       private final UndoSupport undoSupport;
 
-    private final CyEventHelper eventHelper;
+       @Tunable(description = "Node selection file",params="input=true")
+       public File file;
 
-    public SelectFromFileListTask(final CyNetwork net, final 
CyNetworkViewManager networkViewManager,
-           final CyEventHelper eventHelper) {
-       super(net, networkViewManager, eventHelper);
-       this.eventHelper = eventHelper;
-    }
+       public SelectFromFileListTask(final UndoSupport undoSupport, final 
CyNetwork net,
+                                     final CyNetworkViewManager 
networkViewManager,
+                                     final CyEventHelper eventHelper)
+       {
+               super(net, networkViewManager, eventHelper);
+               this.undoSupport = undoSupport;
+       }
 
-    public void run(final TaskMonitor tm) throws Exception {
-       if (file == null)
-           throw new NullPointerException("You must specify a non-null file to 
load!");
+       public void run(final TaskMonitor tm) throws Exception {
+               if (file == null)
+                       throw new NullPointerException("You must specify a 
non-null file to load!");
 
-       try {
-           FileReader fin = new FileReader(file);
-           BufferedReader bin = new BufferedReader(fin);
-           Set<String> fileNodes = new HashSet<String>();
-           String s;
+               final CyNetworkView view = 
networkViewManager.getNetworkView(network.getSUID());
+               final SelectionEdit edit =
+                       new SelectionEdit(eventHelper, "Select Nodes From 
File", network, view,
+                                         
SelectionEdit.SelectionFilter.NODES_ONLY);
 
-           while ((s = bin.readLine()) != null) {
-               String trimName = s.trim();
+               try {
+                       FileReader fin = new FileReader(file);
+                       BufferedReader bin = new BufferedReader(fin);
+                       Set<String> fileNodes = new HashSet<String>();
+                       String s;
 
-               if (trimName.length() > 0)
-                   fileNodes.add(trimName);
-           }
+                       while ((s = bin.readLine()) != null) {
+                               final String trimName = s.trim();
+                               if (trimName.length() > 0)
+                                       fileNodes.add(trimName);
+                       }
+                       fin.close();
 
-           fin.close();
+                       // Loop through all the node of the graph selecting 
those in the file:
+                       List<CyNode> nodeList = network.getNodeList();
+                       for (final CyNode node : nodeList) {
+                               if 
(fileNodes.contains(node.getCyRow().get(CyTableEntry.NAME, String.class)))
+                                       node.getCyRow().set(CyNetwork.SELECTED, 
true);
+                       }
 
-
-               // loop through all the node of the graph selecting those in the
-               // file
-               List<CyNode> nodeList = network.getNodeList();
-               for (final CyNode node : nodeList) {
-                   if 
(fileNodes.contains(node.getCyRow().get(CyTableEntry.NAME, String.class)))
-                       node.getCyRow().set("selected", true);
+                       updateView();
+               } catch (Exception e) {
+                       throw new Exception("Error reading file: " + 
file.getAbsolutePath(), e);
                }
 
-
-           updateView();
-
-       } catch (Exception e) {
-           throw new Exception("Error reading file: " + 
file.getAbsolutePath(), e);
+               undoSupport.getUndoableEditSupport().postEdit(edit);
        }
-    }
 }

Modified: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/select/SelectFromFileListTaskFactory.java
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/select/SelectFromFileListTaskFactory.java
      2011-07-28 20:46:57 UTC (rev 26316)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/select/SelectFromFileListTaskFactory.java
      2011-07-28 20:48:56 UTC (rev 26317)
@@ -1,7 +1,7 @@
 /*
  File: SelectFromFileListTaskFactory.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,7 +26,7 @@
  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;  
 
 
@@ -35,21 +35,25 @@
 import org.cytoscape.work.TaskFactory;
 import org.cytoscape.work.TaskIterator;
 import org.cytoscape.task.AbstractNetworkTaskFactory;
+import org.cytoscape.work.undo.UndoSupport;
 
 
 public class SelectFromFileListTaskFactory extends AbstractNetworkTaskFactory {
+       private final UndoSupport undoSupport;
        private final CyNetworkViewManager networkViewManager;
        private final CyEventHelper eventHelper;
 
-       public SelectFromFileListTaskFactory(final CyNetworkViewManager 
networkViewManager,
-                                            final CyEventHelper eventHelper)
+       public SelectFromFileListTaskFactory(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 SelectFromFileListTask(network, 
networkViewManager,
-                                                                  
eventHelper));
+               return new TaskIterator(new SelectFromFileListTask(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 20:46:57 UTC (rev 26316)
+++ 
core3/core-task-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
    2011-07-28 20:48:56 UTC (rev 26317)
@@ -165,6 +165,7 @@
 
        <bean id="selectFromFileListTaskFactory"
                
class="org.cytoscape.task.internal.select.SelectFromFileListTaskFactory">
+               <constructor-arg ref="undoSupportServiceRef" />
                <constructor-arg ref="cyNetworkViewManagerServiceRef" />
                <constructor-arg ref="cyEventHelperRef" />
        </bean>

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 20:46:57 UTC (rev 26316)
+++ 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/select/AllFactoryTest.java
     2011-07-28 20:48:56 UTC (rev 26317)
@@ -123,7 +123,7 @@
 
        @Test
        public void testSelectFromFileListTaskFactory() {
-               executeTest(new 
SelectFromFileListTaskFactory(networkViewManager, eventHelper));
+               executeTest(new SelectFromFileListTaskFactory(undoSupport, 
networkViewManager, eventHelper));
        }
 
        private void executeTest(NetworkTaskFactory ntf) {

Modified: 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/select/SelectFromFileListTaskTest.java
===================================================================
--- 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/select/SelectFromFileListTaskTest.java
 2011-07-28 20:46:57 UTC (rev 26316)
+++ 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/select/SelectFromFileListTaskTest.java
 2011-07-28 20:48:56 UTC (rev 26317)
@@ -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
@@ -28,6 +28,8 @@
 package org.cytoscape.task.internal.select;
 
 
+import javax.swing.undo.UndoableEditSupport;
+
 import static org.mockito.Mockito.*;
 import static org.junit.Assert.*;
 import org.junit.Test;
@@ -41,21 +43,29 @@
 import org.cytoscape.model.CyNetwork;
 import org.cytoscape.model.CyNode;
 import org.cytoscape.model.CyRow;
+import org.cytoscape.model.CyTable;
+import org.cytoscape.work.Task;
+import org.cytoscape.work.TaskFactory;
+import org.cytoscape.work.TaskIterator;
 import org.cytoscape.work.TaskMonitor;
-import org.cytoscape.work.TaskIterator;
-import org.cytoscape.work.TaskFactory;
-import org.cytoscape.work.Task;
+import org.cytoscape.work.undo.UndoSupport;
 
 import java.io.File;
 
 
 public class SelectFromFileListTaskTest extends AbstractSelectTaskTester {
        CyEventHelper eventHelper;
+       UndoSupport undoSupport;
 
        @Before
        public void setUp() throws Exception {
                super.setUp();
                this.eventHelper = mock(CyEventHelper.class);
+               final CyTable nodeTable = mock(CyTable.class);
+               when(net.getDefaultNodeTable()).thenReturn(nodeTable);
+               UndoableEditSupport undoableEditSupport = 
mock(UndoableEditSupport.class);
+               this.undoSupport = mock(UndoSupport.class);
+               
when(undoSupport.getUndoableEditSupport()).thenReturn(undoableEditSupport);
        }
 
        @Test
@@ -64,8 +74,9 @@
                when(r4.get("name",String.class)).thenReturn("marge");
 
                // run the task
-               SelectFromFileListTask t = new SelectFromFileListTask(net, 
networkViewManager,
-                                                                     
eventHelper);
+               SelectFromFileListTask t =
+                       new SelectFromFileListTask(undoSupport, net, 
networkViewManager,
+                                                  eventHelper);
                t.file = new File("./src/test/resources/node_names.txt");
                t.run(tm);
 
@@ -77,14 +88,16 @@
        @Test(expected=NullPointerException.class)
        public void testRunWithoutFileSpecified() throws Exception {
                // run the task
-               SelectFromFileListTask t = new SelectFromFileListTask(net, 
networkViewManager, eventHelper);
+               SelectFromFileListTask t =
+                       new SelectFromFileListTask(undoSupport, net, 
networkViewManager, eventHelper);
                t.run(tm);
        }
 
        @Test(expected=Exception.class)
-       public void testNonExistantFile() throws Exception {
+       public void testNonExistentFile() throws Exception {
                // run the task
-               SelectFromFileListTask t = new SelectFromFileListTask(net, 
networkViewManager, eventHelper);
+               SelectFromFileListTask t =
+                       new SelectFromFileListTask(undoSupport, net, 
networkViewManager, eventHelper);
                t.file = new File("./src/test/resources/does-not-exist.txt");
                t.run(tm);
        }
@@ -92,7 +105,8 @@
        @Test
        public void testRunEmptyFile() throws Exception {
                // run the task
-               SelectFromFileListTask t = new SelectFromFileListTask(net, 
networkViewManager, eventHelper);
+               SelectFromFileListTask t =
+                       new SelectFromFileListTask(undoSupport, net, 
networkViewManager, eventHelper);
                t.file = new File("./src/test/resources/empty.txt");
                t.run(tm);
 
@@ -104,7 +118,8 @@
        @Test
        public void testRunNamesDontMatch() throws Exception {
                // run the task
-               SelectFromFileListTask t = new SelectFromFileListTask(net, 
networkViewManager, eventHelper);
+               SelectFromFileListTask t =
+                       new SelectFromFileListTask(undoSupport, net, 
networkViewManager, eventHelper);
                t.file = new File("./src/test/resources/bad_names.txt");
                t.run(tm);
 
@@ -112,5 +127,4 @@
                verify(r3, never()).set("selected",true);
                verify(r4, never()).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