Author: ruschein
Date: 2011-07-19 13:28:00 -0700 (Tue, 19 Jul 2011)
New Revision: 26212

Added:
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/zoom/ZoomEdit.java
   
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/zoom/ZoomEditTest.java
Modified:
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/CreateNetworkViewTask.java
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/zoom/AbstractZoomTask.java
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/zoom/ZoomInTask.java
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/zoom/ZoomInTaskFactory.java
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/zoom/ZoomOutTask.java
   
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/zoom/ZoomOutTaskFactory.java
   
core3/core-task-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
   
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/zoom/ZoomInTaskFactoryTest.java
   
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/zoom/ZoomInTaskTest.java
   
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/zoom/ZoomOutTaskFactoryTest.java
   
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/zoom/ZoomOutTaskTest.java
Log:
Added undo/redo for zoom in/out.

Modified: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/CreateNetworkViewTask.java
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/CreateNetworkViewTask.java
    2011-07-19 17:09:15 UTC (rev 26211)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/creation/CreateNetworkViewTask.java
    2011-07-19 20:28:00 UTC (rev 26212)
@@ -60,6 +60,8 @@
                taskMonitor.setProgress(-1.0);
 
                try {
+System.err.println("************************************* start network view 
creation");
+long start=System.currentTimeMillis();
                        // By calling this task, actual view will be created 
even if it's a
                        // large network.
                        final CyNetworkView view = 
viewFactory.getNetworkView(network, false);
@@ -67,7 +69,12 @@
                        
                        // Apply layout only when it is necessary.
                        if(layouts != null)
+                               {
+System.err.println("************************************* inserting layout 
task");
                                this.insertTasksAfterCurrentTask(new 
ApplyPreferredLayoutTask(view, layouts));
+                               }
+long end=System.currentTimeMillis();
+System.err.println("************************************* end network view 
creation"+(end-start)+"ms");
                } catch (Exception e) {
                        throw new Exception("Could not create network view for 
network: "
                                        + 
network.getCyRow().get(CyTableEntry.NAME, String.class), e);

Modified: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/zoom/AbstractZoomTask.java
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/zoom/AbstractZoomTask.java
     2011-07-19 17:09:15 UTC (rev 26211)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/zoom/AbstractZoomTask.java
     2011-07-19 20:28:00 UTC (rev 26212)
@@ -1,15 +1,8 @@
 /*
   File: AbstractZoomTask.java
 
-  Copyright (c) 2006, The Cytoscape Consortium (www.cytoscape.org)
+  Copyright (c) 2006, 2011, The Cytoscape Consortium (www.cytoscape.org)
 
-  The Cytoscape Consortium is:
-  - Institute for Systems Biology
-  - University of California San Diego
-  - Memorial Sloan-Kettering Cancer Center
-  - Institut Pasteur
-  - Agilent Technologies
-
   This library is free software; you can redistribute it and/or modify it
   under the terms of the GNU Lesser General Public License as published
   by the Free Software Foundation; either version 2.1 of the License, or
@@ -34,29 +27,34 @@
   along with this library; if not, write to the Free Software Foundation,
   Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
 */
-
 package org.cytoscape.task.internal.zoom;
 
+
 import static 
org.cytoscape.view.presentation.property.MinimalVisualLexicon.NETWORK_SCALE_FACTOR;
 
 import org.cytoscape.task.AbstractNetworkViewTask;
 import org.cytoscape.work.TaskMonitor;
 import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.work.undo.UndoSupport;
 
 
 abstract class AbstractZoomTask extends AbstractNetworkViewTask {
+       private final UndoSupport undoSupport;
+       private final double factor;
 
-       protected double factor;
-
-       AbstractZoomTask(CyNetworkView v, double factor) {
+       AbstractZoomTask(final UndoSupport undoSupport, final CyNetworkView v, 
final double factor) {
                super(v);
+               this.undoSupport = undoSupport;
                this.factor = factor;
        }
 
        public void run(TaskMonitor tm) {
-               view.setVisualProperty(NETWORK_SCALE_FACTOR, 
-               view.getVisualProperty(NETWORK_SCALE_FACTOR).doubleValue() * 
factor);
-               
+               final double oldFactor = 
view.getVisualProperty(NETWORK_SCALE_FACTOR).doubleValue();
+               view.setVisualProperty(NETWORK_SCALE_FACTOR, oldFactor * 
factor);
+
                view.updateView();
+
+               undoSupport.getUndoableEditSupport().postEdit(
+                       new ZoomEdit(view, factor));
        }
 }

Copied: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/zoom/ZoomEdit.java
 (from rev 26211, 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/title/NetworkTitleEdit.java)
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/zoom/ZoomEdit.java
                             (rev 0)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/zoom/ZoomEdit.java
     2011-07-19 20:28:00 UTC (rev 26212)
@@ -0,0 +1,39 @@
+package org.cytoscape.task.internal.zoom;
+
+
+import static 
org.cytoscape.view.presentation.property.MinimalVisualLexicon.NETWORK_SCALE_FACTOR;
+
+import org.cytoscape.util.swing.CyAbstractEdit;
+import org.cytoscape.view.model.CyNetworkView;
+
+
+/** An undoable edit that will undo and redo the zooming of a network view. */
+final class ZoomEdit extends CyAbstractEdit {
+       private final CyNetworkView view;
+       private final double factor;
+
+       ZoomEdit(final CyNetworkView view, final double factor) {
+               super(factor < 0.0 ? "Zoom Out" : "Zoom In");
+
+               this.view   = view;
+               this.factor = factor;
+       }
+
+       public void redo() {
+               super.redo();
+
+               final double currentScaleFactor =
+                       
view.getVisualProperty(NETWORK_SCALE_FACTOR).doubleValue();
+               view.setVisualProperty(NETWORK_SCALE_FACTOR, currentScaleFactor 
* factor);
+               view.updateView();
+       }
+
+       public void undo() {
+               super.undo();
+
+               final double currentScaleFactor =
+                       
view.getVisualProperty(NETWORK_SCALE_FACTOR).doubleValue();
+               view.setVisualProperty(NETWORK_SCALE_FACTOR, currentScaleFactor 
/ factor);
+               view.updateView();
+       }
+}

Modified: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/zoom/ZoomInTask.java
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/zoom/ZoomInTask.java
   2011-07-19 17:09:15 UTC (rev 26211)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/zoom/ZoomInTask.java
   2011-07-19 20:28:00 UTC (rev 26212)
@@ -1,7 +1,7 @@
 /*
   File: ZoomInTask.java
 
-  Copyright (c) 2006, 2010, The Cytoscape Consortium (www.cytoscape.org)
+  Copyright (c) 2006, 2010-2011, The Cytoscape Consortium (www.cytoscape.org)
 
   This library is free software; you can redistribute it and/or modify it
   under the terms of the GNU Lesser General Public License as published
@@ -27,18 +27,16 @@
   along with this library; if not, write to the Free Software Foundation,
   Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
 */
-
 package org.cytoscape.task.internal.zoom;
 
 
-
 import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.work.undo.UndoSupport;
 
 
 public class ZoomInTask extends AbstractZoomTask {
-       
-       public ZoomInTask(CyNetworkView v) {
-               super(v,1.1);
+       public ZoomInTask(final UndoSupport undoSupport, final CyNetworkView 
view) {
+               super(undoSupport, view, /* factor = */ 1.1);
        }
 }
 

Modified: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/zoom/ZoomInTaskFactory.java
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/zoom/ZoomInTaskFactory.java
    2011-07-19 17:09:15 UTC (rev 26211)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/zoom/ZoomInTaskFactory.java
    2011-07-19 20:28:00 UTC (rev 26212)
@@ -1,7 +1,7 @@
 /*
  File: ZoomInTaskFactory.java
 
- Copyright (c) 2006, 2010, The Cytoscape Consortium (www.cytoscape.org)
+ Copyright (c) 2006, 2010-2011, The Cytoscape Consortium (www.cytoscape.org)
 
  This library is free software; you can redistribute it and/or modify it
  under the terms of the GNU Lesser General Public License as published
@@ -32,11 +32,17 @@
 
 import org.cytoscape.task.AbstractNetworkViewTaskFactory;  
 import org.cytoscape.work.TaskIterator;
+import org.cytoscape.work.undo.UndoSupport;
 
 
 public class ZoomInTaskFactory extends AbstractNetworkViewTaskFactory {
+       private final UndoSupport undoSupport;
 
+       public ZoomInTaskFactory(final UndoSupport undoSupport) {
+               this.undoSupport = undoSupport;
+       }
+
        public TaskIterator getTaskIterator() {
-               return new TaskIterator(new ZoomInTask(view));
+               return new TaskIterator(new ZoomInTask(undoSupport, view));
        } 
 }

Modified: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/zoom/ZoomOutTask.java
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/zoom/ZoomOutTask.java
  2011-07-19 17:09:15 UTC (rev 26211)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/zoom/ZoomOutTask.java
  2011-07-19 20:28:00 UTC (rev 26212)
@@ -1,15 +1,8 @@
 /*
   File: ZoomOutTask.java
 
-  Copyright (c) 2006, The Cytoscape Consortium (www.cytoscape.org)
+  Copyright (c) 2006, 2011, The Cytoscape Consortium (www.cytoscape.org)
 
-  The Cytoscape Consortium is:
-  - Institute for Systems Biology
-  - University of California San Diego
-  - Memorial Sloan-Kettering Cancer Center
-  - Institut Pasteur
-  - Agilent Technologies
-
   This library is free software; you can redistribute it and/or modify it
   under the terms of the GNU Lesser General Public License as published
   by the Free Software Foundation; either version 2.1 of the License, or
@@ -34,16 +27,15 @@
   along with this library; if not, write to the Free Software Foundation,
   Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
 */
-
 package org.cytoscape.task.internal.zoom;
 
 
 import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.work.undo.UndoSupport;
 
 
 public class ZoomOutTask extends AbstractZoomTask {
-
-       public ZoomOutTask(CyNetworkView v) {
-               super(v,0.9);
+       public ZoomOutTask(final UndoSupport undoSupport, final CyNetworkView 
view) {
+               super(undoSupport, view, /* factor = */ 0.9);
        }
 }

Modified: 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/zoom/ZoomOutTaskFactory.java
===================================================================
--- 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/zoom/ZoomOutTaskFactory.java
   2011-07-19 17:09:15 UTC (rev 26211)
+++ 
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/zoom/ZoomOutTaskFactory.java
   2011-07-19 20:28:00 UTC (rev 26212)
@@ -32,11 +32,17 @@
 
 import org.cytoscape.task.AbstractNetworkViewTaskFactory;  
 import org.cytoscape.work.TaskIterator;
+import org.cytoscape.work.undo.UndoSupport;
 
 
 public class ZoomOutTaskFactory extends AbstractNetworkViewTaskFactory {
+       private final UndoSupport undoSupport;
 
+       public ZoomOutTaskFactory(final UndoSupport undoSupport) {
+               this.undoSupport = undoSupport;
+       }
+
        public TaskIterator getTaskIterator() {
-               return new TaskIterator(new ZoomOutTask(view));
+               return new TaskIterator(new ZoomOutTask(undoSupport, view));
        } 
 }

Modified: 
core3/core-task-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
===================================================================
--- 
core3/core-task-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
    2011-07-19 17:09:15 UTC (rev 26211)
+++ 
core3/core-task-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
    2011-07-19 20:28:00 UTC (rev 26212)
@@ -248,9 +248,11 @@
 
        <!-- zoom -->
        <bean id="zoomInTaskFactory" 
class="org.cytoscape.task.internal.zoom.ZoomInTaskFactory">
+               <constructor-arg ref="undoSupportServiceRef" />
        </bean>
 
        <bean id="zoomOutTaskFactory" 
class="org.cytoscape.task.internal.zoom.ZoomOutTaskFactory">
+               <constructor-arg ref="undoSupportServiceRef" />
        </bean>
 
        <bean id="fitSelectedTaskFactory" 
class="org.cytoscape.task.internal.zoom.FitSelectedTaskFactory">

Copied: 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/zoom/ZoomEditTest.java
 (from rev 26211, 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/title/NetworkTitleEditTest.java)
===================================================================
--- 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/zoom/ZoomEditTest.java
                         (rev 0)
+++ 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/zoom/ZoomEditTest.java
 2011-07-19 20:28:00 UTC (rev 26212)
@@ -0,0 +1,29 @@
+package org.cytoscape.task.internal.zoom;
+
+
+import static 
org.cytoscape.view.presentation.property.MinimalVisualLexicon.NETWORK_SCALE_FACTOR;
+
+import static org.mockito.Mockito.mock;
+import static org.mockito.Mockito.times;
+import static org.mockito.Mockito.verify;
+import static org.mockito.Mockito.when;
+
+import org.cytoscape.view.model.CyNetworkView;
+
+import org.junit.Test;
+
+
+public class ZoomEditTest {
+       @Test
+       public void runTest() {
+               final CyNetworkView view = mock(CyNetworkView.class);
+               
when(view.getVisualProperty(NETWORK_SCALE_FACTOR)).thenReturn(2.0);
+
+               final ZoomEdit zoomEdit = new ZoomEdit(view, 0.5);
+               zoomEdit.undo();
+               verify(view, times(1)).setVisualProperty(NETWORK_SCALE_FACTOR, 
Double.valueOf(4.0));
+               
when(view.getVisualProperty(NETWORK_SCALE_FACTOR)).thenReturn(4.0);
+               zoomEdit.redo();
+               verify(view, times(1)).setVisualProperty(NETWORK_SCALE_FACTOR, 
Double.valueOf(2.0));
+       }
+}

Modified: 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/zoom/ZoomInTaskFactoryTest.java
===================================================================
--- 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/zoom/ZoomInTaskFactoryTest.java
        2011-07-19 17:09:15 UTC (rev 26211)
+++ 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/zoom/ZoomInTaskFactoryTest.java
        2011-07-19 20:28:00 UTC (rev 26212)
@@ -1,28 +1,30 @@
 package org.cytoscape.task.internal.zoom;
 
+
 import org.cytoscape.view.model.CyNetworkView;
 import org.cytoscape.work.Task;
 import org.cytoscape.work.TaskIterator;
+import org.cytoscape.work.undo.UndoSupport;
+
 import org.junit.Test;
 import static org.mockito.Mockito.*;
 import static org.junit.Assert.*;
 
+
 public class ZoomInTaskFactoryTest {
-
        @Test
        public void testGetTaskIterator() {
-               
                CyNetworkView view = mock(CyNetworkView.class);
-               
-               ZoomInTaskFactory factory = new ZoomInTaskFactory();
+
+               UndoSupport undoSupport = mock(UndoSupport.class);
+               ZoomInTaskFactory factory = new ZoomInTaskFactory(undoSupport);
                factory.setNetworkView(view);
-               
+
                TaskIterator ti = factory.getTaskIterator();
                assertNotNull(ti);
-               
+
                assertTrue( ti.hasNext() );
                Task t = ti.next();
-               assertNotNull( t );             
+               assertNotNull( t );
        }
-       
 }

Modified: 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/zoom/ZoomInTaskTest.java
===================================================================
--- 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/zoom/ZoomInTaskTest.java
       2011-07-19 17:09:15 UTC (rev 26211)
+++ 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/zoom/ZoomInTaskTest.java
       2011-07-19 20:28:00 UTC (rev 26212)
@@ -1,13 +1,17 @@
 package org.cytoscape.task.internal.zoom;
 
+
+import javax.swing.undo.UndoableEditSupport;
+
 import org.cytoscape.view.model.CyNetworkView;
 import org.cytoscape.work.TaskMonitor;
+import org.cytoscape.work.undo.UndoSupport;
 import org.junit.Test;
 import static org.mockito.Mockito.*;
 import static 
org.cytoscape.view.presentation.property.MinimalVisualLexicon.NETWORK_SCALE_FACTOR;
 
+
 public class ZoomInTaskTest {
-       
        @Test
        public void testRun() throws Exception {
                CyNetworkView view = mock(CyNetworkView.class);
@@ -16,8 +20,12 @@
                double curScaleFactor = 2.0;
                
                
when(view.getVisualProperty(NETWORK_SCALE_FACTOR)).thenReturn(curScaleFactor);
+               
+               UndoableEditSupport undoableEditSupport = 
mock(UndoableEditSupport.class);
+               UndoSupport undoSupport = mock(UndoSupport.class);
+               
when(undoSupport.getUndoableEditSupport()).thenReturn(undoableEditSupport);
                                
-               ZoomInTask t = new ZoomInTask(view);
+               ZoomInTask t = new ZoomInTask(undoSupport, view);
                
                t.run(tm);
 

Modified: 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/zoom/ZoomOutTaskFactoryTest.java
===================================================================
--- 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/zoom/ZoomOutTaskFactoryTest.java
       2011-07-19 17:09:15 UTC (rev 26211)
+++ 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/zoom/ZoomOutTaskFactoryTest.java
       2011-07-19 20:28:00 UTC (rev 26212)
@@ -1,22 +1,24 @@
 package org.cytoscape.task.internal.zoom;
 
-import static org.junit.Assert.assertNotNull;
-import static org.junit.Assert.assertTrue;
-import static org.mockito.Mockito.mock;
 
 import org.cytoscape.view.model.CyNetworkView;
 import org.cytoscape.work.Task;
 import org.cytoscape.work.TaskIterator;
+import org.cytoscape.work.undo.UndoSupport;
+
+import static org.junit.Assert.assertNotNull;
+import static org.junit.Assert.assertTrue;
 import org.junit.Test;
+import static org.mockito.Mockito.mock;
 
+
 public class ZoomOutTaskFactoryTest {
-
        @Test
        public void testGetTaskIterator() {
-               
                CyNetworkView view = mock(CyNetworkView.class);
                
-               ZoomOutTaskFactory factory = new ZoomOutTaskFactory();
+               UndoSupport undoSupport = mock(UndoSupport.class);
+               ZoomOutTaskFactory factory = new 
ZoomOutTaskFactory(undoSupport);
                factory.setNetworkView(view);
                
                TaskIterator ti = factory.getTaskIterator();
@@ -26,6 +28,4 @@
                Task t = ti.next();
                assertNotNull( t );             
        }
-       
-       
 }

Modified: 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/zoom/ZoomOutTaskTest.java
===================================================================
--- 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/zoom/ZoomOutTaskTest.java
      2011-07-19 17:09:15 UTC (rev 26211)
+++ 
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/zoom/ZoomOutTaskTest.java
      2011-07-19 20:28:00 UTC (rev 26212)
@@ -1,24 +1,32 @@
 package org.cytoscape.task.internal.zoom;
 
+
+import javax.swing.undo.UndoableEditSupport;
+
 import org.cytoscape.view.model.CyNetworkView;
 import org.cytoscape.work.TaskMonitor;
+import org.cytoscape.work.undo.UndoSupport;
 import org.junit.Test;
 import static 
org.cytoscape.view.presentation.property.MinimalVisualLexicon.NETWORK_SCALE_FACTOR;
 import static org.mockito.Mockito.*;
 
+
 public class ZoomOutTaskTest {
-
        @Test
        public void testRun() throws Exception {
                CyNetworkView view = mock(CyNetworkView.class);
                TaskMonitor tm = mock(TaskMonitor.class);
 
                double curScaleFactor = 2.0;
-               
+
                
when(view.getVisualProperty(NETWORK_SCALE_FACTOR)).thenReturn(curScaleFactor);
+
+               UndoableEditSupport undoableEditSupport = 
mock(UndoableEditSupport.class);
+               UndoSupport undoSupport = mock(UndoSupport.class);
+               
when(undoSupport.getUndoableEditSupport()).thenReturn(undoableEditSupport);
                                
-               ZoomOutTask t = new ZoomOutTask(view);
-               
+               ZoomOutTask t = new ZoomOutTask(undoSupport, view);
+
                t.run(tm);
 
                verify(view, 
times(1)).setVisualProperty(NETWORK_SCALE_FACTOR,curScaleFactor*0.9);

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