Author: clopes
Date: 2012-04-11 15:05:19 -0700 (Wed, 11 Apr 2012)
New Revision: 28798

Added:
   
core3/impl/trunk/editor-impl/src/main/java/org/cytoscape/editor/internal/DeleteNestedNetworkTask.java
   
core3/impl/trunk/editor-impl/src/main/java/org/cytoscape/editor/internal/DeleteNestedNetworkTaskFactory.java
Modified:
   
core3/api/trunk/presentation-api/src/main/java/org/cytoscape/view/presentation/property/BasicVisualLexicon.java
   
core3/api/trunk/presentation-api/src/test/java/org/cytoscape/view/presentation/BasicVisualLexiconTest.java
   
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/DNodeView.java
   core3/impl/trunk/editor-impl/pom.xml
   
core3/impl/trunk/editor-impl/src/main/java/org/cytoscape/editor/internal/AddNestedNetworkTask.java
   
core3/impl/trunk/editor-impl/src/main/java/org/cytoscape/editor/internal/AddNestedNetworkTaskFactory.java
   
core3/impl/trunk/editor-impl/src/main/java/org/cytoscape/editor/internal/CyActivator.java
   
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleNodeAttribute.java
Log:
Some changes that prevents network pointers that represent group-networks from 
being handled as regular nested networks:
- Adds NODE_NESTED_NETWORK_IMAGE_VISIBLE visual property.
- AddNestedNetworkTask sets the new visual property to the target node as a 
bypass.
- XGMML parser does the same when recreating nested networks from 2.x sessions.
- AddNestedNetworkTaskFactory is disabled if the target node already has an 
unregistered network pointer, so it does not change a pointer set by Groups.
- DNodeView only displays the standard nested network image if the node has the 
new visual property as a bypass and its value is TRUE.
- Adds new task that deletes network pointers--enabled only if the network 
pointer is registered, so it does not delete group-networks.

Modified: 
core3/api/trunk/presentation-api/src/main/java/org/cytoscape/view/presentation/property/BasicVisualLexicon.java
===================================================================
--- 
core3/api/trunk/presentation-api/src/main/java/org/cytoscape/view/presentation/property/BasicVisualLexicon.java
     2012-04-11 20:17:39 UTC (rev 28797)
+++ 
core3/api/trunk/presentation-api/src/main/java/org/cytoscape/view/presentation/property/BasicVisualLexicon.java
     2012-04-11 22:05:19 UTC (rev 28798)
@@ -108,6 +108,9 @@
 
        public static final VisualProperty<Boolean> NODE_SELECTED = new 
BooleanVisualProperty(false, "NODE_SELECTED",
                        "Node Selected", true, CyNode.class);
+       
+       public static final VisualProperty<Boolean> 
NODE_NESTED_NETWORK_IMAGE_VISIBLE = new BooleanVisualProperty(false,
+                       "NODE_NESTED_NETWORK_IMAGE_VISIBLE", "Nested Network 
Image Visible", CyNode.class);
 
        // ///// Edge VP ///////
        public static final VisualProperty<Paint> EDGE_PAINT = new 
PaintVisualProperty(Color.gray, PAINT_RANGE,
@@ -275,78 +278,67 @@
                addVisualProperty(NETWORK_SCALE_FACTOR, NETWORK);
                addVisualProperty(NETWORK_TITLE, NETWORK);
                addVisualProperty(NETWORK_BACKGROUND_PAINT, NETWORK);
-               addVisualProperty(NETWORK_WIDTH, NETWORK_SIZE);
-               addVisualProperty(NETWORK_HEIGHT, NETWORK_SIZE);
                addVisualProperty(NETWORK_CENTER_X_LOCATION, NETWORK);
                addVisualProperty(NETWORK_CENTER_Y_LOCATION, NETWORK);
-
+               addVisualProperty(NETWORK_CENTER_Z_LOCATION, NETWORK);
+               
+               // Level 2: Network-related VP
+               addVisualProperty(NETWORK_WIDTH, NETWORK_SIZE);
+               addVisualProperty(NETWORK_HEIGHT, NETWORK_SIZE);
+               addVisualProperty(NETWORK_DEPTH, NETWORK_SIZE);
+               
                // Level 2: Children of node VP
                addVisualProperty(NODE_PAINT, NODE);
                addVisualProperty(NODE_SIZE, NODE);
+               addVisualProperty(NODE_SHAPE, NODE);
                addVisualProperty(NODE_VISIBLE, NODE);
                addVisualProperty(NODE_SELECTED, NODE);
-
-               // Level 2: Children of edge VP
-               addVisualProperty(EDGE_PAINT, EDGE);
-               addVisualProperty(EDGE_VISIBLE, EDGE);
-               addVisualProperty(EDGE_SELECTED, EDGE);
-               addVisualProperty(EDGE_WIDTH, EDGE);
-               addVisualProperty(EDGE_LABEL, EDGE);
-
-               // Level 3 - 4: Node-related VP
+               addVisualProperty(NODE_NESTED_NETWORK_IMAGE_VISIBLE, NODE);
                addVisualProperty(NODE_X_LOCATION, NODE);
                addVisualProperty(NODE_Y_LOCATION, NODE);
-               addVisualProperty(NODE_LABEL, NODE);
-
-               addVisualProperty(NODE_FILL_COLOR, NODE_PAINT);
-               addVisualProperty(NODE_LABEL_COLOR, NODE_PAINT);
-               addVisualProperty(NODE_WIDTH, NODE_SIZE);
-               addVisualProperty(NODE_HEIGHT, NODE_SIZE);
-
-               // Level 3: Edge-related VP
-               addVisualProperty(EDGE_LABEL_COLOR, EDGE_PAINT);
-
                addVisualProperty(NODE_Z_LOCATION, NODE);
-               addVisualProperty(NODE_DEPTH, NODE_SIZE);
-
-               addVisualProperty(NETWORK_CENTER_Z_LOCATION, NETWORK);
-               addVisualProperty(NETWORK_DEPTH, NETWORK_SIZE);
-
-               addVisualProperty(NODE_SHAPE, NODE);
-
-               addVisualProperty(NODE_SELECTED_PAINT, NODE_PAINT);
+               addVisualProperty(NODE_LABEL, NODE);
                addVisualProperty(NODE_BORDER_WIDTH, NODE);
                addVisualProperty(NODE_BORDER_LINE_TYPE, NODE);
                addVisualProperty(NODE_TRANSPARENCY, NODE);
                addVisualProperty(NODE_BORDER_TRANSPARENCY, NODE);
-
-               addVisualProperty(NODE_BORDER_PAINT, NODE_PAINT);
-               addVisualProperty(NODE_TOOLTIP, NODE);
-               addVisualProperty(NODE_LABEL_FONT_SIZE, NODE_SIZE);
-
                addVisualProperty(NODE_LABEL_FONT_FACE, NODE);
                addVisualProperty(NODE_LABEL_TRANSPARENCY, NODE);
+               addVisualProperty(NODE_TOOLTIP, NODE);
 
+               // Level 2: Children of edge VP
+               addVisualProperty(EDGE_PAINT, EDGE);
+               addVisualProperty(EDGE_VISIBLE, EDGE);
+               addVisualProperty(EDGE_SELECTED, EDGE);
+               addVisualProperty(EDGE_WIDTH, EDGE);
+               addVisualProperty(EDGE_LABEL, EDGE);
                addVisualProperty(EDGE_LINE_TYPE, EDGE);
-
                addVisualProperty(EDGE_TOOLTIP, EDGE);
-
                addVisualProperty(EDGE_LABEL_FONT_FACE, EDGE);
                addVisualProperty(EDGE_LABEL_FONT_SIZE, EDGE);
                addVisualProperty(EDGE_LABEL_TRANSPARENCY, EDGE);
+               addVisualProperty(EDGE_TRANSPARENCY, EDGE);
+               addVisualProperty(EDGE_SOURCE_ARROW_SHAPE, EDGE);
+               addVisualProperty(EDGE_TARGET_ARROW_SHAPE, EDGE);
+               addVisualProperty(EDGE_BEND, EDGE);
 
+               // Level 3 - 4: Node-related VP
+               addVisualProperty(NODE_FILL_COLOR, NODE_PAINT);
+               addVisualProperty(NODE_SELECTED_PAINT, NODE_PAINT);
+               addVisualProperty(NODE_BORDER_PAINT, NODE_PAINT);
+               addVisualProperty(NODE_LABEL_COLOR, NODE_PAINT);
+               addVisualProperty(NODE_LABEL_FONT_SIZE, NODE_SIZE);
+               addVisualProperty(NODE_WIDTH, NODE_SIZE);
+               addVisualProperty(NODE_HEIGHT, NODE_SIZE);
+               addVisualProperty(NODE_DEPTH, NODE_SIZE);
+
+               // Level 3: Edge-related VP
+               addVisualProperty(EDGE_LABEL_COLOR, EDGE_PAINT);
                addVisualProperty(EDGE_SELECTED_PAINT, EDGE_PAINT);
                addVisualProperty(EDGE_UNSELECTED_PAINT, EDGE_PAINT);
                addVisualProperty(EDGE_STROKE_SELECTED_PAINT, 
EDGE_SELECTED_PAINT);
                addVisualProperty(EDGE_STROKE_UNSELECTED_PAINT, 
EDGE_UNSELECTED_PAINT);
 
-               addVisualProperty(EDGE_TRANSPARENCY, EDGE);
-
-               addVisualProperty(EDGE_SOURCE_ARROW_SHAPE, EDGE);
-               addVisualProperty(EDGE_TARGET_ARROW_SHAPE, EDGE);
-               
-               addVisualProperty(EDGE_BEND, EDGE);
-
                createLookupMap();
        }
 
@@ -422,8 +414,6 @@
                addIdentifierMapping(CyEdge.class, "edgeTargetArrowShape", 
EDGE_TARGET_ARROW_SHAPE);
 
                addIdentifierMapping(CyEdge.class, "edgeBend", EDGE_BEND);
-               
-               // TODO add more mappings!
        }
 
        @Override

Modified: 
core3/api/trunk/presentation-api/src/test/java/org/cytoscape/view/presentation/BasicVisualLexiconTest.java
===================================================================
--- 
core3/api/trunk/presentation-api/src/test/java/org/cytoscape/view/presentation/BasicVisualLexiconTest.java
  2012-04-11 20:17:39 UTC (rev 28797)
+++ 
core3/api/trunk/presentation-api/src/test/java/org/cytoscape/view/presentation/BasicVisualLexiconTest.java
  2012-04-11 22:05:19 UTC (rev 28798)
@@ -46,7 +46,7 @@
 
        @Test
        public void test2DLexicon() throws Exception {
-               assertEquals(57, richLex.getAllVisualProperties().size());
+               assertEquals(58, richLex.getAllVisualProperties().size());
        }
 
        @Test
@@ -71,7 +71,7 @@
                
assertEquals(richLex.getAllDescendants(BasicVisualLexicon.NODE_PAINT).size(), 
nodePaintChild.size());
 
                Collection<VisualProperty<?>> nodeChildren = 
richLex.getAllDescendants(BasicVisualLexicon.NODE);
-               assertEquals(24, nodeChildren.size());
+               assertEquals(25, nodeChildren.size());
 
                Collection<VisualProperty<?>> edgeChildren = 
richLex.getAllDescendants(BasicVisualLexicon.EDGE);
                assertEquals(19, edgeChildren.size());

Modified: 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/DNodeView.java
===================================================================
--- 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/DNodeView.java
      2012-04-11 20:17:39 UTC (rev 28797)
+++ 
core3/impl/trunk/ding-impl/ding-presentation-impl/src/main/java/org/cytoscape/ding/impl/DNodeView.java
      2012-04-11 22:05:19 UTC (rev 28798)
@@ -1033,11 +1033,16 @@
        TexturePaint getNestedNetworkTexturePaint() {
                synchronized (graphView.m_lock) {
                        ++nestedNetworkPaintingDepth;
+                       
                        try {
-                               if (nestedNetworkPaintingDepth > 1 || 
getModel().getNetworkPointer() == null
-                                               || !nestedNetworkVisible)
+                               if (nestedNetworkPaintingDepth > 1 || 
getModel().getNetworkPointer() == null || !nestedNetworkVisible)
                                        return null;
 
+                               final Boolean netImgVisible = 
getVisualProperty(BasicVisualLexicon.NODE_NESTED_NETWORK_IMAGE_VISIBLE);
+                               
+                               if (!Boolean.TRUE.equals(netImgVisible))
+                                       return null;
+                               
                                final double IMAGE_WIDTH = getWidth() * 
NESTED_IMAGE_SCALE_FACTOR;
                                final double IMAGE_HEIGHT = getHeight() * 
NESTED_IMAGE_SCALE_FACTOR;
 

Modified: core3/impl/trunk/editor-impl/pom.xml
===================================================================
--- core3/impl/trunk/editor-impl/pom.xml        2012-04-11 20:17:39 UTC (rev 
28797)
+++ core3/impl/trunk/editor-impl/pom.xml        2012-04-11 22:05:19 UTC (rev 
28798)
@@ -104,6 +104,10 @@
                        <artifactId>core-task-api</artifactId>
                </dependency>
                <dependency>
+                       <groupId>org.cytoscape</groupId>
+                       <artifactId>vizmap-gui-api</artifactId>
+               </dependency>
+               <dependency>
                        <groupId>junit</groupId>
                        <artifactId>junit</artifactId>
                        <scope>test</scope>

Modified: 
core3/impl/trunk/editor-impl/src/main/java/org/cytoscape/editor/internal/AddNestedNetworkTask.java
===================================================================
--- 
core3/impl/trunk/editor-impl/src/main/java/org/cytoscape/editor/internal/AddNestedNetworkTask.java
  2012-04-11 20:17:39 UTC (rev 28797)
+++ 
core3/impl/trunk/editor-impl/src/main/java/org/cytoscape/editor/internal/AddNestedNetworkTask.java
  2012-04-11 22:05:19 UTC (rev 28798)
@@ -1,26 +1,28 @@
 package org.cytoscape.editor.internal;
 
 
-
 import java.util.ArrayList;
 
+import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyNetworkManager;
+import org.cytoscape.model.CyNode;
 import org.cytoscape.task.AbstractNodeViewTask;
 import org.cytoscape.view.model.CyNetworkView;
 import org.cytoscape.view.model.View;
-import org.cytoscape.model.CyNode;
-import org.cytoscape.model.CyNetwork;
-import org.cytoscape.model.CyNetworkManager;
+import org.cytoscape.view.presentation.property.BasicVisualLexicon;
+import org.cytoscape.view.vizmap.gui.SelectedVisualStyleManager;
 import org.cytoscape.work.ProvidesTitle;
 import org.cytoscape.work.TaskMonitor;
 import org.cytoscape.work.Tunable;
 import org.cytoscape.work.util.ListSingleSelection;
-
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 
 public class AddNestedNetworkTask extends AbstractNodeViewTask {
 
+       private final SelectedVisualStyleManager svsmMgr;
+       
        private static final Logger logger = 
LoggerFactory.getLogger(AddNestedNetworkTask.class);
 
        @Tunable(description="Network")
@@ -31,16 +33,27 @@
                return "Choose Network for Node";
        }
        
-       public AddNestedNetworkTask(View<CyNode> nv, CyNetworkView view, 
CyNetworkManager mgr) {
+       public AddNestedNetworkTask(final View<CyNode> nv,
+                                                               final 
CyNetworkView view,
+                                                               final 
CyNetworkManager mgr,
+                                                               final 
SelectedVisualStyleManager svsmMgr) {
                super(nv,view);
+               this.svsmMgr = svsmMgr;
+               
                nestedNetwork = new ListSingleSelection<CyNetwork>(new 
ArrayList<CyNetwork>(mgr.getNetworkSet()));
+               final CyNetwork netPointer = 
nodeView.getModel().getNetworkPointer();
+               
+               if (netPointer != null)
+                       nestedNetwork.setSelectedValue(netPointer);
        }
 
        @Override
        public void run(TaskMonitor tm) throws Exception {
-       
-               CyNode n = nodeView.getModel();
-               n.setNetworkPointer( nestedNetwork.getSelectedValue() );
+               final CyNode n = nodeView.getModel();
+               n.setNetworkPointer(nestedNetwork.getSelectedValue());
+               
+               
nodeView.setLockedValue(BasicVisualLexicon.NODE_NESTED_NETWORK_IMAGE_VISIBLE, 
Boolean.TRUE);
+               svsmMgr.getCurrentVisualStyle().apply(netView);
                netView.updateView();
        }
 }

Modified: 
core3/impl/trunk/editor-impl/src/main/java/org/cytoscape/editor/internal/AddNestedNetworkTaskFactory.java
===================================================================
--- 
core3/impl/trunk/editor-impl/src/main/java/org/cytoscape/editor/internal/AddNestedNetworkTaskFactory.java
   2012-04-11 20:17:39 UTC (rev 28797)
+++ 
core3/impl/trunk/editor-impl/src/main/java/org/cytoscape/editor/internal/AddNestedNetworkTaskFactory.java
   2012-04-11 22:05:19 UTC (rev 28798)
@@ -1,23 +1,39 @@
 package org.cytoscape.editor.internal;
 
+import org.cytoscape.model.CyNetwork;
 import org.cytoscape.model.CyNetworkManager;
 import org.cytoscape.model.CyNode;
 import org.cytoscape.task.AbstractNodeViewTaskFactory;
 import org.cytoscape.view.model.CyNetworkView;
 import org.cytoscape.view.model.View;
+import org.cytoscape.view.vizmap.gui.SelectedVisualStyleManager;
 import org.cytoscape.work.TaskIterator;
 
 public class AddNestedNetworkTaskFactory extends AbstractNodeViewTaskFactory {
        final CyNetworkManager netMgr;
-       
-       public AddNestedNetworkTaskFactory(CyNetworkManager netMgr) {
+       final SelectedVisualStyleManager svsmMgr;
+
+       public AddNestedNetworkTaskFactory(final CyNetworkManager netMgr, final 
SelectedVisualStyleManager svsmMgr) {
                this.netMgr = netMgr;
+               this.svsmMgr = svsmMgr;
        }
-       
+
        @Override
-       public TaskIterator createTaskIterator(View<CyNode> nodeView,
-                       CyNetworkView networkView) {
-               return new TaskIterator(new AddNestedNetworkTask(nodeView, 
networkView, netMgr));
-               }
+       public TaskIterator createTaskIterator(View<CyNode> nodeView, 
CyNetworkView networkView) {
+               return new TaskIterator(new AddNestedNetworkTask(nodeView, 
networkView, netMgr, svsmMgr));
+       }
 
+       @Override
+       public boolean isReady(View<CyNode> nodeView, CyNetworkView 
networkView) {
+               if (!super.isReady(nodeView, networkView))
+                       return false;
+               
+               // Check if the network is registered.
+               // Nodes with unregistered network pointers should be ignored 
because they are probably being used as something
+               // else other than regular nested networks (e.g. groups).
+               final CyNode node  = nodeView.getModel();
+               final CyNetwork netPointer = node.getNetworkPointer();
+               
+               return netPointer == null || 
netMgr.networkExists(netPointer.getSUID());
+       }
 }

Modified: 
core3/impl/trunk/editor-impl/src/main/java/org/cytoscape/editor/internal/CyActivator.java
===================================================================
--- 
core3/impl/trunk/editor-impl/src/main/java/org/cytoscape/editor/internal/CyActivator.java
   2012-04-11 20:17:39 UTC (rev 28797)
+++ 
core3/impl/trunk/editor-impl/src/main/java/org/cytoscape/editor/internal/CyActivator.java
   2012-04-11 22:05:19 UTC (rev 28798)
@@ -1,71 +1,63 @@
 
 
-
-
 package org.cytoscape.editor.internal;
 
-import org.cytoscape.application.swing.CySwingApplication;
+import java.util.Properties;
+
 import org.cytoscape.event.CyEventHelper;
-import org.cytoscape.task.creation.NewEmptyNetworkViewFactory;
 import org.cytoscape.model.CyNetworkManager;
-import org.cytoscape.model.subnetwork.CyRootNetworkManager;
-
-import org.cytoscape.editor.internal.SIFInterpreterTaskFactory;
-
-import org.cytoscape.application.swing.CytoPanelComponent;
-import 
org.cytoscape.application.swing.events.CytoPanelComponentSelectedListener;
+import org.cytoscape.service.util.AbstractCyActivator;
 import org.cytoscape.task.NetworkViewLocationTaskFactory;
 import org.cytoscape.task.NetworkViewTaskFactory;
 import org.cytoscape.task.NodeViewTaskFactory;
 import org.cytoscape.view.vizmap.VisualMappingManager;
-import org.cytoscape.application.events.SetCurrentNetworkViewListener;
-
-
+import org.cytoscape.view.vizmap.gui.SelectedVisualStyleManager;
 import org.osgi.framework.BundleContext;
 
-import org.cytoscape.service.util.AbstractCyActivator;
 
-import java.util.Properties;
-import javax.swing.ImageIcon;
-
-
-
 public class CyActivator extends AbstractCyActivator {
+       
        public CyActivator() {
                super();
        }
 
-
        public void start(BundleContext bc) {
-
                CyNetworkManager cyNetworkManagerServiceRef = 
getService(bc,CyNetworkManager.class);
                CyEventHelper cyEventHelperServiceRef = 
getService(bc,CyEventHelper.class);
                VisualMappingManager vmm = 
getService(bc,VisualMappingManager.class);
+               SelectedVisualStyleManager selectedVisualStyleManagerServiceRef 
= getService(bc,SelectedVisualStyleManager.class);
 
-
                SIFInterpreterTaskFactory sifInterpreterTaskFactory = new 
SIFInterpreterTaskFactory();
                NetworkViewLocationTaskFactory networkViewLocationTaskFactory = 
new AddNodeTaskFactory(cyEventHelperServiceRef, vmm);
-               NodeViewTaskFactory addNestedNetworkTaskFactory = new 
AddNestedNetworkTaskFactory(cyNetworkManagerServiceRef);
+               NodeViewTaskFactory addNestedNetworkTaskFactory = new 
AddNestedNetworkTaskFactory(cyNetworkManagerServiceRef, 
selectedVisualStyleManagerServiceRef);
+               NodeViewTaskFactory deleteNestedNetworkTaskFactory = new 
DeleteNestedNetworkTaskFactory(cyNetworkManagerServiceRef, 
selectedVisualStyleManagerServiceRef);
                        
                Properties sifInterpreterTaskFactoryProps = new Properties();
-               
sifInterpreterTaskFactoryProps.setProperty("enableFor","networkAndView");
+               sifInterpreterTaskFactoryProps.setProperty("enableFor", 
"networkAndView");
                // Setting preferredAction to OPEN registers this service for 
double clicks on
                // the network canvas, something we don't want right now for 
this task!
                
//sifInterpreterTaskFactoryProps.setProperty("preferredAction","OPEN");
-               
sifInterpreterTaskFactoryProps.setProperty("preferredMenu","Tools");
-               
sifInterpreterTaskFactoryProps.setProperty("menuGravity","5.0f");
-               sifInterpreterTaskFactoryProps.setProperty("title","SIF 
Interpreter");
-               
registerService(bc,sifInterpreterTaskFactory,NetworkViewTaskFactory.class, 
sifInterpreterTaskFactoryProps);
+               sifInterpreterTaskFactoryProps.setProperty("preferredMenu", 
"Tools");
+               sifInterpreterTaskFactoryProps.setProperty("menuGravity", 
"5.0f");
+               sifInterpreterTaskFactoryProps.setProperty("title", "SIF 
Interpreter");
+               registerService(bc, sifInterpreterTaskFactory, 
NetworkViewTaskFactory.class, sifInterpreterTaskFactoryProps);
 
                Properties networkViewLocationTaskFactoryProps = new 
Properties();
-               
networkViewLocationTaskFactoryProps.setProperty("preferredAction","NEW");
-               networkViewLocationTaskFactoryProps.setProperty("title","Add 
Node");
-               
registerService(bc,networkViewLocationTaskFactory,NetworkViewLocationTaskFactory.class,
 networkViewLocationTaskFactoryProps);
-               
-               Properties nodeViewTaskFactoryProps = new Properties();
-               nodeViewTaskFactoryProps.setProperty("preferredAction","NEW");
-               nodeViewTaskFactoryProps.setProperty("title","Add Nested 
Network");
-               
registerService(bc,addNestedNetworkTaskFactory,NodeViewTaskFactory.class, 
nodeViewTaskFactoryProps);
+               
networkViewLocationTaskFactoryProps.setProperty("preferredAction", "NEW");
+               networkViewLocationTaskFactoryProps.setProperty("title", "Add 
Node");
+               registerService(bc, networkViewLocationTaskFactory, 
NetworkViewLocationTaskFactory.class,
+                               networkViewLocationTaskFactoryProps);
+
+               Properties addNestedNetworkProps = new Properties();
+               addNestedNetworkProps.setProperty("preferredAction", "NEW");
+               addNestedNetworkProps.setProperty("preferredMenu", "Nested 
Network");
+               addNestedNetworkProps.setProperty("title", "Add Nested 
Network");
+               registerService(bc, addNestedNetworkTaskFactory, 
NodeViewTaskFactory.class, addNestedNetworkProps);
+
+               Properties deleteNestedNetworkProps = new Properties();
+               deleteNestedNetworkProps.setProperty("preferredAction", "NEW");
+               deleteNestedNetworkProps.setProperty("preferredMenu", "Nested 
Network");
+               deleteNestedNetworkProps.setProperty("title", "Delete Nested 
Network");
+               registerService(bc, deleteNestedNetworkTaskFactory, 
NodeViewTaskFactory.class, deleteNestedNetworkProps);
        }
 }
-

Added: 
core3/impl/trunk/editor-impl/src/main/java/org/cytoscape/editor/internal/DeleteNestedNetworkTask.java
===================================================================
--- 
core3/impl/trunk/editor-impl/src/main/java/org/cytoscape/editor/internal/DeleteNestedNetworkTask.java
                               (rev 0)
+++ 
core3/impl/trunk/editor-impl/src/main/java/org/cytoscape/editor/internal/DeleteNestedNetworkTask.java
       2012-04-11 22:05:19 UTC (rev 28798)
@@ -0,0 +1,39 @@
+package org.cytoscape.editor.internal;
+
+
+import org.cytoscape.model.CyNetworkManager;
+import org.cytoscape.model.CyNode;
+import org.cytoscape.task.AbstractNodeViewTask;
+import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.view.model.View;
+import org.cytoscape.view.presentation.property.BasicVisualLexicon;
+import org.cytoscape.view.vizmap.gui.SelectedVisualStyleManager;
+import org.cytoscape.work.TaskMonitor;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+
+public class DeleteNestedNetworkTask extends AbstractNodeViewTask {
+
+       private final SelectedVisualStyleManager svsmMgr;
+       
+       private static final Logger logger = 
LoggerFactory.getLogger(DeleteNestedNetworkTask.class);
+       
+       public DeleteNestedNetworkTask(final View<CyNode> nv,
+                                                                  final 
CyNetworkView view,
+                                                                  final 
CyNetworkManager mgr,
+                                                                  final 
SelectedVisualStyleManager svsmMgr) {
+               super(nv,view);
+               this.svsmMgr = svsmMgr;
+       }
+
+       @Override
+       public void run(TaskMonitor tm) throws Exception {
+               final CyNode n = nodeView.getModel();
+               n.setNetworkPointer(null);
+               
+               
nodeView.clearValueLock(BasicVisualLexicon.NODE_NESTED_NETWORK_IMAGE_VISIBLE);
+               svsmMgr.getCurrentVisualStyle().apply(netView);
+               netView.updateView();
+       }
+}

Added: 
core3/impl/trunk/editor-impl/src/main/java/org/cytoscape/editor/internal/DeleteNestedNetworkTaskFactory.java
===================================================================
--- 
core3/impl/trunk/editor-impl/src/main/java/org/cytoscape/editor/internal/DeleteNestedNetworkTaskFactory.java
                                (rev 0)
+++ 
core3/impl/trunk/editor-impl/src/main/java/org/cytoscape/editor/internal/DeleteNestedNetworkTaskFactory.java
        2012-04-11 22:05:19 UTC (rev 28798)
@@ -0,0 +1,39 @@
+package org.cytoscape.editor.internal;
+
+import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyNetworkManager;
+import org.cytoscape.model.CyNode;
+import org.cytoscape.task.AbstractNodeViewTaskFactory;
+import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.view.model.View;
+import org.cytoscape.view.vizmap.gui.SelectedVisualStyleManager;
+import org.cytoscape.work.TaskIterator;
+
+public class DeleteNestedNetworkTaskFactory extends 
AbstractNodeViewTaskFactory {
+       final CyNetworkManager netMgr;
+       final SelectedVisualStyleManager svsmMgr;
+
+       public DeleteNestedNetworkTaskFactory(final CyNetworkManager netMgr, 
final SelectedVisualStyleManager svsmMgr) {
+               this.netMgr = netMgr;
+               this.svsmMgr = svsmMgr;
+       }
+
+       @Override
+       public TaskIterator createTaskIterator(View<CyNode> nodeView, 
CyNetworkView networkView) {
+               return new TaskIterator(new DeleteNestedNetworkTask(nodeView, 
networkView, netMgr, svsmMgr));
+       }
+
+       @Override
+       public boolean isReady(View<CyNode> nodeView, CyNetworkView 
networkView) {
+               if (!super.isReady(nodeView, networkView))
+                       return false;
+               
+               // Check if there is a network pointer and if it is registered.
+               // Nodes with unregistered network pointers should be ignored 
because they are probably being used as something
+               // else other than regular nested networks (e.g. groups).
+               final CyNode node  = nodeView.getModel();
+               final CyNetwork netPointer = node.getNetworkPointer();
+               
+               return netPointer != null && 
netMgr.networkExists(netPointer.getSUID());
+       }
+}

Modified: 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleNodeAttribute.java
===================================================================
--- 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleNodeAttribute.java
   2012-04-11 20:17:39 UTC (rev 28797)
+++ 
core3/impl/trunk/io-impl/impl/src/main/java/org/cytoscape/io/internal/read/xgmml/handler/HandleNodeAttribute.java
   2012-04-11 22:05:19 UTC (rev 28798)
@@ -29,6 +29,7 @@
 
 import org.cytoscape.io.internal.read.xgmml.ParseState;
 import org.cytoscape.model.CyNode;
+import org.cytoscape.view.presentation.property.BasicVisualLexicon;
 import org.xml.sax.Attributes;
 import org.xml.sax.SAXException;
 
@@ -62,6 +63,9 @@
                                        final String netId = 
atts.getValue("value");
                                        final CyNode node = 
manager.getCurrentNode();
                                        
manager.getCache().addNetworkPointer(node, netId);
+                                       // Also add this visual property, so 
the network pointer is displayed as a regular nested network.
+                                       manager.addGraphicsAttribute(node,
+                                                       
BasicVisualLexicon.NODE_NESTED_NETWORK_IMAGE_VISIBLE.getIdString(), "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