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.