Author: scooter
Date: 2012-04-25 21:41:40 -0700 (Wed, 25 Apr 2012)
New Revision: 29013

Modified:
   
core3/impl/trunk/group-impl/src/main/java/org/cytoscape/group/internal/CyGroupFactoryImpl.java
   
core3/impl/trunk/group-impl/src/main/java/org/cytoscape/group/internal/CyGroupImpl.java
Log:
Add methods to support session loading


Modified: 
core3/impl/trunk/group-impl/src/main/java/org/cytoscape/group/internal/CyGroupFactoryImpl.java
===================================================================
--- 
core3/impl/trunk/group-impl/src/main/java/org/cytoscape/group/internal/CyGroupFactoryImpl.java
      2012-04-26 04:40:49 UTC (rev 29012)
+++ 
core3/impl/trunk/group-impl/src/main/java/org/cytoscape/group/internal/CyGroupFactoryImpl.java
      2012-04-26 04:41:40 UTC (rev 29013)
@@ -79,7 +79,8 @@
         * {@inheritDoc}
         */
        @Override
-       public CyGroup createGroup(CyNetwork network, List<CyNode> nodes, 
List<CyEdge> edges, boolean register) {
+       public CyGroup createGroup(CyNetwork network, List<CyNode> nodes, 
+                                  List<CyEdge> edges, boolean register) {
                return createGroup(network, null, nodes, edges, register);
        }
 
@@ -87,10 +88,22 @@
         * {@inheritDoc}
         */
        @Override
-       public CyGroup createGroup(CyNetwork network, CyNode node, List<CyNode> 
nodes, List<CyEdge> edges, boolean register) {
+       public CyGroup createGroup(CyNetwork network, CyNode node, 
+                                  List<CyNode> nodes, List<CyEdge> edges, 
boolean register) {
                CyGroup group = new CyGroupImpl(help, mgr, network, node, 
nodes, edges);
                if (register)
                        mgr.addGroup(group);
                return group;
        }
+
+       /**
+        * {@inheritDoc}
+        */
+       @Override
+       public CyGroup createGroup(CyNetwork network, CyNode node, boolean 
register) {
+               CyGroup group = new CyGroupImpl(help, mgr, network, node, null, 
null);
+               if (register)
+                       mgr.addGroup(group);
+               return group;
+       }
 }

Modified: 
core3/impl/trunk/group-impl/src/main/java/org/cytoscape/group/internal/CyGroupImpl.java
===================================================================
--- 
core3/impl/trunk/group-impl/src/main/java/org/cytoscape/group/internal/CyGroupImpl.java
     2012-04-26 04:40:49 UTC (rev 29012)
+++ 
core3/impl/trunk/group-impl/src/main/java/org/cytoscape/group/internal/CyGroupImpl.java
     2012-04-26 04:41:40 UTC (rev 29013)
@@ -137,9 +137,19 @@
                        }
                }
 
-               // Create the subnetwork
-               CySubNetwork groupNet = rootNetwork.addSubNetwork(nodes, edges);
-               groupNode.setNetworkPointer(groupNet);
+               CySubNetwork np = (CySubNetwork)groupNode.getNetworkPointer();
+               // If we already have a network pointer and we didn't get
+               // nodes or edges, and the network pointer points to the same
+               // root network, then it may have been provided by the session 
loader
+               if (np != null && nodeProvided && 
+                   edges.size() == 0 && nodes.size() == 0 &&
+                   np.getRootNetwork().equals(this.rootNetwork)) {
+                       CySubNetwork groupNet = np;
+               } else {
+                       // Create the subnetwork
+                       CySubNetwork groupNet = 
rootNetwork.addSubNetwork(nodes, edges);
+                       groupNode.setNetworkPointer(groupNet);
+               }
 
                // Update our meta-edges
                updateMetaEdges(true);
@@ -192,8 +202,7 @@
        /**
         * @see org.cytoscape.group.CyGroup#addNode()
         */
-       @Override
-       public synchronized void addNode(CyNode node) {
+       private synchronized void addNode(CyNode node) {
                if (!rootNetwork.containsNode(node))
                        throwIllegalArgumentException("Can only add a node in 
the same network tree");
                getGroupNetwork().addNode(node);
@@ -210,8 +219,7 @@
        /**
         * @see org.cytoscape.group.CyGroup#addInternalEdge()
         */
-       @Override
-       public synchronized void addInternalEdge(CyEdge edge) {
+       private synchronized void addInternalEdge(CyEdge edge) {
                if (!rootNetwork.containsEdge(edge))
                        throwIllegalArgumentException("Can only add an edge in 
the same network tree");
                getGroupNetwork().addEdge(edge);
@@ -222,8 +230,7 @@
        /**
         * @see org.cytoscape.group.CyGroup#addExternalEdge()
         */
-       @Override
-       public synchronized void addExternalEdge(CyEdge edge) {
+       protected synchronized void addExternalEdge(CyEdge edge) {
                if (!rootNetwork.containsEdge(edge))
                        throwIllegalArgumentException("Can only add an edge in 
the same network tree");
                if (!externalEdges.contains(edge))
@@ -638,7 +645,7 @@
                        metaEdges.add(newEdge);
                }
 
-               for (CyEdge edge: newEdges) { 
metaPartner.addExternalEdge(edge); }
+               for (CyEdge edge: newEdges) { 
((CyGroupImpl)metaPartner).addExternalEdge(edge); }
        }
 
        private CyEdge createMetaEdge(CyEdge edge, CyNode node, CyNode 
groupNode) {

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