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.