Author: paperwing
Date: 2012-03-12 11:47:40 -0700 (Mon, 12 Mar 2012)
New Revision: 28491
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/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
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/task/TaskFactoryListener.java
Log:
Added the TaskFactoryListener and DialogTaskManager services to GraphicsData so
that ContextMenuInputHandler's PopupMenuCreator object can access and execute
the appropriate tasks for items in the right-click context menu; now needs to
build the menu item hierarchy using the available task factories
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-12 18:20:16 UTC (rev 28490)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/CyActivator.java
2012-03-12 18:47:40 UTC (rev 28491)
@@ -16,6 +16,8 @@
import org.cytoscape.view.presentation.RenderingEngineManager;
import org.cytoscape.view.vizmap.VisualMappingManager;
import org.cytoscape.work.TaskFactory;
+import org.cytoscape.work.TaskManager;
+import org.cytoscape.work.swing.DialogTaskManager;
import org.osgi.framework.BundleContext;
/**
@@ -37,6 +39,16 @@
VisualMappingManager visualMappingManagerServiceRef =
getService(bc,
VisualMappingManager.class);
+ // TaskManager object used to execute tasks
+ DialogTaskManager cyDialogTaskManager = getService(bc,
+ DialogTaskManager.class);
+
+ // Register service to collect references to relevant task
factories for the right-click context menu
+ TaskFactoryListener taskFactoryListener = new
TaskFactoryListener();
+ registerServiceListener(bc, taskFactoryListener,
"addNodeViewTaskFactory", "removeNodeViewTaskFactory",
NodeViewTaskFactory.class);
+ registerServiceListener(bc, taskFactoryListener,
"addEdgeViewTaskFactory", "removeEdgeViewTaskFactory",
EdgeViewTaskFactory.class);
+ registerServiceListener(bc, taskFactoryListener,
"addNetworkViewTaskFactory", "removeNetworkViewTaskFactory",
NetworkViewTaskFactory.class);
+
// Wind Visual Lexicon
WindVisualLexicon windVisualLexicon = new WindVisualLexicon();
@@ -58,7 +70,7 @@
// Main RenderingEngine factory
WindMainRenderingEngineFactory windMainRenderingEngineFactory =
new WindMainRenderingEngineFactory(
cyNetworkViewManagerRef,
cyRenderingEngineManagerRef,
- windVisualLexicon, cyServiceRegistrarRef);
+ windVisualLexicon, taskFactoryListener,
cyDialogTaskManager, cyServiceRegistrarRef);
Properties windMainRenderingEngineFactoryProps = new
Properties();
windMainRenderingEngineFactoryProps.setProperty("serviceType",
@@ -70,7 +82,7 @@
// Bird's Eye RenderingEngine factory
WindBirdsEyeRenderingEngineFactory
windBirdsEyeRenderingEngineFactory = new WindBirdsEyeRenderingEngineFactory(
cyNetworkViewManagerRef,
cyRenderingEngineManagerRef,
- windVisualLexicon, cyServiceRegistrarRef);
+ windVisualLexicon, taskFactoryListener,
cyDialogTaskManager, cyServiceRegistrarRef);
Properties windBirdsEyeRenderingEngineFactoryProps = new
Properties();
windBirdsEyeRenderingEngineFactoryProps.setProperty("serviceType",
@@ -80,10 +92,7 @@
RenderingEngineFactory.class,
windBirdsEyeRenderingEngineFactoryProps);
- // Register service to collect references to relevant task
factories for the right-click context menu
- TaskFactoryListener taskFactoryListerner = new
TaskFactoryListener();
- registerServiceListener(bc, taskFactoryListerner,
"addNodeViewTaskFactory", "removeNodeViewTaskFactory",
NodeViewTaskFactory.class);
- registerServiceListener(bc, taskFactoryListerner,
"addEdgeViewTaskFactory", "removeEdgeViewTaskFactory",
EdgeViewTaskFactory.class);
- registerServiceListener(bc, taskFactoryListerner,
"addNetworkViewTaskFactory", "removeNetworkViewTaskFactory",
NetworkViewTaskFactory.class);
+
+
}
}
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-12 18:20:16 UTC (rev 28490)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/Graphics.java
2012-03-12 18:47:40 UTC (rev 28491)
@@ -27,10 +27,12 @@
import org.cytoscape.paperwing.internal.input.MouseMonitor;
import org.cytoscape.paperwing.internal.lighting.LightingProcessor;
import org.cytoscape.paperwing.internal.picking.ShapePickingProcessor;
+import org.cytoscape.paperwing.internal.task.TaskFactoryListener;
import org.cytoscape.paperwing.internal.tools.GeometryToolkit;
import org.cytoscape.paperwing.internal.tools.SimpleCamera;
import org.cytoscape.view.model.CyNetworkView;
import org.cytoscape.view.model.VisualLexicon;
+import org.cytoscape.work.swing.DialogTaskManager;
/**
* This class represents a Wind rendering object, directly called
@@ -126,6 +128,15 @@
graphicsData.setContainer(component);
}
+
+ /**
+ * Set the {@link TaskFactoryListener} object used to obtain the list
of current task factories.
+ * @param listener
+ */
+ public void setupTaskFactories(TaskFactoryListener taskFactoryListener,
DialogTaskManager taskManager) {
+ graphicsData.setTaskFactoryListener(taskFactoryListener);
+ graphicsData.setTaskManager(taskManager);
+ }
/** Main drawing method; can be called by an {@link Animator} such as
* {@link FPSAnimator}, responsible for drawing the scene and advancing
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-12 18:20:16 UTC (rev 28490)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/WindBirdsEyeRenderingEngineFactory.java
2012-03-12 18:47:40 UTC (rev 28491)
@@ -1,17 +1,13 @@
package org.cytoscape.paperwing.internal;
-import java.util.Properties;
-
import org.cytoscape.model.CyNetwork;
-import org.cytoscape.model.events.NetworkAboutToBeDestroyedListener;
+import org.cytoscape.paperwing.internal.task.TaskFactoryListener;
import org.cytoscape.service.util.CyServiceRegistrar;
import org.cytoscape.view.model.CyNetworkViewManager;
import org.cytoscape.view.model.View;
import org.cytoscape.view.model.VisualLexicon;
-import org.cytoscape.view.model.events.NetworkViewAboutToBeDestroyedListener;
-import org.cytoscape.view.presentation.RenderingEngine;
-import org.cytoscape.view.presentation.RenderingEngineFactory;
import org.cytoscape.view.presentation.RenderingEngineManager;
+import org.cytoscape.work.swing.DialogTaskManager;
/** This class is capable of creating instances of the WindMapRenderingEngine
*
@@ -22,8 +18,11 @@
public WindBirdsEyeRenderingEngineFactory(
CyNetworkViewManager networkViewManager,
RenderingEngineManager renderingEngineManager,
- VisualLexicon lexicon, CyServiceRegistrar
serviceRegistrar) {
- super(networkViewManager, renderingEngineManager, lexicon,
serviceRegistrar);
+ VisualLexicon lexicon,
+ TaskFactoryListener taskFactoryListener,
+ DialogTaskManager taskManager,
+ CyServiceRegistrar serviceRegistrar) {
+ super(networkViewManager, renderingEngineManager, lexicon,
taskFactoryListener, taskManager, 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-12 18:20:16 UTC (rev 28490)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/WindMainRenderingEngineFactory.java
2012-03-12 18:47:40 UTC (rev 28491)
@@ -1,16 +1,13 @@
package org.cytoscape.paperwing.internal;
-import java.util.Properties;
-
import org.cytoscape.model.CyNetwork;
-import org.cytoscape.model.events.NetworkAboutToBeDestroyedListener;
+import org.cytoscape.paperwing.internal.task.TaskFactoryListener;
import org.cytoscape.service.util.CyServiceRegistrar;
import org.cytoscape.view.model.CyNetworkViewManager;
import org.cytoscape.view.model.View;
import org.cytoscape.view.model.VisualLexicon;
-import org.cytoscape.view.presentation.RenderingEngine;
-import org.cytoscape.view.presentation.RenderingEngineFactory;
import org.cytoscape.view.presentation.RenderingEngineManager;
+import org.cytoscape.work.swing.DialogTaskManager;
/** The RenderingEngineFactory for the WindRenderingEngine
*
@@ -21,8 +18,11 @@
public WindMainRenderingEngineFactory(
CyNetworkViewManager networkViewManager,
RenderingEngineManager renderingEngineManager,
- VisualLexicon lexicon, CyServiceRegistrar
serviceRegistrar) {
- super(networkViewManager, renderingEngineManager, lexicon,
serviceRegistrar);
+ VisualLexicon lexicon,
+ TaskFactoryListener taskFactoryListener,
+ DialogTaskManager taskManager,
+ CyServiceRegistrar serviceRegistrar) {
+ super(networkViewManager, renderingEngineManager, lexicon,
taskFactoryListener, taskManager, 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-12 18:20:16 UTC (rev 28490)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/WindRenderingEngine.java
2012-03-12 18:47:40 UTC (rev 28491)
@@ -18,6 +18,7 @@
import javax.swing.JComponent;
import javax.swing.JInternalFrame;
import org.cytoscape.model.CyNetwork;
+import org.cytoscape.paperwing.internal.task.TaskFactoryListener;
import org.cytoscape.service.util.CyServiceRegistrar;
import org.cytoscape.view.model.CyNetworkView;
import org.cytoscape.view.model.View;
@@ -26,6 +27,7 @@
import org.cytoscape.view.model.events.NetworkViewAboutToBeDestroyedEvent;
import org.cytoscape.view.model.events.NetworkViewAboutToBeDestroyedListener;
import org.cytoscape.view.presentation.RenderingEngine;
+import org.cytoscape.work.swing.DialogTaskManager;
import com.jogamp.opengl.util.FPSAnimator;
@@ -149,6 +151,10 @@
}
}
+ public void setupTaskFactories(TaskFactoryListener taskFactoryListener,
DialogTaskManager taskManager) {
+ graphics.setupTaskFactories(taskFactoryListener, taskManager);
+ }
+
// Adds a listener to the component containing the GLJPanel to stop the
animator
// if the GLJPanel is about to be removed
private void addStopAnimatorListener(JComponent container) {
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-12 18:20:16 UTC (rev 28490)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/WindRenderingEngineFactory.java
2012-03-12 18:47:40 UTC (rev 28491)
@@ -4,6 +4,7 @@
import org.cytoscape.model.CyNetwork;
import org.cytoscape.model.events.NetworkAboutToBeDestroyedListener;
+import org.cytoscape.paperwing.internal.task.TaskFactoryListener;
import org.cytoscape.service.util.CyServiceRegistrar;
import org.cytoscape.view.model.CyNetworkViewManager;
import org.cytoscape.view.model.View;
@@ -11,6 +12,8 @@
import org.cytoscape.view.presentation.RenderingEngine;
import org.cytoscape.view.presentation.RenderingEngineFactory;
import org.cytoscape.view.presentation.RenderingEngineManager;
+import org.cytoscape.work.TaskFactory;
+import org.cytoscape.work.swing.DialogTaskManager;
/** The RenderingEngineFactory for the WindRenderingEngine
*
@@ -28,6 +31,12 @@
/** The visual lexicon for the wind rendering engine */
private final VisualLexicon visualLexicon;
+ /** A listener used to obtain the set of {@link TaskFactory} objects
for use with creating context menus */
+ private TaskFactoryListener taskFactoryListener;
+
+ /** A task manager object that can be used to execute tasks created by
TaskFactory objects */
+ private DialogTaskManager taskManager;
+
/** The service registrar used to listen for events regarding when
* the Graphics object is to be removed
*/
@@ -36,11 +45,15 @@
/** Construct a new WindRenderingEngineFactory object */
public WindRenderingEngineFactory(CyNetworkViewManager
networkViewManager,
RenderingEngineManager renderingEngineManager,
VisualLexicon lexicon,
+ TaskFactoryListener taskFactoryListener,
+ DialogTaskManager taskManager,
CyServiceRegistrar serviceRegistrar) {
this.networkViewManager = networkViewManager;
this.renderingEngineManager = renderingEngineManager;
this.visualLexicon = lexicon;
+ this.taskFactoryListener = taskFactoryListener;
+ this.taskManager = taskManager;
this.serviceRegistrar = serviceRegistrar;
}
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-12 18:20:16 UTC (rev 28490)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/data/GraphicsData.java
2012-03-12 18:47:40 UTC (rev 28491)
@@ -11,9 +11,11 @@
import org.cytoscape.paperwing.internal.coordinator.ViewingCoordinator;
import org.cytoscape.paperwing.internal.geometric.Vector3;
import org.cytoscape.paperwing.internal.geometric.ViewingVolume;
+import org.cytoscape.paperwing.internal.task.TaskFactoryListener;
import org.cytoscape.paperwing.internal.tools.SimpleCamera;
import org.cytoscape.view.model.CyNetworkView;
import org.cytoscape.view.model.VisualLexicon;
+import org.cytoscape.work.swing.DialogTaskManager;
/**
* This class represents a data object in which data relevant to the renderer,
@@ -70,6 +72,12 @@
private Component container;
+ /** A {@link TaskFactoryListener} object that can be used to obtain the
current set of task factories */
+ private TaskFactoryListener taskFactoryListener;
+
+ /** A task manager that can be used to execute tasks ccreated by
TaskFactory objects */
+ private DialogTaskManager taskManager;
+
/**
* A {@link GraphicsSelectionData} object which is responsible for
* storing all data related to selection of objects in the network, such
@@ -273,4 +281,20 @@
public Component getContainer() {
return container;
}
+
+ public TaskFactoryListener getTaskFactoryListener() {
+ return taskFactoryListener;
+ }
+
+ public void setTaskFactoryListener(TaskFactoryListener
taskFactoryListener) {
+ this.taskFactoryListener = taskFactoryListener;
+ }
+
+ public DialogTaskManager getTaskManager() {
+ return taskManager;
+ }
+
+ public void setTaskManager(DialogTaskManager taskManager) {
+ this.taskManager = taskManager;
+ }
}
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-12 18:20:16 UTC (rev 28490)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/input/ContextMenuInputHandler.java
2012-03-12 18:47:40 UTC (rev 28491)
@@ -7,12 +7,19 @@
import javax.swing.JPopupMenu;
import org.cytoscape.paperwing.internal.data.GraphicsData;
+import org.cytoscape.paperwing.internal.task.PopupMenuCreator;
/**
* Input handler responsible for creating the right-click context menu.
*/
public class ContextMenuInputHandler implements InputHandler {
+ private PopupMenuCreator popupMenuCreator;
+
+ public ContextMenuInputHandler() {
+ popupMenuCreator = new PopupMenuCreator();
+ }
+
@Override
public void processInput(KeyboardMonitor keys, MouseMonitor mouse,
GraphicsData graphicsData) {
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-12 18:20:16 UTC (rev 28490)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/task/PopupMenuCreator.java
2012-03-12 18:47:40 UTC (rev 28491)
@@ -7,20 +7,58 @@
import org.cytoscape.model.CyNode;
import org.cytoscape.task.NodeViewTaskFactory;
import org.cytoscape.util.swing.JMenuTracker;
+import org.cytoscape.view.model.CyNetworkView;
import org.cytoscape.view.model.View;
+import org.cytoscape.work.swing.DialogTaskManager;
/**
* This class is responsible for creating and populating pop-up menus created
when right-clicking the network.
*/
public class PopupMenuCreator {
- public void createNodeMenu(View<CyNode> nodeView,
Collection<NodeViewTaskFactory> taskFactories) {
+ public void createNodeMenu(View<CyNode> nodeView,
+ CyNetworkView networkView,
+ Collection<NodeViewTaskFactory> taskFactories,
+ DialogTaskManager taskManager) {
JPopupMenu menu = new JPopupMenu();
JMenuTracker tracker = new JMenuTracker(menu);
- for (NodeViewTaskFactory taskFactory : taskFactories) {
+ if (taskFactories.size() == 1) {
+ NodeViewTaskFactory nodeViewTaskFactory =
taskFactories.iterator().next();
+ nodeViewTaskFactory.setNodeView(nodeView, networkView);
+ taskManager.execute(nodeViewTaskFactory);
+
+ } else if (taskFactories.size() > 1) {
+ for (NodeViewTaskFactory taskFactory : taskFactories) {
+
+ }
}
+
+
+ /*
+
+ // build a menu of actions if more than factory exists
+ if ( usableTFs.size() > 1) {
+ String nodeLabel =
network.getRow(nv.getModel()).get("name",String.class);
+ JPopupMenu menu = new JPopupMenu(nodeLabel);
+ JMenuTracker tracker = new JMenuTracker(menu);
+
+ for ( NodeViewTaskFactory nvtf : usableTFs ) {
+ nvtf.setNodeView(nv, m_view);
+ createMenuItem(nv, menu, nvtf, tracker,
m_view.nodeViewTFs.get( nvtf ));
+ }
+
+ menu.show(invoker, x, y);
+
+ // execute the task directly if only one factory exists
+ } else if ( usableTFs.size() == 1) {
+ NodeViewTaskFactory tf = usableTFs.iterator().next();
+ tf.setNodeView(nv, m_view);
+ executeTask(tf);
+ }
+
+ */
}
}
Modified:
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/task/TaskFactoryListener.java
===================================================================
---
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/task/TaskFactoryListener.java
2012-03-12 18:20:16 UTC (rev 28490)
+++
csplugins/trunk/toronto/yuedong/paperwing-impl/src/main/java/org/cytoscape/paperwing/internal/task/TaskFactoryListener.java
2012-03-12 18:47:40 UTC (rev 28491)
@@ -27,14 +27,20 @@
public void addNodeViewTaskFactory(NodeViewTaskFactory taskFactory,
Map<String, String> properties) {
nodeViewTaskFactories.put(taskFactory, properties);
+
+ // printTaskFactoryDetails(taskFactory, properties);
}
public void addEdgeViewTaskFactory(EdgeViewTaskFactory taskFactory,
Map<String, String> properties) {
edgeViewTaskFactories.put(taskFactory, properties);
+
+ // printTaskFactoryDetails(taskFactory, properties);
}
public void addNetworkViewTaskFactory(NetworkViewTaskFactory
taskFactory, Map<String, String> properties) {
networkViewTaskFactories.put(taskFactory, properties);
+
+ // printTaskFactoryDetails(taskFactory, properties);
}
public void removeNodeViewTaskFactory(NodeViewTaskFactory taskFactory,
Map<String, String> properties) {
@@ -48,4 +54,9 @@
public void removeNetworkViewTaskFactory(NetworkViewTaskFactory
taskFactory, Map<String, String> properties) {
networkViewTaskFactories.put(taskFactory, properties);
}
+
+ private void printTaskFactoryDetails(TaskFactory taskFactory,
Map<String, String> properties) {
+ System.out.println("TaskFactory added: " + taskFactory);
+ System.out.println("Properties: " + properties);
+ }
}
--
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.