Author: mkirby
Date: 2012-07-05 12:57:39 -0700 (Thu, 05 Jul 2012)
New Revision: 29768

Added:
   
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/EdgeViewListener.java
   
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/NodeViewListener.java
Modified:
   
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/CyActivator.java
   
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/NetworkManager.java
   
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/NetworkSync.java
   
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/rpc/CytoscapeRPCCallHandler.java
   
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/rpc/CytoscapeRPCServer.java
Log:
Updates

Modified: 
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/CyActivator.java
===================================================================
--- 
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/CyActivator.java
       2012-07-05 19:29:03 UTC (rev 29767)
+++ 
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/CyActivator.java
       2012-07-05 19:57:39 UTC (rev 29768)
@@ -7,6 +7,8 @@
 import org.cytoscape.service.util.AbstractCyActivator;
 import org.cytoscape.view.model.CyNetworkViewFactory;
 import org.cytoscape.view.model.CyNetworkViewManager;
+import org.cytoscape.view.model.events.AddedNodeViewsListener;
+import org.cytoscape.view.vizmap.VisualMappingManager;
 import org.osgi.framework.BundleContext;
 
 
@@ -31,6 +33,7 @@
                CyNetworkManager netMan = getService(bc,CyNetworkManager.class);
                CyNetworkViewFactory netViewFact = 
getService(bc,CyNetworkViewFactory.class);
                CyNetworkViewManager netViewMan = 
getService(bc,CyNetworkViewManager.class);
+               VisualMappingManager visMan = 
getService(bc,VisualMappingManager.class);
                
                CySwingApplication cytoscapeDesktopService = 
getService(bc,CySwingApplication.class);
                
@@ -40,5 +43,8 @@
                //Create and register CytoBridge as a Service
                CytoBridgeAction cytoBridgeAction = new 
CytoBridgeAction(cytoscapeDesktopService, myManager);
                registerService(bc,cytoBridgeAction,CyAction.class, new 
Properties());
+               
+               NodeViewListener listen = new NodeViewListener(visMan);
+               registerService(bc,listen,AddedNodeViewsListener.class, new 
Properties());
        }
 }

Added: 
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/EdgeViewListener.java
===================================================================
--- 
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/EdgeViewListener.java
                          (rev 0)
+++ 
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/EdgeViewListener.java
  2012-07-05 19:57:39 UTC (rev 29768)
@@ -0,0 +1,29 @@
+package org.cytoscape.cytobridge;
+
+import org.cytoscape.model.CyEdge;
+import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.view.model.View;
+import org.cytoscape.view.model.events.AddedEdgeViewsEvent;
+import org.cytoscape.view.model.events.AddedEdgeViewsListener;
+import org.cytoscape.view.vizmap.VisualMappingManager;
+import org.cytoscape.view.vizmap.VisualStyle;
+
+public class EdgeViewListener implements AddedEdgeViewsListener {
+
+       private VisualMappingManager visMan;
+       
+       public EdgeViewListener(VisualMappingManager visMan) {
+               this.visMan = visMan;
+       }
+       
+       public void handleEvent(AddedEdgeViewsEvent e) {
+               //update layout automatically (of new nodes)
+               CyNetworkView networkView = e.getSource();
+               VisualStyle style = visMan.getVisualStyle(networkView);
+               for (View<CyEdge> view : e.getEdgeViews()) {
+                       
style.apply(networkView.getModel().getRow(view.getModel()), 
networkView.getEdgeView(view.getModel()));
+               }
+               networkView.updateView();
+       }
+
+}
\ No newline at end of file

Modified: 
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/NetworkManager.java
===================================================================
--- 
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/NetworkManager.java
    2012-07-05 19:29:03 UTC (rev 29767)
+++ 
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/NetworkManager.java
    2012-07-05 19:57:39 UTC (rev 29768)
@@ -9,6 +9,7 @@
 import org.cytoscape.model.CyNetworkFactory;
 import org.cytoscape.model.CyNetworkManager;
 import org.cytoscape.model.CyNode;
+import org.cytoscape.model.CyTable;
 import org.cytoscape.view.model.CyNetworkView;
 import org.cytoscape.view.model.CyNetworkViewFactory;
 import org.cytoscape.view.model.CyNetworkViewManager;
@@ -23,8 +24,16 @@
        private CyNetworkManager netMan;
        private CyNetworkViewManager netViewMan;
        
+       /** Maintains a reference to all networks created by the plugin. */
        private Map<String, NetworkSync> currentNets;
        
+       /** Constructs this Network manager with the needed factories/managers.
+        * 
+        * @param netFact
+        * @param netViewFact
+        * @param netMan
+        * @param netViewMan
+        */
        public NetworkManager(CyNetworkFactory netFact, CyNetworkViewFactory 
netViewFact,
                                                        CyNetworkManager 
netMan, CyNetworkViewManager netViewMan) {
                
@@ -36,23 +45,34 @@
                currentNets = new HashMap<String, NetworkSync>();
        }
        
+       /** Handles creation and updating of a network sent through the plugin.
+        * 
+        * @param netName The name of the network (unique, for identification 
for updating).
+        * @param nodes A Vector of the nodes in the network.
+        * @param edgeFrom A vector of edge sources.
+        * @param edgeTo A vector of edge destinations.
+        */
        public void pushNetwork(String netName, Vector<Integer> nodes, 
Vector<Double> edgeFrom, Vector<Double> edgeTo) {
                
                if (currentNets.containsKey(netName)) {
+                       //Update the appropriate CyNetwork
                        System.out.println("Updating network "+netName);
                        CyNetwork network = 
currentNets.get(netName).getNetwork();
                        CyNode node = network.addNode();
                        network.getRow(node).set(CyNetwork.NAME, "55");
                        currentNets.get(netName).getNodeMap().put(55, node);
+                       
                } else {
+                       //Create the CyNetwork
                        System.out.println("Creating network "+netName);
                        CyNetwork network = netFact.createNetwork();
                        network.getRow(network).set(CyNetwork.NAME,netName);
                        
+                       //Create maps from the 3rd party ID's to CyNode/CyEdge
                        HashMap<Integer, CyNode> nodeMap = new HashMap<Integer, 
CyNode>();
                        HashMap<Integer, CyEdge> edgeMap = new HashMap<Integer, 
CyEdge>();
-                       currentNets.put(netName, new NetworkSync(network, 
nodeMap, edgeMap));
                        
+                       //Create all of the CyNodes
                        for (Integer n : nodes) {
                                CyNode node = network.addNode();
                                network.getRow(node).set(CyNetwork.NAME, n+"");
@@ -60,6 +80,8 @@
                                System.out.println("Added node "+n);
                        }
                        System.out.println("Got nodes...");
+                       
+                       //Create all of the CyEdges
                        for (int e=0; e<edgeFrom.size();e++) {
                                CyNode fromNode = 
nodeMap.get(edgeFrom.get(e).intValue());
                                CyNode toNode = 
nodeMap.get(edgeTo.get(e).intValue());
@@ -69,7 +91,13 @@
                        }
                        System.out.println("Got edges...");
                        
+                       //Create a network view for this network
                        CyNetworkView networkView = 
netViewFact.createNetworkView(network);
+                       
+                       //Store a reference to this network and its associated 
maps
+                       currentNets.put(netName, new NetworkSync(network, 
networkView, nodeMap, edgeMap));
+                       
+                       //Add network and network view to appropriate managers
                        netMan.addNetwork(network);
                        netViewMan.addNetworkView(networkView);
                }
@@ -83,5 +111,34 @@
                   //register network
                   //register view
        }
+       
+       
+       public void pushTables(String netName, Vector<String> nheads, 
Vector<String> ndata, Vector<String> eheads, Vector<String> edata) {
+               if (!currentNets.containsKey(netName)) {
+                       System.out.println("That network doesn't exist!");
+                       return ;
+               }
+               
+               CyNetwork network = currentNets.get(netName).getNetwork();
+               CyTable ntable = network.getDefaultNodeTable();
+               
+               for (int n=0; n<nheads.size(); n++) {
+                       ntable.createColumn(nheads.get(n), String.class, true, 
"");
+                       for (int i=0; i<ndata.size()/nheads.size();i++) {
+                               //ntable.getRow(i).set(nheads.get(n), 
ndata.get(i));
+                       }
+               }
+               
+               CyTable etable = network.getDefaultEdgeTable();
+               
+               for (int e=0; e<eheads.size(); e++) {
+                       etable.createColumn(eheads.get(e), String.class, true, 
"");
+                       for (int i=0; i<edata.size()/eheads.size();i++) {
+                               //etable.getRow(i).set(eheads.get(e), 
edata.get(i));
+                       }
+               }
+               
+               System.out.println("Updating tables for network "+netName);
+       }
 
 }

Modified: 
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/NetworkSync.java
===================================================================
--- 
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/NetworkSync.java
       2012-07-05 19:29:03 UTC (rev 29767)
+++ 
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/NetworkSync.java
       2012-07-05 19:57:39 UTC (rev 29768)
@@ -5,17 +5,24 @@
 import org.cytoscape.model.CyEdge;
 import org.cytoscape.model.CyNetwork;
 import org.cytoscape.model.CyNode;
+import org.cytoscape.view.model.CyNetworkView;
 
+/**
+ * Simple data-structure to house all necessary information on a network 
instance managed by CytoBridge.
+ * @author Michael Kirby
+ */
 public class NetworkSync {
        
        private CyNetwork network;
+       private CyNetworkView networkView;
        private HashMap<Integer, CyNode> nodeMap;
        private HashMap<Integer, CyEdge> edgeMap;
        
-       public NetworkSync(CyNetwork net, HashMap<Integer, CyNode> nodeMap, 
HashMap<Integer, CyEdge> edgeMap) {
+       public NetworkSync(CyNetwork net, CyNetworkView networkView, 
HashMap<Integer, CyNode> nodeMap, HashMap<Integer, CyEdge> edgeMap) {
                this.network = net;
                this.nodeMap = nodeMap;
                this.edgeMap = edgeMap;
+               this.setNetworkView(networkView);
        }
        
        public CyNetwork getNetwork() {
@@ -38,4 +45,12 @@
                return nodeMap;
        }
 
+       public void setNetworkView(CyNetworkView networkView) {
+               this.networkView = networkView;
+       }
+
+       public CyNetworkView getNetworkView() {
+               return networkView;
+       }
+
 }

Added: 
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/NodeViewListener.java
===================================================================
--- 
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/NodeViewListener.java
                          (rev 0)
+++ 
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/NodeViewListener.java
  2012-07-05 19:57:39 UTC (rev 29768)
@@ -0,0 +1,41 @@
+package org.cytoscape.cytobridge;
+
+import java.util.Collection;
+
+import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyNode;
+import org.cytoscape.model.CyRow;
+import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.view.model.View;
+import org.cytoscape.view.model.events.AddedNodeViewsEvent;
+import org.cytoscape.view.model.events.AddedNodeViewsListener;
+import org.cytoscape.view.vizmap.VisualMappingManager;
+import org.cytoscape.view.vizmap.VisualStyle;
+
+public class NodeViewListener implements AddedNodeViewsListener {
+
+       private VisualMappingManager visMan;
+       
+       public NodeViewListener(VisualMappingManager visMan) {
+               this.visMan = visMan;
+       }
+       
+       public void handleEvent(AddedNodeViewsEvent e) {
+               //update layout automatically (of new nodes)
+               CyNetworkView networkView = e.getSource();
+               Collection<CyRow> wasSelected = 
networkView.getModel().getDefaultNodeTable().getMatchingRows(CyNetwork.SELECTED,
 true);
+               for (CyRow node : wasSelected) {
+                       node.set(CyNetwork.SELECTED, false);
+               }
+               VisualStyle style = visMan.getVisualStyle(networkView);
+               for (View<CyNode> v : e.getNodeViews()) {
+                       
networkView.getModel().getRow(v.getModel()).set(CyNetwork.SELECTED, true);
+                       
style.apply(networkView.getModel().getRow(v.getModel()), 
networkView.getNodeView(v.getModel()));
+               }
+               for (CyRow node : wasSelected) {
+                       node.set(CyNetwork.SELECTED, true);
+               }
+               networkView.updateView();
+       }
+
+}

Modified: 
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/rpc/CytoscapeRPCCallHandler.java
===================================================================
--- 
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/rpc/CytoscapeRPCCallHandler.java
       2012-07-05 19:29:03 UTC (rev 29767)
+++ 
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/rpc/CytoscapeRPCCallHandler.java
       2012-07-05 19:57:39 UTC (rev 29768)
@@ -51,7 +51,6 @@
     * Constructs a CytoscapeRPCCallHandler.
     */
    public CytoscapeRPCCallHandler(NetworkManager myManager) {
-       System.out.println("Instanciating CytoscapeRPCCallHandler");
        this.myManager = myManager;
    }
 
@@ -72,7 +71,7 @@
    
    public String pushNetwork(String name, Vector<Integer> nodes, 
Vector<Double> edgeFrom, Vector<Double> edgeTo) throws XmlRpcException {
           if (edgeFrom.size()!=edgeTo.size()) {
-                  throw new XmlRpcException("Edge Communication error!");
+                  throw new XmlRpcException("ERROR: Edge mismatch!");
           }
           System.out.println("Got "+nodes.size()+" nodes.");
           
@@ -81,6 +80,11 @@
           return "Pushed to Cytoscape.";
    }
    
+   public String pushTables(String name, Vector<String> nheads, Vector<String> 
ndata, Vector<String> eheads, Vector<String> edata) {
+          myManager.pushTables(name, nheads, ndata, eheads, edata);
+          return "Pushed to Cytoscape.";
+   }
+   
 
    /**
     * Returns a string representing the version of the plugin.

Modified: 
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/rpc/CytoscapeRPCServer.java
===================================================================
--- 
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/rpc/CytoscapeRPCServer.java
    2012-07-05 19:29:03 UTC (rev 29767)
+++ 
csplugins/trunk/soc/mkirby/CytoBridge/src/main/java/org/cytoscape/cytobridge/rpc/CytoscapeRPCServer.java
    2012-07-05 19:57:39 UTC (rev 29768)
@@ -88,7 +88,6 @@
        serverConfig.setContentLengthOptional(false);
        
        webServer.start();
-       System.out.println("Starting now!");
    }
 
    /**

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