Author: ruschein
Date: 2011-07-28 15:58:31 -0700 (Thu, 28 Jul 2011)
New Revision: 26325
Added:
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/hide/HideEdit.java
Modified:
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/hide/HideSelectedEdgesTask.java
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/hide/HideSelectedEdgesTaskFactory.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/hide/HideSelectedEdgesTaskFactoryTest.java
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/hide/HideSelectedEdgesTaskTest.java
Log:
Added undo/redo support for hiding of selected edges.
Copied:
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/hide/HideEdit.java
(from rev 26321,
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/select/SelectionEdit.java)
===================================================================
---
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/hide/HideEdit.java
(rev 0)
+++
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/hide/HideEdit.java
2011-07-28 22:58:31 UTC (rev 26325)
@@ -0,0 +1,107 @@
+package org.cytoscape.task.internal.hide;
+
+
+import static
org.cytoscape.view.presentation.property.MinimalVisualLexicon.EDGE_VISIBLE;
+import static
org.cytoscape.view.presentation.property.MinimalVisualLexicon.NODE_VISIBLE;
+
+
+import java.util.Collection;
+import java.util.ArrayList;
+import java.util.List;
+
+import org.cytoscape.event.CyEventHelper;
+import org.cytoscape.model.CyEdge;
+import org.cytoscape.model.CyNetwork;
+import org.cytoscape.model.CyNode;
+import org.cytoscape.view.model.CyNetworkView;
+import org.cytoscape.util.swing.CyAbstractEdit;
+
+
+/** An undoable edit that will undo and redo hiding of nodes and edges. */
+final class HideEdit extends CyAbstractEdit {
+ private final CyEventHelper eventHelper;
+ private final CyNetwork network;
+ private final CyNetworkView view;
+ private List<NodeAndHideState> nodeStates;
+ private List<EdgeAndHideState> edgeStates;
+
+ HideEdit(final CyEventHelper eventHelper, final String description,
+ final CyNetwork network, final CyNetworkView view)
+ {
+ super(description);
+
+ this.eventHelper = eventHelper;
+ this.network = network;
+ this.view = view;
+
+ saveHideState();
+ }
+
+ public void redo() {
+ super.redo();
+ saveAndRestoreState();
+ }
+
+ public void undo() {
+ super.undo();
+ saveAndRestoreState();
+ }
+
+ private void saveAndRestoreState() {
+ final List<NodeAndHideState> oldNodeStates = nodeStates;
+ final List<EdgeAndHideState> oldEdgeStates = edgeStates;
+
+ saveHideState();
+
+ for (final NodeAndHideState nodeAndState : oldNodeStates)
+
view.getNodeView(nodeAndState.getNode()).setVisualProperty(
+ NODE_VISIBLE, nodeAndState.isHidden());
+
+ for (final EdgeAndHideState edgeAndState : oldEdgeStates)
+
view.getEdgeView(edgeAndState.getEdge()).setVisualProperty(
+ EDGE_VISIBLE, edgeAndState.isHidden());
+
+ eventHelper.flushPayloadEvents();
+ view.updateView();
+ }
+
+ private void saveHideState() {
+ final List<CyNode> nodes = network.getNodeList();
+ nodeStates = new ArrayList<NodeAndHideState>(nodes.size());
+ for (final CyNode node : nodes)
+ nodeStates.add(new NodeAndHideState(node,
view.getNodeView(node).getVisualProperty(NODE_VISIBLE)));
+
+ final List<CyEdge> edges = network.getEdgeList();
+ edgeStates = new ArrayList<EdgeAndHideState>(edges.size());
+ for (final CyEdge edge : edges)
+ edgeStates.add(new EdgeAndHideState(edge,
view.getEdgeView(edge).getVisualProperty(EDGE_VISIBLE)));
+ }
+}
+
+
+final class NodeAndHideState {
+ private final CyNode node;
+ private final Boolean hidden;
+
+ NodeAndHideState(final CyNode node, final Boolean hidden) {
+ this.node = node;
+ this.hidden = hidden;
+ }
+
+ CyNode getNode() { return node; }
+ Boolean isHidden() { return hidden; }
+}
+
+
+final class EdgeAndHideState {
+ private final CyEdge edge;
+ private final Boolean hidden;
+
+ EdgeAndHideState(final CyEdge edge, final Boolean hidden) {
+ this.edge = edge;
+ this.hidden = hidden;
+ }
+
+ CyEdge getEdge() { return edge; }
+ Boolean isHidden() { return hidden; }
+}
Modified:
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/hide/HideSelectedEdgesTask.java
===================================================================
---
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/hide/HideSelectedEdgesTask.java
2011-07-28 22:05:05 UTC (rev 26324)
+++
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/hide/HideSelectedEdgesTask.java
2011-07-28 22:58:31 UTC (rev 26325)
@@ -1,15 +1,8 @@
/*
File: HideSelectedEdgesTask.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,31 +27,42 @@
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.hide;
+
import java.util.List;
+import org.cytoscape.event.CyEventHelper;
import org.cytoscape.model.CyEdge;
import org.cytoscape.model.CyNetwork;
import org.cytoscape.model.CyTableUtil;
import org.cytoscape.task.AbstractNetworkViewTask;
import org.cytoscape.view.model.CyNetworkView;
import org.cytoscape.work.TaskMonitor;
+import org.cytoscape.work.undo.UndoSupport;
public class HideSelectedEdgesTask extends AbstractNetworkViewTask {
+ private final UndoSupport undoSupport;
+ private final CyEventHelper eventHelper;
- public HideSelectedEdgesTask(CyNetworkView v) {
+ public HideSelectedEdgesTask(final UndoSupport undoSupport,
+ final CyEventHelper eventHelper, final
CyNetworkView v)
+ {
super(v);
+ this.undoSupport = undoSupport;
+ this.eventHelper = eventHelper;
}
public void run(TaskMonitor e) {
-
- final CyNetwork curr = view.getModel();
- final List<CyEdge> selectedEdges =
CyTableUtil.getEdgesInState(curr,CyNetwork.SELECTED, true);
+ final CyNetwork network = view.getModel();
+ undoSupport.getUndoableEditSupport().postEdit(
+ new HideEdit(eventHelper, "Hide Selected Edges",
network, view));
- HideUtils.setVisibleEdges( selectedEdges, false, view );
+ final List<CyEdge> selectedEdges =
+ CyTableUtil.getEdgesInState(network,
CyNetwork.SELECTED, true);
+
+ HideUtils.setVisibleEdges(selectedEdges, false, view);
view.updateView();
}
Modified:
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/hide/HideSelectedEdgesTaskFactory.java
===================================================================
---
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/hide/HideSelectedEdgesTaskFactory.java
2011-07-28 22:05:05 UTC (rev 26324)
+++
core3/core-task-impl/trunk/src/main/java/org/cytoscape/task/internal/hide/HideSelectedEdgesTaskFactory.java
2011-07-28 22:58:31 UTC (rev 26325)
@@ -1,7 +1,7 @@
/*
File: HideSelectedEdgesTaskFactory.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
@@ -26,15 +26,28 @@
You should have received a copy of the GNU Lesser General Public License
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.hide;
+
+import org.cytoscape.event.CyEventHelper;
import org.cytoscape.task.AbstractNetworkViewTaskFactory;
import org.cytoscape.work.TaskIterator;
+import org.cytoscape.work.undo.UndoSupport;
+
public class HideSelectedEdgesTaskFactory extends
AbstractNetworkViewTaskFactory {
+ private final UndoSupport undoSupport;
+ private final CyEventHelper eventHelper;
+ public HideSelectedEdgesTaskFactory(final UndoSupport undoSupport,
+ final CyEventHelper eventHelper)
+ {
+ this.undoSupport = undoSupport;
+ this.eventHelper = eventHelper;
+ }
+
public TaskIterator getTaskIterator() {
- return new TaskIterator(new HideSelectedEdgesTask(view));
+ return new TaskIterator(new HideSelectedEdgesTask(undoSupport,
eventHelper, 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-28 22:05:05 UTC (rev 26324)
+++
core3/core-task-impl/trunk/src/main/resources/META-INF/spring/bundle-context.xml
2011-07-28 22:58:31 UTC (rev 26325)
@@ -187,6 +187,8 @@
<bean id="hideSelectedEdgesTaskFactory"
class="org.cytoscape.task.internal.hide.HideSelectedEdgesTaskFactory">
+ <constructor-arg ref="undoSupportServiceRef" />
+ <constructor-arg ref="cyEventHelperRef" />
</bean>
<bean id="unHideAllTaskFactory"
class="org.cytoscape.task.internal.hide.UnHideAllTaskFactory">
Modified:
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/hide/HideSelectedEdgesTaskFactoryTest.java
===================================================================
---
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/hide/HideSelectedEdgesTaskFactoryTest.java
2011-07-28 22:05:05 UTC (rev 26324)
+++
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/hide/HideSelectedEdgesTaskFactoryTest.java
2011-07-28 22:58:31 UTC (rev 26325)
@@ -1,20 +1,30 @@
package org.cytoscape.task.internal.hide;
+
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;
import static org.mockito.Mockito.mock;
+
+import javax.swing.undo.UndoableEditSupport;
+
+import org.cytoscape.event.CyEventHelper;
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;
+
public class HideSelectedEdgesTaskFactoryTest {
@Test
public void testRun() throws Exception {
+ UndoSupport undoSupport = mock(UndoSupport.class);
+ CyEventHelper eventHelper = mock(CyEventHelper.class);
+ HideSelectedEdgesTaskFactory factory =
+ new HideSelectedEdgesTaskFactory(undoSupport,
eventHelper);
CyNetworkView view = mock(CyNetworkView.class);
-
- HideSelectedEdgesTaskFactory factory = new
HideSelectedEdgesTaskFactory();
factory.setNetworkView(view);
TaskIterator ti = factory.getTaskIterator();
Modified:
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/hide/HideSelectedEdgesTaskTest.java
===================================================================
---
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/hide/HideSelectedEdgesTaskTest.java
2011-07-28 22:05:05 UTC (rev 26324)
+++
core3/core-task-impl/trunk/src/test/java/org/cytoscape/task/internal/hide/HideSelectedEdgesTaskTest.java
2011-07-28 22:58:31 UTC (rev 26325)
@@ -1,5 +1,9 @@
package org.cytoscape.task.internal.hide;
+
+import javax.swing.undo.UndoableEditSupport;
+
+import org.cytoscape.event.CyEventHelper;
import org.cytoscape.model.CyEdge;
import org.cytoscape.model.CyNetwork;
import org.cytoscape.model.CyNode;
@@ -7,17 +11,21 @@
import org.cytoscape.test.support.NetworkViewTestSupport;
import org.cytoscape.view.model.CyNetworkView;
import org.cytoscape.work.TaskMonitor;
+import org.cytoscape.work.undo.UndoSupport;
+
import org.junit.Before;
import org.junit.Test;
+
import org.mockito.Mock;
import org.mockito.MockitoAnnotations;
public class HideSelectedEdgesTaskTest extends AbstractNetworkViewTaskTest {
-
private final NetworkViewTestSupport viewSupport = new
NetworkViewTestSupport();
private CyNetworkView view = viewSupport.getNetworkView();
@Mock TaskMonitor tm;
+ @Mock CyEventHelper eventHelper;
+ @Mock UndoSupport undoSupport;
CyEdge edge1;
CyEdge edge2;
@@ -42,9 +50,9 @@
@Test(expected=NullPointerException.class)
public void testHideSelectedEdgesTask() throws Exception {
+ final HideSelectedEdgesTask task =
+ new HideSelectedEdgesTask(undoSupport, eventHelper,
view);
- final HideSelectedEdgesTask task = new
HideSelectedEdgesTask(view);
-
task.run(tm);
}
--
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.