Author: ruschein
Date: 2011-08-01 15:15:51 -0700 (Mon, 01 Aug 2011)
New Revision: 26347

Added:
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/CreateNetworkViewEdit.java
Modified:
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/AbstractNetworkFromSelectionTask.java
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/CreateNetworkViewTask.java
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/CreateNetworkViewTaskFactory.java
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/NewNetworkSelectedNodesEdgesTask.java
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/NewNetworkSelectedNodesEdgesTaskFactory.java
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/NewNetworkSelectedNodesOnlyTask.java
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/NewNetworkSelectedNodesOnlyTaskFactory.java
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/subnetworkbuilder/SubnetworkBuilderUtil.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/creation/CreateNetworkViewTaskTest.java
   
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/creation/NewNetworkSelectedNodesEdgesTaskTest.java
   
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/creation/NewNetworkSelectedNodesOnlyTaskTest.java
Log:
Added undo/redo support for the creation of a network view.

Modified: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/AbstractNetworkFromSelectionTask.java
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/AbstractNetworkFromSelectionTask.java
 2011-08-01 16:21:54 UTC (rev 26346)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/AbstractNetworkFromSelectionTask.java
 2011-08-01 22:15:51 UTC (rev 26347)
@@ -1,7 +1,7 @@
 /*
  File: AbstractNetworkFromSelectionTask.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,12 +26,14 @@
  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.creation;
 
+
 import java.util.Collection;
 import java.util.List;
 
+import org.cytoscape.event.CyEventHelper;
 import org.cytoscape.model.CyEdge;
 import org.cytoscape.model.CyNetwork;
 import org.cytoscape.model.CyNetworkManager;
@@ -50,25 +52,38 @@
 import org.cytoscape.view.vizmap.VisualMappingManager;
 import org.cytoscape.view.vizmap.VisualStyle;
 import org.cytoscape.work.TaskMonitor;
+import org.cytoscape.work.undo.UndoSupport;
 
+
 abstract class AbstractNetworkFromSelectionTask extends AbstractCreationTask {
-
+       private final UndoSupport undoSupport;
        protected final CyRootNetworkFactory rootNetworkFactory;
        protected final CyNetworkViewFactory viewFactory;
        protected final VisualMappingManager vmm;
        protected final CyNetworkNaming cyNetworkNaming;
        protected final CyApplicationManager appManager;
+       private final CyEventHelper eventHelper;
 
-       public AbstractNetworkFromSelectionTask(final CyNetwork parentNetwork,
-                       final CyRootNetworkFactory rootNetworkFactory, final 
CyNetworkViewFactory viewFactory,
-                       final CyNetworkManager netmgr, final 
CyNetworkViewManager networkViewManager,
-                       final CyNetworkNaming cyNetworkNaming, final 
VisualMappingManager vmm, final CyApplicationManager appManager) {
+       public AbstractNetworkFromSelectionTask(final UndoSupport undoSupport,
+                                               final CyNetwork parentNetwork,
+                                               final CyRootNetworkFactory 
rootNetworkFactory,
+                                               final CyNetworkViewFactory 
viewFactory,
+                                               final CyNetworkManager netmgr,
+                                               final CyNetworkViewManager 
networkViewManager,
+                                               final CyNetworkNaming 
cyNetworkNaming,
+                                               final VisualMappingManager vmm,
+                                               final CyApplicationManager 
appManager,
+                                               final CyEventHelper eventHelper)
+       {
                super(parentNetwork, netmgr, networkViewManager);
+
+               this.undoSupport        = undoSupport;
                this.rootNetworkFactory = rootNetworkFactory;
-               this.viewFactory = viewFactory;
-               this.cyNetworkNaming = cyNetworkNaming;
-               this.vmm = vmm;
-               this.appManager = appManager;
+               this.viewFactory        = viewFactory;
+               this.cyNetworkNaming    = cyNetworkNaming;
+               this.vmm                = vmm;
+               this.appManager         = appManager;
+               this.eventHelper        = eventHelper;
        }
 
        abstract Collection<CyEdge> getEdges(CyNetwork netx, List<CyNode> 
nodes);
@@ -104,8 +119,9 @@
 
                if (curView == null) {
                        // Create view for the new network.
-                       final CreateNetworkViewTask createViewTask = new 
CreateNetworkViewTask(newNet, viewFactory,
-                                       networkViewManager, null);
+                       final CreateNetworkViewTask createViewTask =
+                               new CreateNetworkViewTask(undoSupport, newNet, 
viewFactory,
+                                                         networkViewManager, 
null, eventHelper);
                        insertTasksAfterCurrentTask(createViewTask);
 
                        appManager.setCurrentNetworkView(newNet.getSUID());

Copied: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/CreateNetworkViewEdit.java
 (from rev 26338, 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/title/NetworkTitleEdit.java)
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/CreateNetworkViewEdit.java
                            (rev 0)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/CreateNetworkViewEdit.java
    2011-08-01 22:15:51 UTC (rev 26347)
@@ -0,0 +1,105 @@
+package org.cytoscape.task.internal.creation;
+
+
+import static 
org.cytoscape.view.presentation.property.MinimalVisualLexicon.NETWORK_SCALE_FACTOR;
+import static 
org.cytoscape.view.presentation.property.MinimalVisualLexicon.NODE_X_LOCATION;
+import static 
org.cytoscape.view.presentation.property.MinimalVisualLexicon.NODE_Y_LOCATION;
+import static 
org.cytoscape.view.presentation.property.RichVisualLexicon.NODE_Z_LOCATION;
+import static 
org.cytoscape.view.presentation.property.MinimalVisualLexicon.NETWORK_CENTER_X_LOCATION;
+import static 
org.cytoscape.view.presentation.property.MinimalVisualLexicon.NETWORK_CENTER_Y_LOCATION;
+import static 
org.cytoscape.view.presentation.property.RichVisualLexicon.NETWORK_CENTER_Z_LOCATION;
+
+import java.util.Collection;
+import java.util.HashMap;
+import java.util.Map;
+
+import org.cytoscape.event.CyEventHelper;
+import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyNode;
+import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.view.model.CyNetworkViewFactory;
+import org.cytoscape.view.model.CyNetworkViewManager;
+import org.cytoscape.view.model.View;
+import org.cytoscape.util.swing.CyAbstractEdit;
+
+
+/** An undoable edit that will undo and redo the creation of a network view. 
*/ 
+final class CreateNetworkViewEdit extends CyAbstractEdit {
+       private final CyEventHelper eventHelper;
+       private final CyNetwork network;
+       private final CyNetworkViewFactory viewFactory;
+       private final CyNetworkViewManager networkViewManager;
+       private Map<CyNode, NodeLocations> nodesAndLocations;
+       private double networkCenterX;
+       private double networkCenterY;
+       private double networkCenterZ;
+       private double networkScaleFactor;
+
+       CreateNetworkViewEdit(final CyEventHelper eventHelper, final CyNetwork 
network,
+                             final CyNetworkViewFactory viewFactory,
+                             final CyNetworkViewManager networkViewManager)
+       {
+               super("Create Network View");
+
+               this.eventHelper        = eventHelper;
+               this.network            = network;
+               this.viewFactory        = viewFactory;
+               this.networkViewManager = networkViewManager;
+       }
+
+       public void redo() {
+               super.redo();
+
+               final CyNetworkView view =
+                       viewFactory.getNetworkView(network, /* useThreshold = 
*/ false);
+               networkViewManager.addNetworkView(view);
+
+               for (final View<CyNode> nodeView : view.getNodeViews())
+                       
nodesAndLocations.get(nodeView.getModel()).restoreLocations(nodeView);
+
+               view.setVisualProperty(NETWORK_CENTER_X_LOCATION, 
networkCenterX);
+               view.setVisualProperty(NETWORK_CENTER_Y_LOCATION, 
networkCenterY);
+               view.setVisualProperty(NETWORK_CENTER_Z_LOCATION, 
networkCenterZ);
+               view.setVisualProperty(NETWORK_SCALE_FACTOR, 
networkScaleFactor);
+
+               eventHelper.flushPayloadEvents();
+               view.updateView();
+       }
+
+       public void undo() {
+               super.undo();
+
+               final CyNetworkView view = 
networkViewManager.getNetworkView(network.getSUID());
+
+               networkCenterX = 
view.getVisualProperty(NETWORK_CENTER_X_LOCATION);
+               networkCenterY = 
view.getVisualProperty(NETWORK_CENTER_Y_LOCATION);
+               networkCenterZ = 
view.getVisualProperty(NETWORK_CENTER_Z_LOCATION);
+               networkScaleFactor = 
view.getVisualProperty(NETWORK_SCALE_FACTOR);
+
+               final Collection<View<CyNode>> nodeViews = view.getNodeViews();
+               nodesAndLocations = new HashMap<CyNode, 
NodeLocations>(nodeViews.size());
+               for (final View<CyNode> nodeView : nodeViews)
+                       nodesAndLocations.put(nodeView.getModel(), new 
NodeLocations(nodeView));
+
+               networkViewManager.destroyNetworkView(view);
+       }
+}
+
+
+final class NodeLocations {
+       private final double xLocation;
+       private final double yLocation;
+       private final double zLocation;
+
+       NodeLocations(final View<CyNode> nodeView) {
+               xLocation = nodeView.getVisualProperty(NODE_X_LOCATION);
+               yLocation = nodeView.getVisualProperty(NODE_Y_LOCATION);
+               zLocation = nodeView.getVisualProperty(NODE_Z_LOCATION);
+       }
+
+       void restoreLocations(final View<CyNode> nodeView) {
+               nodeView.setVisualProperty(NODE_X_LOCATION, xLocation);
+               nodeView.setVisualProperty(NODE_Y_LOCATION, yLocation);
+               nodeView.setVisualProperty(NODE_Z_LOCATION, zLocation);
+       }
+}

Modified: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/CreateNetworkViewTask.java
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/CreateNetworkViewTask.java
    2011-08-01 16:21:54 UTC (rev 26346)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/CreateNetworkViewTask.java
    2011-08-01 22:15:51 UTC (rev 26347)
@@ -1,7 +1,7 @@
 /*
  File: CreateNetworkViewTask.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,11 @@
  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.creation;
 
+
+import org.cytoscape.event.CyEventHelper;
 import org.cytoscape.model.CyNetwork;
 import org.cytoscape.model.CyTableEntry;
 import org.cytoscape.task.AbstractNetworkTask;
@@ -38,21 +40,29 @@
 import org.cytoscape.view.model.CyNetworkViewFactory;
 import org.cytoscape.view.model.CyNetworkViewManager;
 import org.cytoscape.work.TaskMonitor;
+import org.cytoscape.work.undo.UndoSupport;
 
+
 public class CreateNetworkViewTask extends AbstractNetworkTask {
-
+       private final UndoSupport undoSupport;
        private final CyNetworkViewManager networkViewManager;
        private final CyNetworkViewFactory viewFactory;
-       
        private final CyLayoutAlgorithmManager layouts;
+       private final CyEventHelper eventHelper;
 
-       public CreateNetworkViewTask(final CyNetwork networkModel, final 
CyNetworkViewFactory viewFactory,
-                       final CyNetworkViewManager networkViewManager,
-                       final CyLayoutAlgorithmManager layouts) {
+       public CreateNetworkViewTask(final UndoSupport undoSupport, final 
CyNetwork networkModel,
+                                    final CyNetworkViewFactory viewFactory,
+                                    final CyNetworkViewManager 
networkViewManager,
+                                    final CyLayoutAlgorithmManager layouts,
+                                    final CyEventHelper eventHelper)
+       {
                super(networkModel);
-               this.viewFactory = viewFactory;
+
+               this.undoSupport        = undoSupport;
+               this.viewFactory        = viewFactory;
                this.networkViewManager = networkViewManager;
-               this.layouts = layouts;
+               this.layouts            = layouts;
+               this.eventHelper        = eventHelper;
        }
 
        public void run(TaskMonitor taskMonitor) throws Exception {
@@ -66,12 +76,18 @@
                        networkViewManager.addNetworkView(view);
                        
                        // Apply layout only when it is necessary.
-                       if(layouts != null)
-                               this.insertTasksAfterCurrentTask(new 
ApplyPreferredLayoutTask(view, layouts));
+                       if (layouts != null)
+                               insertTasksAfterCurrentTask(new 
ApplyPreferredLayoutTask(view, layouts));
+
                } catch (Exception e) {
                        throw new Exception("Could not create network view for 
network: "
-                                       + 
network.getCyRow().get(CyTableEntry.NAME, String.class), e);
+                               + network.getCyRow().get(CyTableEntry.NAME, 
String.class), e);
                }
+
+               if (undoSupport != null)
+                       undoSupport.getUndoableEditSupport().postEdit(
+                               new CreateNetworkViewEdit(eventHelper, network, 
viewFactory,
+                                                         networkViewManager));
                
                taskMonitor.setProgress(1.0);
                taskMonitor.setStatusMessage("Network view successfully create 
for:  "

Modified: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/CreateNetworkViewTaskFactory.java
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/CreateNetworkViewTaskFactory.java
     2011-08-01 16:21:54 UTC (rev 26346)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/CreateNetworkViewTaskFactory.java
     2011-08-01 22:15:51 UTC (rev 26347)
@@ -1,7 +1,7 @@
 /*
  File: CreateNetworkViewTaskFactory.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,31 +26,42 @@
  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.creation;
 
+
+import org.cytoscape.event.CyEventHelper;
 import org.cytoscape.task.AbstractNetworkTaskFactory;
 import org.cytoscape.view.layout.CyLayoutAlgorithmManager;
 import org.cytoscape.view.model.CyNetworkViewFactory;
 import org.cytoscape.view.model.CyNetworkViewManager;
 import org.cytoscape.work.TaskIterator;
+import org.cytoscape.work.undo.UndoSupport;
 
+
 public class CreateNetworkViewTaskFactory extends AbstractNetworkTaskFactory {
-
+       private final UndoSupport undoSupport;
        private final CyNetworkViewManager networkViewManager;
        private final CyNetworkViewFactory viewFactory;
-
        private final CyLayoutAlgorithmManager layouts;
+       private final CyEventHelper eventHelper;
 
-       CreateNetworkViewTaskFactory(final CyNetworkViewFactory viewFactory, 
final CyNetworkViewManager networkViewManager,
-                       final CyLayoutAlgorithmManager layouts) {
-               super();
-               this.viewFactory = viewFactory;
+       CreateNetworkViewTaskFactory(final UndoSupport undoSupport,
+                                    final CyNetworkViewFactory viewFactory,
+                                    final CyNetworkViewManager 
networkViewManager,
+                                    final CyLayoutAlgorithmManager layouts,
+                                    final CyEventHelper eventHelper)
+       {
+               this.undoSupport        = undoSupport;
+               this.viewFactory        = viewFactory;
                this.networkViewManager = networkViewManager;
-               this.layouts = layouts;
+               this.layouts            = layouts;
+               this.eventHelper        = eventHelper;
        }
 
        public TaskIterator getTaskIterator() {
-               return new TaskIterator(new CreateNetworkViewTask(network, 
viewFactory, networkViewManager, layouts));
+               return new TaskIterator(new CreateNetworkViewTask(undoSupport, 
network, viewFactory,
+                                                                 
networkViewManager, layouts,
+                                                                 eventHelper));
        }
 }

Modified: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/NewNetworkSelectedNodesEdgesTask.java
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/NewNetworkSelectedNodesEdgesTask.java
 2011-08-01 16:21:54 UTC (rev 26346)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/NewNetworkSelectedNodesEdgesTask.java
 2011-08-01 22:15:51 UTC (rev 26347)
@@ -1,7 +1,7 @@
 /*
  File: NewNetworkSelectedNodesEdgesTask.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,12 +26,14 @@
  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.creation;
 
+
 import java.util.Collection;
 import java.util.List;
 
+import org.cytoscape.event.CyEventHelper;
 import org.cytoscape.model.CyEdge;
 import org.cytoscape.model.CyNetwork;
 import org.cytoscape.model.CyNetworkManager;
@@ -43,14 +45,22 @@
 import org.cytoscape.view.model.CyNetworkViewFactory;
 import org.cytoscape.view.model.CyNetworkViewManager;
 import org.cytoscape.view.vizmap.VisualMappingManager;
+import org.cytoscape.work.undo.UndoSupport;
 
+
 public class NewNetworkSelectedNodesEdgesTask extends 
AbstractNetworkFromSelectionTask {
-
-       public NewNetworkSelectedNodesEdgesTask(final CyNetwork net, final 
CyRootNetworkFactory cyroot,
-                       final CyNetworkViewFactory cnvf, final CyNetworkManager 
netmgr,
-                       final CyNetworkViewManager networkViewManager, final 
CyNetworkNaming cyNetworkNaming,
-                       final VisualMappingManager vmm, final 
CyApplicationManager appManager) {
-               super(net, cyroot, cnvf, netmgr, networkViewManager, 
cyNetworkNaming, vmm, appManager);
+       public NewNetworkSelectedNodesEdgesTask(final UndoSupport undoSupport, 
final CyNetwork net,
+                                               final CyRootNetworkFactory 
cyroot,
+                                               final CyNetworkViewFactory cnvf,
+                                               final CyNetworkManager netmgr,
+                                               final CyNetworkViewManager 
networkViewManager,
+                                               final CyNetworkNaming 
cyNetworkNaming,
+                                               final VisualMappingManager vmm,
+                                               final CyApplicationManager 
appManager,
+                                               final CyEventHelper eventHelper)
+       {
+               super(undoSupport, net, cyroot, cnvf, netmgr, 
networkViewManager, cyNetworkNaming,
+                     vmm, appManager, eventHelper);
        }
 
        Collection<CyEdge> getEdges(CyNetwork netx, List<CyNode> nodes) {

Modified: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/NewNetworkSelectedNodesEdgesTaskFactory.java
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/NewNetworkSelectedNodesEdgesTaskFactory.java
  2011-08-01 16:21:54 UTC (rev 26346)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/NewNetworkSelectedNodesEdgesTaskFactory.java
  2011-08-01 22:15:51 UTC (rev 26347)
@@ -1,7 +1,7 @@
 /*
  File: NewNetworkSelectedNodesEdgesTaskFactory.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,11 @@
  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.creation;
 
+
+import org.cytoscape.event.CyEventHelper;
 import org.cytoscape.model.CyNetworkManager;
 import org.cytoscape.model.subnetwork.CyRootNetworkFactory;
 import org.cytoscape.session.CyApplicationManager;
@@ -38,32 +40,45 @@
 import org.cytoscape.view.model.CyNetworkViewManager;
 import org.cytoscape.view.vizmap.VisualMappingManager;
 import org.cytoscape.work.TaskIterator;
+import org.cytoscape.work.undo.UndoSupport;
 
+
 public class NewNetworkSelectedNodesEdgesTaskFactory extends 
AbstractNetworkTaskFactory {
+       private final UndoSupport undoSupport;
+       private final CyNetworkManager netmgr;
+       private final CyNetworkViewManager networkViewManager;
+       private final CyRootNetworkFactory crnf;
+       private final CyNetworkViewFactory cnvf;
+       private final CyNetworkNaming naming;
+       private final VisualMappingManager vmm;
+       private final CyApplicationManager appManager;
+       private final CyEventHelper eventHelper;
 
-    private CyNetworkManager netmgr;
-    private final CyNetworkViewManager networkViewManager;
-    private CyRootNetworkFactory crnf;
-    private CyNetworkViewFactory cnvf;
-    private CyNetworkNaming naming;
-    private VisualMappingManager vmm;
-    private final CyApplicationManager appManager;
+       public NewNetworkSelectedNodesEdgesTaskFactory(final UndoSupport 
undoSupport,
+                                                      final 
CyRootNetworkFactory crnf,
+                                                      final 
CyNetworkViewFactory cnvf,
+                                                      final CyNetworkManager 
netmgr,
+                                                      final 
CyNetworkViewManager networkViewManager,
+                                                      final CyNetworkNaming 
naming,
+                                                      final 
VisualMappingManager vmm,
+                                                      final 
CyApplicationManager appManager,
+                                                      final CyEventHelper 
eventHelper)
+       {
+               this.undoSupport        = undoSupport;
+               this.netmgr             = netmgr;
+               this.networkViewManager = networkViewManager;
+               this.crnf               = crnf;
+               this.cnvf               = cnvf;
+               this.naming             = naming;
+               this.vmm                = vmm;
+               this.appManager         = appManager;
+               this.eventHelper        = eventHelper;
+       }
 
-    public NewNetworkSelectedNodesEdgesTaskFactory(CyRootNetworkFactory crnf, 
CyNetworkViewFactory cnvf,
-           CyNetworkManager netmgr, final CyNetworkViewManager 
networkViewManager, CyNetworkNaming naming,
-           VisualMappingManager vmm, final CyApplicationManager appManager) {
-       this.netmgr = netmgr;
-       this.networkViewManager = networkViewManager;
-       this.crnf = crnf;
-       this.cnvf = cnvf;
-       this.naming = naming;
-       this.vmm = vmm;
-       this.appManager = appManager;
-    }
-
-    public TaskIterator getTaskIterator() {
-       return new TaskIterator(new NewNetworkSelectedNodesEdgesTask(network, 
crnf, cnvf, netmgr, networkViewManager,
-               naming, vmm, appManager));
-    }
-
+       public TaskIterator getTaskIterator() {
+               return new TaskIterator(
+                       new NewNetworkSelectedNodesEdgesTask(undoSupport, 
network, crnf, cnvf,
+                                                            netmgr, 
networkViewManager, naming, vmm,
+                                                            appManager, 
eventHelper));
+       }
 }

Modified: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/NewNetworkSelectedNodesOnlyTask.java
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/NewNetworkSelectedNodesOnlyTask.java
  2011-08-01 16:21:54 UTC (rev 26346)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/NewNetworkSelectedNodesOnlyTask.java
  2011-08-01 22:15:51 UTC (rev 26347)
@@ -1,7 +1,7 @@
 /*
  File: NewNetworkSelectedNodesOnlyTask.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,15 +26,16 @@
  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.creation;
 
+
 import java.util.Collection;
 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.CyNetworkManager;
@@ -45,14 +46,22 @@
 import org.cytoscape.view.model.CyNetworkViewFactory;
 import org.cytoscape.view.model.CyNetworkViewManager;
 import org.cytoscape.view.vizmap.VisualMappingManager;
+import org.cytoscape.work.undo.UndoSupport;
 
+
 public class NewNetworkSelectedNodesOnlyTask extends 
AbstractNetworkFromSelectionTask {
-
-       public NewNetworkSelectedNodesOnlyTask(final CyNetwork net, final 
CyRootNetworkFactory cyroot,
-                       final CyNetworkViewFactory cnvf, final CyNetworkManager 
netmgr,
-                       final CyNetworkViewManager networkViewManager, final 
CyNetworkNaming cyNetworkNaming,
-                       final VisualMappingManager vmm, final 
CyApplicationManager appManager) {
-               super(net, cyroot, cnvf, netmgr, networkViewManager, 
cyNetworkNaming, vmm, appManager);
+       public NewNetworkSelectedNodesOnlyTask(final UndoSupport undoSupport, 
final CyNetwork net,
+                                              final CyRootNetworkFactory 
cyroot,
+                                              final CyNetworkViewFactory cnvf,
+                                              final CyNetworkManager netmgr,
+                                              final CyNetworkViewManager 
networkViewManager,
+                                              final CyNetworkNaming 
cyNetworkNaming,
+                                              final VisualMappingManager vmm,
+                                              final CyApplicationManager 
appManager,
+                                              final CyEventHelper eventHelper)
+       {
+               super(undoSupport, net, cyroot, cnvf, netmgr, 
networkViewManager, cyNetworkNaming,
+                     vmm, appManager, eventHelper);
        }
 
        Collection<CyEdge> getEdges(CyNetwork netx, List<CyNode> nodes) {

Modified: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/NewNetworkSelectedNodesOnlyTaskFactory.java
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/NewNetworkSelectedNodesOnlyTaskFactory.java
   2011-08-01 16:21:54 UTC (rev 26346)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/NewNetworkSelectedNodesOnlyTaskFactory.java
   2011-08-01 22:15:51 UTC (rev 26347)
@@ -1,7 +1,7 @@
 /*
  File: NewNetworkSelectedNodesOnlyTaskFactory.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,11 @@
  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.creation;
 
+
+import org.cytoscape.event.CyEventHelper;
 import org.cytoscape.model.CyNetworkManager;
 import org.cytoscape.model.subnetwork.CyRootNetworkFactory;
 import org.cytoscape.session.CyApplicationManager;
@@ -38,30 +40,45 @@
 import org.cytoscape.view.model.CyNetworkViewManager;
 import org.cytoscape.view.vizmap.VisualMappingManager;
 import org.cytoscape.work.TaskIterator;
+import org.cytoscape.work.undo.UndoSupport;
 
+
 public class NewNetworkSelectedNodesOnlyTaskFactory extends 
AbstractNetworkTaskFactory {
-    private CyNetworkManager netmgr;
-    private final CyNetworkViewManager networkViewManager;
-    private CyRootNetworkFactory crnf;
-    private CyNetworkViewFactory cnvf;
-    private CyNetworkNaming naming;
-    private VisualMappingManager vmm;
-    private final CyApplicationManager appManager;
+       private final UndoSupport undoSupport;
+       private final CyNetworkManager netmgr;
+       private final CyNetworkViewManager networkViewManager;
+       private final CyRootNetworkFactory crnf;
+       private final CyNetworkViewFactory cnvf;
+       private final CyNetworkNaming naming;
+       private final VisualMappingManager vmm;
+       private final CyApplicationManager appManager;
+       private final CyEventHelper eventHelper;
 
-    public NewNetworkSelectedNodesOnlyTaskFactory(CyRootNetworkFactory crnf, 
CyNetworkViewFactory cnvf,
-           CyNetworkManager netmgr, final CyNetworkViewManager 
networkViewManager, CyNetworkNaming naming,
-           VisualMappingManager vmm, final CyApplicationManager appManager) {
-       this.netmgr = netmgr;
-       this.networkViewManager = networkViewManager;
-       this.crnf = crnf;
-       this.cnvf = cnvf;
-       this.naming = naming;
-       this.vmm = vmm;
-       this.appManager = appManager;
-    }
+       public NewNetworkSelectedNodesOnlyTaskFactory(final UndoSupport 
undoSupport,
+                                                     final 
CyRootNetworkFactory crnf,
+                                                     final 
CyNetworkViewFactory cnvf,
+                                                     final CyNetworkManager 
netmgr,
+                                                     final 
CyNetworkViewManager networkViewManager,
+                                                     final CyNetworkNaming 
naming,
+                                                     final 
VisualMappingManager vmm,
+                                                     final 
CyApplicationManager appManager,
+                                                     final CyEventHelper 
eventHelper)
+       {
+               this.undoSupport        = undoSupport;
+               this.netmgr             = netmgr;
+               this.networkViewManager = networkViewManager;
+               this.crnf               = crnf;
+               this.cnvf               = cnvf;
+               this.naming             = naming;
+               this.vmm                = vmm;
+               this.appManager         = appManager;
+               this.eventHelper        = eventHelper;
+       }
 
-    public TaskIterator getTaskIterator() {
-       return new TaskIterator(new NewNetworkSelectedNodesOnlyTask(network, 
crnf, cnvf, netmgr, networkViewManager,
-               naming, vmm, appManager));
-    }
+       public TaskIterator getTaskIterator() {
+               return new TaskIterator(
+                       new NewNetworkSelectedNodesOnlyTask(undoSupport, 
network, crnf, cnvf, netmgr,
+                                                           networkViewManager, 
naming, vmm,
+                                                           appManager, 
eventHelper));
+       }
 }

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-08-01 16:21:54 UTC (rev 26346)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/quickstart/subnetworkbuilder/SubnetworkBuilderUtil.java
        2011-08-01 22:15:51 UTC (rev 26347)
@@ -99,8 +99,9 @@
        }
 
        Task getNewNetworkSelectedNodesOnlyTask(final CyNetwork network) {
-               return new NewNetworkSelectedNodesOnlyTask(network, crnf, cnvf, 
netmgr, networkViewManager, cyNetworkNaming,
-                               vmm, appManager);
+               return new NewNetworkSelectedNodesOnlyTask(undoSupport, 
network, crnf, cnvf, netmgr,
+                                                          networkViewManager, 
cyNetworkNaming, vmm,
+                                                          appManager, 
eventHelper);
        }
 
        Task getApplLayoutTask() {

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-08-01 16:21:54 UTC (rev 26346)
+++ 
core3/core-task-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
    2011-08-01 22:15:51 UTC (rev 26347)
@@ -237,6 +237,7 @@
 
        <bean id="newNetworkSelectedNodesEdgesTaskFactory"
                
class="org.cytoscape.task.internal.creation.NewNetworkSelectedNodesEdgesTaskFactory">
+               <constructor-arg ref="undoSupportServiceRef" />
                <constructor-arg ref="cyRootNetworkFactoryServiceRef" />
                <constructor-arg ref="cyNetworkViewFactoryServiceRef" />
                <constructor-arg ref="cyNetworkManagerServiceRef" />
@@ -244,11 +245,12 @@
                <constructor-arg ref="cyNetworkNamingServiceRef" />
                <constructor-arg ref="visualMappingManagerServiceRef" />
                <constructor-arg ref="cyApplicationManagerServiceRef" />
-
+               <constructor-arg ref="cyEventHelperRef" />
        </bean>
 
        <bean id="newNetworkSelectedNodesOnlyTaskFactory"
                
class="org.cytoscape.task.internal.creation.NewNetworkSelectedNodesOnlyTaskFactory">
+               <constructor-arg ref="undoSupportServiceRef" />
                <constructor-arg ref="cyRootNetworkFactoryServiceRef" />
                <constructor-arg ref="cyNetworkViewFactoryServiceRef" />
                <constructor-arg ref="cyNetworkManagerServiceRef" />
@@ -256,7 +258,7 @@
                <constructor-arg ref="cyNetworkNamingServiceRef" />
                <constructor-arg ref="visualMappingManagerServiceRef" />
                <constructor-arg ref="cyApplicationManagerServiceRef" />
-
+               <constructor-arg ref="cyEventHelperRef" />
        </bean>
 
        <!-- destruction -->
@@ -327,9 +329,11 @@
 
        <bean id="createNetworkViewTaskFactory"
                
class="org.cytoscape.task.internal.creation.CreateNetworkViewTaskFactory">
+               <constructor-arg ref="undoSupportServiceRef" />
                <constructor-arg ref="cyNetworkViewFactoryServiceRef" />
                <constructor-arg ref="cyNetworkViewManagerServiceRef" />
                <constructor-arg ref="cyLayoutsServiceRef" />
+               <constructor-arg ref="cyEventHelperRef" />
        </bean>
 
        <bean id="exportNetworkImageTaskFactory"

Modified: 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/creation/CreateNetworkViewTaskTest.java
===================================================================
--- 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/creation/CreateNetworkViewTaskTest.java
        2011-08-01 16:21:54 UTC (rev 26346)
+++ 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/creation/CreateNetworkViewTaskTest.java
        2011-08-01 22:15:51 UTC (rev 26347)
@@ -5,7 +5,11 @@
 import static org.mockito.Mockito.mock;
 import static org.mockito.Mockito.times;
 import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
 
+import javax.swing.undo.UndoableEditSupport;
+
+import org.cytoscape.event.CyEventHelper;
 import org.cytoscape.model.CyNetwork;
 import org.cytoscape.test.support.NetworkTestSupport;
 import org.cytoscape.test.support.NetworkViewTestSupport;
@@ -13,11 +17,12 @@
 import org.cytoscape.view.model.CyNetworkViewFactory;
 import org.cytoscape.view.model.CyNetworkViewManager;
 import org.cytoscape.work.TaskMonitor;
+import org.cytoscape.work.undo.UndoSupport;
+
 import org.junit.Test;
 
 
 public class CreateNetworkViewTaskTest {
-       
        private final NetworkTestSupport support = new NetworkTestSupport();
        private final NetworkViewTestSupport viewSupport = new 
NetworkViewTestSupport();
        
@@ -28,8 +33,15 @@
        
        @Test
        public void testCreateNetworkViewTask() throws Exception {
+               UndoableEditSupport undoableEditSupport = 
mock(UndoableEditSupport.class);
+               UndoSupport undoSupport = mock(UndoSupport.class);
+               
when(undoSupport.getUndoableEditSupport()).thenReturn(undoableEditSupport);
+                               
                final TaskMonitor tm = mock(TaskMonitor.class);
-               final CreateNetworkViewTask task = new 
CreateNetworkViewTask(networkModel, viewFactory, networkViewManager, null);
+               final CyEventHelper eventHelper = mock(CyEventHelper.class);
+               final CreateNetworkViewTask task =
+                       new CreateNetworkViewTask(undoSupport, networkModel, 
viewFactory,
+                                                 networkViewManager, null, 
eventHelper);
                
                task.run(tm);
                verify(networkViewManager, 
times(1)).addNetworkView(any(CyNetworkView.class));

Modified: 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/creation/NewNetworkSelectedNodesEdgesTaskTest.java
===================================================================
--- 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/creation/NewNetworkSelectedNodesEdgesTaskTest.java
     2011-08-01 16:21:54 UTC (rev 26346)
+++ 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/creation/NewNetworkSelectedNodesEdgesTaskTest.java
     2011-08-01 22:15:51 UTC (rev 26347)
@@ -1,7 +1,9 @@
 package org.cytoscape.task.internal.creation;
 
+
 import static org.mockito.Mockito.mock;
 
+import org.cytoscape.event.CyEventHelper;
 import org.cytoscape.model.CyNetwork;
 import org.cytoscape.model.CyNetworkManager;
 import org.cytoscape.model.CyNode;
@@ -15,11 +17,13 @@
 import org.cytoscape.view.model.CyNetworkViewManager;
 import org.cytoscape.view.vizmap.VisualMappingManager;
 import org.cytoscape.work.TaskMonitor;
+import org.cytoscape.work.undo.UndoSupport;
+
 import org.junit.Before;
 import org.junit.Test;
 
+
 public class NewNetworkSelectedNodesEdgesTaskTest {
-
        private final NetworkTestSupport support = new NetworkTestSupport();
        private final NetworkViewTestSupport viewSupport = new 
NetworkViewTestSupport();
 
@@ -38,6 +42,7 @@
 
        @Test
        public void testNewNetworkSelectedNodesEdgesTask() throws Exception {
+               final UndoSupport undoSupport = mock(UndoSupport.class);
 
                final CyNode node1 = net.addNode();
                final CyNode node2 = net.addNode();
@@ -45,11 +50,14 @@
                
                final CyTable nodeTable = net.getDefaultNodeTable();
                node1.getCyRow().set(CyNetwork.SELECTED, true);
+
+               CyEventHelper eventHelper = mock(CyEventHelper.class);
+
+               final NewNetworkSelectedNodesEdgesTask task =
+                       new NewNetworkSelectedNodesEdgesTask(undoSupport, net, 
cyroot, cnvf, netmgr,
+                                                            
networkViewManager, cyNetworkNaming,
+                                                            vmm, appManager, 
eventHelper);
                
-               
-               final NewNetworkSelectedNodesEdgesTask task = new 
NewNetworkSelectedNodesEdgesTask(net, cyroot, cnvf, netmgr,
-                               networkViewManager, cyNetworkNaming, vmm, 
appManager);
-               
                TaskMonitor tm = mock(TaskMonitor.class);
                
                // TODO how can we test this?

Modified: 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/creation/NewNetworkSelectedNodesOnlyTaskTest.java
===================================================================
--- 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/creation/NewNetworkSelectedNodesOnlyTaskTest.java
      2011-08-01 16:21:54 UTC (rev 26346)
+++ 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/creation/NewNetworkSelectedNodesOnlyTaskTest.java
      2011-08-01 22:15:51 UTC (rev 26347)
@@ -3,11 +3,15 @@
 
 import static org.junit.Assert.*;
 import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.when;
 
 import java.util.ArrayList;
 import java.util.Collection;
 import java.util.List;
 
+import javax.swing.undo.UndoableEditSupport;
+
+import org.cytoscape.event.CyEventHelper;
 import org.cytoscape.model.CyEdge;
 import org.cytoscape.model.CyNetwork;
 import org.cytoscape.model.CyNetworkManager;
@@ -21,14 +25,15 @@
 import org.cytoscape.view.model.CyNetworkViewFactory;
 import org.cytoscape.view.model.CyNetworkViewManager;
 import org.cytoscape.view.vizmap.VisualMappingManager;
+import org.cytoscape.work.undo.UndoSupport;
+
 import org.junit.Before;
 import org.junit.Test;
 
+
 public class NewNetworkSelectedNodesOnlyTaskTest {
-       
        private final NetworkTestSupport support = new NetworkTestSupport();
        private final NetworkViewTestSupport viewSupport = new 
NetworkViewTestSupport();
-
        private CyNetwork net = support.getNetwork();
        private CyRootNetworkFactory cyroot = mock(CyRootNetworkFactory.class);
        private CyNetworkViewFactory cnvf = viewSupport.getNetworkViewFactory();
@@ -38,15 +43,22 @@
        private VisualMappingManager vmm = mock(VisualMappingManager.class);
        private CyApplicationManager appManager = 
mock(CyApplicationManager.class);
 
-
        @Before
        public void setUp() throws Exception {
        }
        
        @Test
        public void testNewNetworkSelectedNodesEdgesTask() throws Exception {
-               NewNetworkSelectedNodesOnlyTask task = new 
NewNetworkSelectedNodesOnlyTask(net, cyroot, cnvf, netmgr,
-                               networkViewManager, cyNetworkNaming, vmm, 
appManager);
+               UndoableEditSupport undoableEditSupport = 
mock(UndoableEditSupport.class);
+               UndoSupport undoSupport = mock(UndoSupport.class);
+               
when(undoSupport.getUndoableEditSupport()).thenReturn(undoableEditSupport);
+
+               CyEventHelper eventHelper = mock(CyEventHelper.class);
+
+               NewNetworkSelectedNodesOnlyTask task =
+                       new NewNetworkSelectedNodesOnlyTask(undoSupport, net, 
cyroot, cnvf, netmgr,
+                                                           networkViewManager, 
cyNetworkNaming, vmm,
+                                                           appManager, 
eventHelper);
                
                final CyNode node1 = net.addNode();
                final CyNode node2 = net.addNode();

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