Author: paperwing
Date: 2012-03-13 14:56:35 -0700 (Tue, 13 Mar 2012)
New Revision: 28523
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/CyActivator.java
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/Graphics.java
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/WindBirdsEyeRenderingEngineFactory.java
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/WindMainRenderingEngineFactory.java
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/WindRenderingEngine.java
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/WindRenderingEngineFactory.java
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/WindVisualLexicon.java
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/cytoscape/processing/TableSelectionCytoscapeDataSubprocessor.java
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/data/GraphicsData.java
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/input/ContextMenuInputHandler.java
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/task/PopupMenuCreator.java
Log:
Right-click popup menu now working, behaves similarly to popup menu in Ding;
now checks for node/edge selection made by Cytoscape such as via right click ->
select first neighbors so that node dragging works properly; adding camera
direction and up vectors to WindVisualLexicon
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/CyActivator.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/CyActivator.java
2012-03-13 21:41:05 UTC (rev 28522)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/CyActivator.java
2012-03-13 21:56:35 UTC (rev 28523)
@@ -74,7 +74,7 @@
// Main RenderingEngine factory
WindMainRenderingEngineFactory windMainRenderingEngineFactory =
new WindMainRenderingEngineFactory(
cyNetworkViewManagerRef,
cyRenderingEngineManagerRef,
- windVisualLexicon, taskFactoryListener,
cyDialogTaskManager, cyServiceRegistrarRef);
+ windVisualLexicon, taskFactoryListener,
cyDialogTaskManager, cySubmenuTaskManager, cyServiceRegistrarRef);
Properties windMainRenderingEngineFactoryProps = new
Properties();
windMainRenderingEngineFactoryProps.setProperty("serviceType",
@@ -86,7 +86,7 @@
// Bird's Eye RenderingEngine factory
WindBirdsEyeRenderingEngineFactory
windBirdsEyeRenderingEngineFactory = new WindBirdsEyeRenderingEngineFactory(
cyNetworkViewManagerRef,
cyRenderingEngineManagerRef,
- windVisualLexicon, taskFactoryListener,
cyDialogTaskManager, cyServiceRegistrarRef);
+ windVisualLexicon, taskFactoryListener,
cyDialogTaskManager, cySubmenuTaskManager, cyServiceRegistrarRef);
Properties windBirdsEyeRenderingEngineFactoryProps = new
Properties();
windBirdsEyeRenderingEngineFactoryProps.setProperty("serviceType",
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/Graphics.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/Graphics.java
2012-03-13 21:41:05 UTC (rev 28522)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/Graphics.java
2012-03-13 21:56:35 UTC (rev 28523)
@@ -33,6 +33,7 @@
import org.cytoscape.view.model.CyNetworkView;
import org.cytoscape.view.model.VisualLexicon;
import org.cytoscape.work.swing.DialogTaskManager;
+import org.cytoscape.work.swing.SubmenuTaskManager;
/**
* This class represents a Wind rendering object, directly called
@@ -133,9 +134,11 @@
* Set the {@link TaskFactoryListener} object used to obtain the list
of current task factories.
* @param listener
*/
- public void setupTaskFactories(TaskFactoryListener taskFactoryListener,
DialogTaskManager taskManager) {
+ public void setupTaskFactories(TaskFactoryListener taskFactoryListener,
+ DialogTaskManager taskManager, SubmenuTaskManager
submenuTaskManager) {
graphicsData.setTaskFactoryListener(taskFactoryListener);
graphicsData.setTaskManager(taskManager);
+ graphicsData.setSubmenuTaskManager(submenuTaskManager);
}
/** Main drawing method; can be called by an {@link Animator} such as
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/WindBirdsEyeRenderingEngineFactory.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/WindBirdsEyeRenderingEngineFactory.java
2012-03-13 21:41:05 UTC (rev 28522)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/WindBirdsEyeRenderingEngineFactory.java
2012-03-13 21:56:35 UTC (rev 28523)
@@ -8,6 +8,7 @@
import org.cytoscape.view.model.VisualLexicon;
import org.cytoscape.view.presentation.RenderingEngineManager;
import org.cytoscape.work.swing.DialogTaskManager;
+import org.cytoscape.work.swing.SubmenuTaskManager;
/** This class is capable of creating instances of the WindMapRenderingEngine
*
@@ -21,8 +22,10 @@
VisualLexicon lexicon,
TaskFactoryListener taskFactoryListener,
DialogTaskManager taskManager,
+ SubmenuTaskManager submenuTaskManager,
CyServiceRegistrar serviceRegistrar) {
- super(networkViewManager, renderingEngineManager, lexicon,
taskFactoryListener, taskManager, serviceRegistrar);
+ super(networkViewManager, renderingEngineManager, lexicon,
taskFactoryListener,
+ taskManager, submenuTaskManager,
serviceRegistrar);
}
@Override
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/WindMainRenderingEngineFactory.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/WindMainRenderingEngineFactory.java
2012-03-13 21:41:05 UTC (rev 28522)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/WindMainRenderingEngineFactory.java
2012-03-13 21:56:35 UTC (rev 28523)
@@ -8,6 +8,7 @@
import org.cytoscape.view.model.VisualLexicon;
import org.cytoscape.view.presentation.RenderingEngineManager;
import org.cytoscape.work.swing.DialogTaskManager;
+import org.cytoscape.work.swing.SubmenuTaskManager;
/** The RenderingEngineFactory for the WindRenderingEngine
*
@@ -21,8 +22,10 @@
VisualLexicon lexicon,
TaskFactoryListener taskFactoryListener,
DialogTaskManager taskManager,
+ SubmenuTaskManager submenuTaskManager,
CyServiceRegistrar serviceRegistrar) {
- super(networkViewManager, renderingEngineManager, lexicon,
taskFactoryListener, taskManager, serviceRegistrar);
+ super(networkViewManager, renderingEngineManager, lexicon,
taskFactoryListener,
+ taskManager, submenuTaskManager,
serviceRegistrar);
}
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/WindRenderingEngine.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/WindRenderingEngine.java
2012-03-13 21:41:05 UTC (rev 28522)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/WindRenderingEngine.java
2012-03-13 21:56:35 UTC (rev 28523)
@@ -28,6 +28,7 @@
import org.cytoscape.view.model.events.NetworkViewAboutToBeDestroyedListener;
import org.cytoscape.view.presentation.RenderingEngine;
import org.cytoscape.work.swing.DialogTaskManager;
+import org.cytoscape.work.swing.SubmenuTaskManager;
import com.jogamp.opengl.util.FPSAnimator;
@@ -151,8 +152,10 @@
}
}
- public void setupTaskFactories(TaskFactoryListener taskFactoryListener,
DialogTaskManager taskManager) {
- graphics.setupTaskFactories(taskFactoryListener, taskManager);
+ public void setupTaskFactories(TaskFactoryListener taskFactoryListener,
+ DialogTaskManager taskManager,
+ SubmenuTaskManager submenuTaskManager) {
+ graphics.setupTaskFactories(taskFactoryListener, taskManager,
submenuTaskManager);
}
// Adds a listener to the component containing the GLJPanel to stop the
animator
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/WindRenderingEngineFactory.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/WindRenderingEngineFactory.java
2012-03-13 21:41:05 UTC (rev 28522)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/WindRenderingEngineFactory.java
2012-03-13 21:56:35 UTC (rev 28523)
@@ -14,6 +14,7 @@
import org.cytoscape.view.presentation.RenderingEngineManager;
import org.cytoscape.work.TaskFactory;
import org.cytoscape.work.swing.DialogTaskManager;
+import org.cytoscape.work.swing.SubmenuTaskManager;
/** The RenderingEngineFactory for the WindRenderingEngine
*
@@ -37,6 +38,8 @@
/** A task manager object that can be used to execute tasks created by
TaskFactory objects */
private DialogTaskManager taskManager;
+ private SubmenuTaskManager submenuTaskManager;
+
/** The service registrar used to listen for events regarding when
* the Graphics object is to be removed
*/
@@ -47,6 +50,7 @@
RenderingEngineManager renderingEngineManager,
VisualLexicon lexicon,
TaskFactoryListener taskFactoryListener,
DialogTaskManager taskManager,
+ SubmenuTaskManager submenuTaskManager,
CyServiceRegistrar serviceRegistrar) {
this.networkViewManager = networkViewManager;
this.renderingEngineManager = renderingEngineManager;
@@ -54,6 +58,7 @@
this.taskFactoryListener = taskFactoryListener;
this.taskManager = taskManager;
+ this.submenuTaskManager = submenuTaskManager;
this.serviceRegistrar = serviceRegistrar;
}
@@ -67,7 +72,7 @@
// engine.setUpNetworkView(networkViewManager);
engine.setUpCanvas(container);
engine.setUpNetworkViewDestroyedListener(serviceRegistrar);
- engine.setupTaskFactories(taskFactoryListener, taskManager);
+ engine.setupTaskFactories(taskFactoryListener, taskManager,
submenuTaskManager);
// System.out.println("returning engine: " + engine);
renderingEngineManager.addRenderingEngine(engine);
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/WindVisualLexicon.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/WindVisualLexicon.java
2012-03-13 21:41:05 UTC (rev 28522)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/WindVisualLexicon.java
2012-03-13 21:56:35 UTC (rev 28523)
@@ -57,6 +57,24 @@
public static final VisualProperty<Double> CAMERA_ROLL_ANGLE = new
DoubleVisualProperty(
0.0, ARBITRARY_DOUBLE_RANGE, "CAMERA_ROLL_ANGLE",
"Camera Roll Angle", CyNetwork.class);
+ public static final VisualProperty<Double> CAMERA_X_DIRECTION = new
DoubleVisualProperty(
+ 0.0, ARBITRARY_DOUBLE_RANGE, "CAMERA_X_DIRECTION",
"Camera X Direction", CyNetwork.class);
+
+ public static final VisualProperty<Double> CAMERA_Y_DIRECTION = new
DoubleVisualProperty(
+ 0.0, ARBITRARY_DOUBLE_RANGE, "CAMERA_Y_DIRECTION",
"Camera Y Direction", CyNetwork.class);
+
+ public static final VisualProperty<Double> CAMERA_Z_DIRECTION = new
DoubleVisualProperty(
+ 0.0, ARBITRARY_DOUBLE_RANGE, "CAMERA_Z_DIRECTION",
"Camera Z Direction", CyNetwork.class);
+
+ public static final VisualProperty<Double> CAMERA_X_UP = new
DoubleVisualProperty(
+ 0.0, ARBITRARY_DOUBLE_RANGE, "CAMERA_X_UP", "Camera X
Up", CyNetwork.class);
+
+ public static final VisualProperty<Double> CAMERA_Y_UP = new
DoubleVisualProperty(
+ 0.0, ARBITRARY_DOUBLE_RANGE, "CAMERA_Y_UP", "Camera Y
Up", CyNetwork.class);
+
+ public static final VisualProperty<Double> CAMERA_Z_UP = new
DoubleVisualProperty(
+ 0.0, ARBITRARY_DOUBLE_RANGE, "CAMERA_Z_UP", "Camera Z
Up", CyNetwork.class);
+
public static final VisualProperty<Boolean> SHOW_NODE_LABELS = new
BooleanVisualProperty(
true, "SHOW_NODE_LABELS", "Show Node Labels",
CyNetwork.class);
@@ -109,6 +127,14 @@
addVisualProperty(CAMERA_YAW_ANGLE, NETWORK);
addVisualProperty(CAMERA_ROLL_ANGLE, NETWORK);
+ addVisualProperty(CAMERA_X_DIRECTION, NETWORK);
+ addVisualProperty(CAMERA_Y_DIRECTION, NETWORK);
+ addVisualProperty(CAMERA_Z_DIRECTION, NETWORK);
+
+ addVisualProperty(CAMERA_X_UP, NETWORK);
+ addVisualProperty(CAMERA_Y_UP, NETWORK);
+ addVisualProperty(CAMERA_Z_UP, NETWORK);
+
addVisualProperty(SHOW_NODE_LABELS, NETWORK);
addVisualProperty(SHOW_EDGE_LABELS, NETWORK);
@@ -141,6 +167,14 @@
addIdentifierMapping(CyNetwork.class, "cameraYaw",
CAMERA_YAW_ANGLE);
addIdentifierMapping(CyNetwork.class, "cameraRoll",
CAMERA_ROLL_ANGLE);
+ addIdentifierMapping(CyNetwork.class, "cameraDirectionX",
CAMERA_X_DIRECTION);
+ addIdentifierMapping(CyNetwork.class, "cameraDirectionY",
CAMERA_Y_DIRECTION);
+ addIdentifierMapping(CyNetwork.class, "cameraDirectionZ",
CAMERA_Z_DIRECTION);
+
+ addIdentifierMapping(CyNetwork.class, "cameraUpX", CAMERA_X_UP);
+ addIdentifierMapping(CyNetwork.class, "cameraUpY", CAMERA_Y_UP);
+ addIdentifierMapping(CyNetwork.class, "cameraUpZ", CAMERA_Z_UP);
+
addIdentifierMapping(CyNetwork.class, "showNodeLabels",
SHOW_NODE_LABELS);
addIdentifierMapping(CyNetwork.class, "showEdgeLabels",
SHOW_EDGE_LABELS);
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/cytoscape/processing/TableSelectionCytoscapeDataSubprocessor.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/cytoscape/processing/TableSelectionCytoscapeDataSubprocessor.java
2012-03-13 21:41:05 UTC (rev 28522)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/cytoscape/processing/TableSelectionCytoscapeDataSubprocessor.java
2012-03-13 21:56:35 UTC (rev 28523)
@@ -5,11 +5,14 @@
import org.cytoscape.model.CyEdge;
import org.cytoscape.model.CyNetwork;
import org.cytoscape.model.CyNode;
+import org.cytoscape.model.CyRow;
import org.cytoscape.model.CyTable;
import org.cytoscape.paperwing.internal.data.GraphicsData;
import org.cytoscape.paperwing.internal.data.GraphicsSelectionData;
import org.cytoscape.paperwing.internal.tools.NetworkToolkit;
import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.view.model.View;
+import org.cytoscape.view.presentation.property.BasicVisualLexicon;
/**
* This {@link CytoscapeDataSubprocessor} is used to update data in the
relevant {@link CyTable}
@@ -25,6 +28,8 @@
// Update CyTable with the currently selected set of nodes and
edges
processSelectionData(graphicsData);
+
+ processUpdateSelected(graphicsData);
}
// Performs selection in Cytoscape data objects, such as CyTable
@@ -56,6 +61,26 @@
}
}
+ // Checks if nodes and edges were made to be selected by other
components of Cytoscape
+ private void processUpdateSelected(GraphicsData graphicsData) {
+ CyNetworkView networkView = graphicsData.getNetworkView();
+
+ Set<Integer> selectedNodeIndices =
graphicsData.getSelectionData().getSelectedNodeIndices();
+ Set<Integer> selectedEdgeIndices =
graphicsData.getSelectionData().getSelectedEdgeIndices();
+
+ for (View<CyNode> nodeView : networkView.getNodeViews()) {
+ if
(nodeView.getVisualProperty(BasicVisualLexicon.NODE_SELECTED)) {
+
selectedNodeIndices.add(nodeView.getModel().getIndex());
+ }
+ }
+
+ for (View<CyEdge> edgeView : networkView.getEdgeViews()) {
+ if
(edgeView.getVisualProperty(BasicVisualLexicon.EDGE_SELECTED)) {
+
selectedEdgeIndices.add(edgeView.getModel().getIndex());
+ }
+ }
+ }
+
/**
* Fills in the missing "selected" boolean values in CyTable.
*
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/data/GraphicsData.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/data/GraphicsData.java
2012-03-13 21:41:05 UTC (rev 28522)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/data/GraphicsData.java
2012-03-13 21:56:35 UTC (rev 28523)
@@ -16,6 +16,7 @@
import org.cytoscape.view.model.CyNetworkView;
import org.cytoscape.view.model.VisualLexicon;
import org.cytoscape.work.swing.DialogTaskManager;
+import org.cytoscape.work.swing.SubmenuTaskManager;
/**
* This class represents a data object in which data relevant to the renderer,
@@ -78,6 +79,8 @@
/** A task manager that can be used to execute tasks ccreated by
TaskFactory objects */
private DialogTaskManager taskManager;
+ private SubmenuTaskManager submenuTaskManager;
+
/**
* A {@link GraphicsSelectionData} object which is responsible for
* storing all data related to selection of objects in the network, such
@@ -297,4 +300,12 @@
public void setTaskManager(DialogTaskManager taskManager) {
this.taskManager = taskManager;
}
+
+ public void setSubmenuTaskManager(SubmenuTaskManager
submenuTaskManager) {
+ this.submenuTaskManager = submenuTaskManager;
+ }
+
+ public SubmenuTaskManager getSubmenuTaskManager() {
+ return submenuTaskManager;
+ }
}
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/input/ContextMenuInputHandler.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/input/ContextMenuInputHandler.java
2012-03-13 21:41:05 UTC (rev 28522)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/input/ContextMenuInputHandler.java
2012-03-13 21:56:35 UTC (rev 28523)
@@ -29,7 +29,8 @@
private void processNetworkRightClickMenu(MouseMonitor mouse,
GraphicsData graphicsData){
if (popupMenuCreator == null) {
- popupMenuCreator = new
PopupMenuCreator(graphicsData.getTaskManager());
+ popupMenuCreator = new
PopupMenuCreator(graphicsData.getTaskManager(),
+ graphicsData.getSubmenuTaskManager());
}
Set<Integer> pressed = mouse.getPressed();
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/task/PopupMenuCreator.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/task/PopupMenuCreator.java
2012-03-13 21:41:05 UTC (rev 28522)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/task/PopupMenuCreator.java
2012-03-13 21:56:35 UTC (rev 28523)
@@ -34,6 +34,9 @@
*/
public class PopupMenuCreator {
+ /** For creating popup menu items for the network, only use task
factories that match the preferred action*/
+ private static final String NETWORK_PREFFERED_ACTION = "NEW";
+
private DialogTaskManager taskManager;
private SubmenuTaskManager submenuTaskManager;
@@ -103,9 +106,13 @@
NetworkViewTaskFactory networkViewTaskFactory =
entry.getKey();
Map<String, Object> properties =
entry.getValue();
-
networkViewTaskFactory.setNetworkView(networkView);
+ Object preferredAction =
properties.get("preferredAction");
- createMenuItem(null, visualLexicon, popupMenu,
networkViewTaskFactory, tracker, properties);
+ if (preferredAction != null &&
preferredAction.toString().equals(NETWORK_PREFFERED_ACTION)) {
+
networkViewTaskFactory.setNetworkView(networkView);
+
+ createMenuItem(null, visualLexicon,
popupMenu, networkViewTaskFactory, tracker, properties);
+ }
}
}
@@ -136,8 +143,8 @@
// Below based on implementation from Ding
// check if the menus are created dynamically, and if so add
the listener
- final Object preferredTaskManager =
properties.get("preferredTaskManager");
- if ( preferredTaskManager != null &&
preferredTaskManager.toString().equals("menu")) {
+ Object preferredTaskManager =
properties.get("preferredTaskManager");
+ if (preferredTaskManager != null &&
preferredTaskManager.toString().equals("menu")) {
if (title == null)
title = "Dynamic";
DynamicSubmenuListener submenu =
submenuTaskManager.getConfiguration(taskFactory);
--
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.