Author: clopes
Date: 2012-09-11 14:46:55 -0700 (Tue, 11 Sep 2012)
New Revision: 30344

Modified:
   
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/CyActivator.java
   
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/CloneNetworkTask.java
   
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/CloneNetworkTaskFactoryImpl.java
Log:
Changes how nested networks are cloned when they point to the network to be 
cloned, so the circular reference is maintained in the new network.

Modified: 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/CyActivator.java
===================================================================
--- 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/CyActivator.java
  2012-09-11 16:58:37 UTC (rev 30343)
+++ 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/CyActivator.java
  2012-09-11 21:46:55 UTC (rev 30344)
@@ -261,7 +261,7 @@
                UnHideAllNodesTaskFactoryImpl unHideAllNodesTaskFactory = new 
UnHideAllNodesTaskFactoryImpl(undoSupportServiceRef,cyEventHelperRef,visualMappingManagerServiceRef);
                UnHideAllEdgesTaskFactoryImpl unHideAllEdgesTaskFactory = new 
UnHideAllEdgesTaskFactoryImpl(undoSupportServiceRef,cyEventHelperRef,visualMappingManagerServiceRef);
                NewEmptyNetworkTaskFactoryImpl newEmptyNetworkTaskFactory = new 
NewEmptyNetworkTaskFactoryImpl(cyNetworkFactoryServiceRef,cyNetworkViewFactoryServiceRef,cyNetworkManagerServiceRef,cyNetworkViewManagerServiceRef,cyNetworkNamingServiceRef,synchronousTaskManagerServiceRef,visualMappingManagerServiceRef);
-               CloneNetworkTaskFactoryImpl cloneNetworkTaskFactory = new 
CloneNetworkTaskFactoryImpl(cyNetworkManagerServiceRef,cyNetworkViewManagerServiceRef,visualMappingManagerServiceRef,cyNetworkFactoryServiceRef,cyNetworkViewFactoryServiceRef,cyNetworkNamingServiceRef,cyApplicationManagerServiceRef,cyNetworkTableManagerServiceRef,rootNetworkManagerServiceRef);
+               CloneNetworkTaskFactoryImpl cloneNetworkTaskFactory = new 
CloneNetworkTaskFactoryImpl(cyNetworkManagerServiceRef,cyNetworkViewManagerServiceRef,visualMappingManagerServiceRef,cyNetworkFactoryServiceRef,cyNetworkViewFactoryServiceRef,cyNetworkNamingServiceRef,cyApplicationManagerServiceRef,cyNetworkTableManagerServiceRef,rootNetworkManagerServiceRef,cyGroupManager,cyGroupFactory);
                NewNetworkSelectedNodesEdgesTaskFactoryImpl 
newNetworkSelectedNodesEdgesTaskFactory = new 
NewNetworkSelectedNodesEdgesTaskFactoryImpl(undoSupportServiceRef,cyRootNetworkFactoryServiceRef,cyNetworkViewFactoryServiceRef,cyNetworkManagerServiceRef,cyNetworkViewManagerServiceRef,cyNetworkNamingServiceRef,visualMappingManagerServiceRef,cyApplicationManagerServiceRef,cyEventHelperRef);
                NewNetworkSelectedNodesOnlyTaskFactoryImpl 
newNetworkSelectedNodesOnlyTaskFactory = new 
NewNetworkSelectedNodesOnlyTaskFactoryImpl(undoSupportServiceRef,cyRootNetworkFactoryServiceRef,cyNetworkViewFactoryServiceRef,cyNetworkManagerServiceRef,cyNetworkViewManagerServiceRef,cyNetworkNamingServiceRef,visualMappingManagerServiceRef,cyApplicationManagerServiceRef,cyEventHelperRef);
                DestroyNetworkTaskFactoryImpl destroyNetworkTaskFactory = new 
DestroyNetworkTaskFactoryImpl(cyNetworkManagerServiceRef);

Modified: 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/CloneNetworkTask.java
===================================================================
--- 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/CloneNetworkTask.java
    2012-09-11 16:58:37 UTC (rev 30343)
+++ 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/CloneNetworkTask.java
    2012-09-11 21:46:55 UTC (rev 30344)
@@ -35,6 +35,8 @@
 import java.util.WeakHashMap;
 
 import org.cytoscape.application.CyApplicationManager;
+import org.cytoscape.group.CyGroupFactory;
+import org.cytoscape.group.CyGroupManager;
 import org.cytoscape.model.CyColumn;
 import org.cytoscape.model.CyEdge;
 import org.cytoscape.model.CyIdentifiable;
@@ -71,6 +73,8 @@
        private final CyApplicationManager appMgr;
        private final CyNetworkTableManager netTableMgr;
        private final CyRootNetworkManager rootNetMgr;
+       private final CyGroupManager groupMgr;
+       private final CyGroupFactory groupFactory;
 
        public CloneNetworkTask(final CyNetwork net,
                                                        final CyNetworkManager 
netmgr,
@@ -81,7 +85,9 @@
                                                        final CyNetworkNaming 
naming,
                                                        final 
CyApplicationManager appMgr,
                                                        final 
CyNetworkTableManager netTableMgr,
-                                                       final 
CyRootNetworkManager rootNetMgr) {
+                                                       final 
CyRootNetworkManager rootNetMgr,
+                                                       final CyGroupManager 
groupMgr,
+                                                       final CyGroupFactory 
groupFactory) {
                super(net, netmgr, networkViewManager);
 
                this.vmm = vmm;
@@ -91,6 +97,8 @@
                this.appMgr = appMgr;
                this.netTableMgr = netTableMgr;
                this.rootNetMgr = rootNetMgr;
+               this.groupMgr = groupMgr;
+               this.groupFactory = groupFactory;
        }
 
        public void run(TaskMonitor tm) {
@@ -143,7 +151,9 @@
                        orig2NewNodeMap.put(origNode, newNode);
                        new2OrigNodeMap.put(newNode, origNode);
                        cloneRow(newNet, CyNode.class, origNet.getRow(origNode, 
CyNetwork.LOCAL_ATTRS), newNet.getRow(newNode, CyNetwork.LOCAL_ATTRS));
-                       newNode.setNetworkPointer(origNode.getNetworkPointer());
+                       
+                       if (!groupMgr.isGroup(origNode, origNet))
+                               cloneNetworkPointer(origNet, newNet, newNode, 
origNode.getNetworkPointer());
                }
        }
 
@@ -157,6 +167,18 @@
                }
        }
 
+       private void cloneNetworkPointer(final CyNetwork origNet, final 
CyNetwork newNet, final CyNode newNode,
+                       CyNetwork netPointer) {
+               if (netPointer != null) {
+                       // If the referenced network is the original network 
itself, do the same with the new network,
+                       // rather than pointing to the original one.
+                       if (origNet.equals(netPointer))
+                               netPointer = newNet;
+                       
+                       newNode.setNetworkPointer(netPointer);
+               }
+       }
+       
        private void addColumns(final CyNetwork origNet,
                                                        final CyNetwork newNet, 
                                                        final Class<? extends 
CyIdentifiable> tableType,

Modified: 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/CloneNetworkTaskFactoryImpl.java
===================================================================
--- 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/CloneNetworkTaskFactoryImpl.java
 2012-09-11 16:58:37 UTC (rev 30343)
+++ 
core3/impl/trunk/core-task-impl/src/main/java/org/cytoscape/task/internal/creation/CloneNetworkTaskFactoryImpl.java
 2012-09-11 21:46:55 UTC (rev 30344)
@@ -30,6 +30,8 @@
 package org.cytoscape.task.internal.creation;
 
 import org.cytoscape.application.CyApplicationManager;
+import org.cytoscape.group.CyGroupFactory;
+import org.cytoscape.group.CyGroupManager;
 import org.cytoscape.model.CyNetwork;
 import org.cytoscape.model.CyNetworkFactory;
 import org.cytoscape.model.CyNetworkManager;
@@ -53,6 +55,8 @@
     private final CyApplicationManager appMgr;
     private final CyNetworkTableManager netTableMgr;
     private final CyRootNetworkManager rootNetMgr;
+    private final CyGroupManager groupMgr;
+       private final CyGroupFactory groupFactory;
 
     public CloneNetworkTaskFactoryImpl(final CyNetworkManager networkMgr,
                                                                   final 
CyNetworkViewManager networkViewMgr,
@@ -62,7 +66,9 @@
                                                                   final 
CyNetworkNaming naming,
                                                                   final 
CyApplicationManager appMgr,
                                                                   final 
CyNetworkTableManager netTableMgr,
-                                                                  final 
CyRootNetworkManager rootNetMgr) {
+                                                                  final 
CyRootNetworkManager rootNetMgr,
+                                                                  final 
CyGroupManager groupMgr,
+                                                                  final 
CyGroupFactory groupFactory) {
        this.networkMgr = networkMgr;
                this.networkViewMgr = networkViewMgr;
                this.vmm = vmm;
@@ -72,10 +78,12 @@
                this.appMgr = appMgr;
                this.netTableMgr = netTableMgr;
                this.rootNetMgr = rootNetMgr;
+               this.groupMgr = groupMgr;
+               this.groupFactory = groupFactory;
     }
 
     public TaskIterator createTaskIterator(CyNetwork network) {
        return new TaskIterator(2,new CloneNetworkTask(network, networkMgr, 
networkViewMgr, vmm, netFactory, 
-                       netViewFactory, naming, appMgr, netTableMgr, 
rootNetMgr));
+                       netViewFactory, naming, appMgr, netTableMgr, 
rootNetMgr, groupMgr, groupFactory));
     }
 }

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