http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-graph-model/src/test/java/net/sf/taverna/t2/workbench/models/graph/GraphElementTest.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-graph-model/src/test/java/net/sf/taverna/t2/workbench/models/graph/GraphElementTest.java b/taverna-workbench-graph-model/src/test/java/net/sf/taverna/t2/workbench/models/graph/GraphElementTest.java deleted file mode 100644 index 8d6b7f8..0000000 --- a/taverna-workbench-graph-model/src/test/java/net/sf/taverna/t2/workbench/models/graph/GraphElementTest.java +++ /dev/null @@ -1,148 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program 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 (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.models.graph; - - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNull; - -import java.awt.Color; - -import net.sf.taverna.t2.workbench.models.graph.GraphElement.LineStyle; - -import org.junit.Before; -import org.junit.Test; - -public class GraphElementTest { - - private GraphElement element; - - private String id; - - private String label; - - private LineStyle lineStyle; - - private Color color; - - private Color fillColor; - - private GraphElement parent; - - private GraphController graphController; - - @Before - public void setUp() throws Exception { - element = new GraphElement(graphController) {}; - id = "element-id"; - label = "element-label"; - lineStyle = LineStyle.NONE; - color = Color.BLUE; - fillColor = Color.GREEN; - parent = new GraphNode(graphController); - element.setId(id); - element.setLabel(label); - element.setLineStyle(lineStyle); - element.setColor(color); - element.setFillColor(fillColor); - element.setParent(parent); - } - - @Test - public void testGetParent() { - assertEquals(parent, element.getParent()); - } - - @Test - public void testSetParent() { - GraphNode newParent = new GraphNode(graphController); - element.setParent(newParent); - assertEquals(newParent, element.getParent()); - element.setParent(null); - assertNull(element.getParent()); - } - - @Test - public void testGetLabel() { - assertEquals(label, element.getLabel()); - } - - @Test - public void testSetLabel() { - element.setLabel("new-label"); - assertEquals("new-label", element.getLabel()); - element.setLabel(null); - assertNull(element.getLabel()); - } - - @Test - public void testGetId() { - assertEquals(id, element.getId()); - } - - @Test - public void testSetId() { - element.setId("new-id"); - assertEquals("new-id", element.getId()); - element.setId(null); - assertNull(element.getId()); - } - - @Test - public void testGetColor() { - assertEquals(color, element.getColor()); - } - - @Test - public void testSetColor() { - element.setColor(Color.RED); - assertEquals(Color.RED, element.getColor()); - element.setColor(null); - assertNull(element.getColor()); - } - - @Test - public void testGetFillColor() { - assertEquals(fillColor, element.getFillColor()); - } - - @Test - public void testSetFillColor() { - element.setFillColor(Color.RED); - assertEquals(Color.RED, element.getFillColor()); - element.setFillColor(null); - assertNull(element.getFillColor()); - } - - @Test - public void testGetLineStyle() { - assertEquals(lineStyle, element.getLineStyle()); - } - - @Test - public void testSetLineStyle() { - element.setLineStyle(LineStyle.DOTTED); - assertEquals(LineStyle.DOTTED, element.getLineStyle()); - element.setLineStyle(null); - assertNull(element.getLineStyle()); - } - -}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-graph-model/src/test/java/net/sf/taverna/t2/workbench/models/graph/GraphNodeTest.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-graph-model/src/test/java/net/sf/taverna/t2/workbench/models/graph/GraphNodeTest.java b/taverna-workbench-graph-model/src/test/java/net/sf/taverna/t2/workbench/models/graph/GraphNodeTest.java deleted file mode 100644 index c5bcd6c..0000000 --- a/taverna-workbench-graph-model/src/test/java/net/sf/taverna/t2/workbench/models/graph/GraphNodeTest.java +++ /dev/null @@ -1,179 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program 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 (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.models.graph; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertNull; -import static org.junit.Assert.assertTrue; - -import java.awt.Dimension; - -import net.sf.taverna.t2.workbench.models.graph.GraphShapeElement.Shape; - -import org.junit.Before; -import org.junit.Test; - -public class GraphNodeTest { - - private GraphNode node; - - private Shape shape; - - private Dimension size; - - private Graph graph; - - private boolean expanded; - - private GraphController graphController; - - @Before - public void setUp() throws Exception { - shape = Shape.HOUSE; - size = new Dimension(1, 2); - graph = new Graph(graphController); - expanded = false; - node = new GraphNode(graphController); - node.setShape(shape); - node.setSize(size); - node.setGraph(graph); - node.setExpanded(expanded); - } - - @Test - public void testNode() { - assertNotNull(new GraphNode(graphController)); - } - - @Test - public void testAddSinkNode() { - GraphNode newNode = new GraphNode(graphController); - node.addSinkNode(newNode); - assertEquals(1, node.getSinkNodes().size()); - assertTrue(node.getSinkNodes().contains(newNode)); - assertEquals(node, newNode.getParent()); - } - - @Test - public void testAddSourceNode() { - GraphNode newNode = new GraphNode(graphController); - node.addSourceNode(newNode); - assertEquals(1, node.getSourceNodes().size()); - assertTrue(node.getSourceNodes().contains(newNode)); - assertEquals(node, newNode.getParent()); - } - - @Test - public void testGetGraph() { - assertEquals(graph, node.getGraph()); - } - - @Test - public void testGetHeight() { - assertEquals(size.height, node.getHeight(), 0); - } - - @Test - public void testGetShape() { - assertEquals(shape, node.getShape()); - } - - @Test - public void testGetSinkNodes() { - assertNotNull(node.getSinkNodes()); - assertEquals(0, node.getSinkNodes().size()); - } - - @Test - public void testGetSize() { - assertEquals(size, node.getSize()); - } - - @Test - public void testGetSourceNodes() { - assertNotNull(node.getSourceNodes()); - assertEquals(0, node.getSourceNodes().size()); - } - - @Test - public void testGetWidth() { - assertEquals(size.width, node.getWidth(), 0); - } - - @Test - public void testIsExpanded() { - assertEquals(expanded, node.isExpanded()); - } - - @Test - public void testRemoveSinkNode() { - GraphNode newNode = new GraphNode(graphController); - assertFalse(node.removeSinkNode(newNode)); - node.addSinkNode(newNode); - assertTrue(node.removeSinkNode(newNode)); - assertFalse(node.getSinkNodes().contains(newNode)); - } - - @Test - public void testRemoveSourceNode() { - GraphNode newNode = new GraphNode(graphController); - assertFalse(node.removeSourceNode(newNode)); - node.addSourceNode(newNode); - assertTrue(node.removeSourceNode(newNode)); - assertFalse(node.getSourceNodes().contains(newNode)); - } - - @Test - public void testSetExpanded() { - node.setExpanded(true); - assertEquals(true, node.isExpanded()); - node.setExpanded(false); - assertEquals(false, node.isExpanded()); - } - - @Test - public void testSetGraph() { - Graph newGraph = new Graph(graphController); - node.setGraph(newGraph); - assertEquals(newGraph, node.getGraph()); - node.setGraph(null); - assertNull(node.getGraph()); - } - - @Test - public void testSetShape() { - node.setShape(Shape.INVTRIANGLE); - assertEquals(Shape.INVTRIANGLE, node.getShape()); - node.setShape(Shape.TRIANGLE); - assertEquals(Shape.TRIANGLE, node.getShape()); - } - - @Test - public void testSetSize() { - node.setSize(new Dimension(23, 6)); - assertEquals(new Dimension(23, 6), node.getSize()); - node.setSize(new Dimension(14, 4)); - assertEquals(new Dimension(14, 4), node.getSize()); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-graph-model/src/test/java/net/sf/taverna/t2/workbench/models/graph/GraphTest.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-graph-model/src/test/java/net/sf/taverna/t2/workbench/models/graph/GraphTest.java b/taverna-workbench-graph-model/src/test/java/net/sf/taverna/t2/workbench/models/graph/GraphTest.java deleted file mode 100644 index 44a5aaf..0000000 --- a/taverna-workbench-graph-model/src/test/java/net/sf/taverna/t2/workbench/models/graph/GraphTest.java +++ /dev/null @@ -1,138 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program 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 (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.models.graph; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertFalse; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; -import net.sf.taverna.t2.workbench.models.graph.GraphEdge; -import net.sf.taverna.t2.workbench.models.graph.Graph; -import net.sf.taverna.t2.workbench.models.graph.GraphNode; -import net.sf.taverna.t2.workbench.models.graph.Graph.Alignment; - -import org.junit.Before; -import org.junit.Test; - -public class GraphTest { - - private Graph graph; - - private Alignment alignment; - - private GraphController graphController; - - @Before - public void setUp() throws Exception { - alignment = Alignment.VERTICAL; - graph = new Graph(graphController); - } - - @Test - public void testGraph() { - assertNotNull(new Graph(graphController)); - } - - @Test - public void testAddEdge() { - GraphEdge newEdge = new GraphEdge(graphController); - graph.addEdge(newEdge); - assertEquals(1, graph.getEdges().size()); - assertTrue(graph.getEdges().contains(newEdge)); - } - - @Test - public void testAddNode() { - GraphNode newNode = new GraphNode(graphController); - graph.addNode(newNode); - assertEquals(1, graph.getNodes().size()); - assertTrue(graph.getNodes().contains(newNode)); - assertEquals(graph, newNode.getParent()); - } - - @Test - public void testAddSubgraph() { - Graph newGraph = new Graph(graphController); - graph.addSubgraph(newGraph); - assertEquals(1, graph.getSubgraphs().size()); - assertTrue(graph.getSubgraphs().contains(newGraph)); - assertEquals(graph, newGraph.getParent()); - } - - @Test - public void testGetAlignment() { - assertEquals(alignment, graph.getAlignment()); - } - - @Test - public void testGetEdges() { - assertNotNull(graph.getNodes()); - assertEquals(0, graph.getNodes().size()); - } - - @Test - public void testGetNodes() { - assertNotNull(graph.getEdges()); - assertEquals(0, graph.getEdges().size()); - } - - @Test - public void testGetSubgraphs() { - assertNotNull(graph.getSubgraphs()); - assertEquals(0, graph.getSubgraphs().size()); - } - - @Test - public void testRemoveEdge() { - GraphEdge newEdge = new GraphEdge(graphController); - assertFalse(graph.removeEdge(newEdge)); - graph.addEdge(newEdge); - assertTrue(graph.removeEdge(newEdge)); - assertFalse(graph.getNodes().contains(newEdge)); - } - - @Test - public void testRemoveNode() { - GraphNode newNode = new GraphNode(graphController); - assertFalse(graph.removeNode(newNode)); - graph.addNode(newNode); - assertTrue(graph.removeNode(newNode)); - assertFalse(graph.getNodes().contains(newNode)); - } - - @Test - public void testRemoveSubgraph() { - Graph newGraph = new Graph(graphController); - assertFalse(graph.removeSubgraph(newGraph)); - graph.addSubgraph(newGraph); - assertTrue(graph.removeSubgraph(newGraph)); - assertFalse(graph.getSubgraphs().contains(newGraph)); - } - - @Test - public void testSetAlignment() { - graph.setAlignment(Alignment.VERTICAL); - assertEquals(Alignment.VERTICAL, graph.getAlignment()); - graph.setAlignment(Alignment.HORIZONTAL); - assertEquals(Alignment.HORIZONTAL, graph.getAlignment()); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-graph-model/src/test/resources/nested_iteration.xml ---------------------------------------------------------------------- diff --git a/taverna-workbench-graph-model/src/test/resources/nested_iteration.xml b/taverna-workbench-graph-model/src/test/resources/nested_iteration.xml deleted file mode 100644 index 3675361..0000000 --- a/taverna-workbench-graph-model/src/test/resources/nested_iteration.xml +++ /dev/null @@ -1,121 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<s:scufl xmlns:s="http://org.embl.ebi.escience/xscufl/0.1alpha" version="0.2" log="0"> - <s:workflowdescription lsid="urn:lsid:net.sf.taverna:wfDefinition:c7016fc0-c2f4-4171-b6f1-430f408f4822" author="" title="nested_iteration" /> - <s:processor name="constant" boring="true"> - <s:stringconstant>constant</s:stringconstant> - </s:processor> - <s:processor name="generate_list"> - <s:defaults> - <s:default name="prefix">prefix</s:default> - </s:defaults> - <s:beanshell> - <s:scriptvalue>list = new ArrayList(); -for (int i = 0; i < 20; i++) { - list.add(prefix + i); -}</s:scriptvalue> - <s:beanshellinputlist> - <s:beanshellinput s:syntactictype="'text/plain'">prefix</s:beanshellinput> - </s:beanshellinputlist> - <s:beanshelloutputlist> - <s:beanshelloutput s:syntactictype="l('text/plain')">list</s:beanshelloutput> - </s:beanshelloutputlist> - <s:dependencies s:classloader="iteration" /> - </s:beanshell> - </s:processor> - <s:processor name="merge"> - <s:workflow> - <s:scufl version="0.2" log="0"> - <s:workflowdescription lsid="urn:lsid:net.sf.taverna:wfDefinition:3368fb8d-ecc7-4fcd-b511-6ace84b13c81" author="" title="Untitled workflow #24" /> - <s:processor name="Nested_Workflow"> - <s:workflow> - <s:scufl version="0.2" log="0"> - <s:workflowdescription lsid="urn:lsid:net.sf.taverna:wfDefinition:75b99c76-7a76-4d3c-8d39-8c48df3355ad" author="" title="Untitled workflow #36" /> - <s:processor name="concat"> - <s:beanshell> - <s:scriptvalue>Thread.sleep(200); -out = in1 + in2;</s:scriptvalue> - <s:beanshellinputlist> - <s:beanshellinput s:syntactictype="'text/plain'">in1</s:beanshellinput> - <s:beanshellinput s:syntactictype="'text/plain'">in2</s:beanshellinput> - </s:beanshellinputlist> - <s:beanshelloutputlist> - <s:beanshelloutput s:syntactictype="'text/plain'">out</s:beanshelloutput> - </s:beanshelloutputlist> - <s:dependencies s:classloader="iteration" /> - </s:beanshell> - </s:processor> - <s:link source="in1" sink="concat:in1" /> - <s:link source="in2" sink="concat:in2" /> - <s:link source="concat:out" sink="out" /> - <s:source name="in1" /> - <s:source name="in2" /> - <s:sink name="out" /> - </s:scufl> - </s:workflow> - </s:processor> - <s:link source="in1" sink="Nested_Workflow:in1" /> - <s:link source="in2" sink="Nested_Workflow:in2" /> - <s:link source="Nested_Workflow:out" sink="out" /> - <s:source name="in1" /> - <s:source name="in2" /> - <s:sink name="out" /> - </s:scufl> - </s:workflow> - <s:mergemode input="in2" mode="merge" /> - </s:processor> - <s:link source="constant:value" sink="constant" /> - <s:link source="constant:value" sink="merge:in1" /> - <s:link source="generate_list:list" sink="list" /> - <s:link source="generate_list:list" sink="merge:in2" /> - <s:link source="generate_list:list" sink="merge:in2" /> - <s:link source="merge:out" sink="concat" /> - <s:source name="input" /> - <s:sink name="concat"> - <s:metadata> - <s:mimeTypes> - <s:mimeType>'text/plain'</s:mimeType> - </s:mimeTypes> - </s:metadata> - </s:sink> - <s:sink name="list"> - <s:metadata> - <s:mimeTypes> - <s:mimeType>l('text/plain')</s:mimeType> - </s:mimeTypes> - </s:metadata> - </s:sink> - <s:sink name="constant"> - <s:metadata> - <s:mimeTypes> - <s:mimeType>'text/plain'</s:mimeType> - </s:mimeTypes> - </s:metadata> - </s:sink> - <s:coordination name="constant_BLOCKON_generate_list"> - <s:condition> - <s:state>Completed</s:state> - <s:target>generate_list</s:target> - </s:condition> - <s:action> - <s:target>constant</s:target> - <s:statechange> - <s:from>Scheduled</s:from> - <s:to>Running</s:to> - </s:statechange> - </s:action> - </s:coordination> - <s:coordination name="merge_BLOCKON_generate_list"> - <s:condition> - <s:state>Completed</s:state> - <s:target>generate_list</s:target> - </s:condition> - <s:action> - <s:target>merge</s:target> - <s:statechange> - <s:from>Scheduled</s:from> - <s:to>Running</s:to> - </s:statechange> - </s:action> - </s:coordination> -</s:scufl> - http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-graph-view/pom.xml ---------------------------------------------------------------------- diff --git a/taverna-workbench-graph-view/pom.xml b/taverna-workbench-graph-view/pom.xml deleted file mode 100644 index df8cdc9..0000000 --- a/taverna-workbench-graph-view/pom.xml +++ /dev/null @@ -1,88 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> - <modelVersion>4.0.0</modelVersion> - <parent> - <groupId>net.sf.taverna.t2</groupId> - <artifactId>ui-components</artifactId> - <version>2.0-SNAPSHOT</version> - </parent> - <groupId>net.sf.taverna.t2.ui-components</groupId> - <artifactId>graph-view</artifactId> - <packaging>bundle</packaging> - <name>Graph View</name> - <dependencies> - <dependency> - <groupId>net.sf.taverna.t2.ui-api</groupId> - <artifactId>workbench-api</artifactId> - <version>${t2.ui.api.version}</version> - </dependency> - <dependency> - <groupId>net.sf.taverna.t2.ui-api</groupId> - <artifactId>configuration-api</artifactId> - <version>${t2.ui.api.version}</version> - </dependency> - <dependency> - <groupId>net.sf.taverna.t2.ui-api</groupId> - <artifactId>file-api</artifactId> - <version>${t2.ui.api.version}</version> - </dependency> - <dependency> - <groupId>net.sf.taverna.t2.ui-api</groupId> - <artifactId>menu-api</artifactId> - <version>${t2.ui.api.version}</version> - </dependency> - <dependency> - <groupId>net.sf.taverna.t2.ui-components</groupId> - <artifactId>design-ui</artifactId> - <version>${t2.ui.components.version}</version> - </dependency> - <dependency> - <groupId>net.sf.taverna.t2.ui-components</groupId> - <artifactId>workflow-view</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>net.sf.taverna.t2.ui-components</groupId> - <artifactId>graph-model</artifactId> - <version>${project.version}</version> - </dependency> - <dependency> - <groupId>net.sf.taverna.t2.lang</groupId> - <artifactId>observer</artifactId> - <version>${t2.lang.version}</version> - </dependency> - <dependency> - <groupId>net.sf.taverna.t2.lang</groupId> - <artifactId>ui</artifactId> - <version>${t2.lang.version}</version> - </dependency> - <dependency> - <groupId>net.sf.taverna.t2.lang</groupId> - <artifactId>io</artifactId> - <version>${t2.lang.version}</version> - </dependency> - <dependency> - <groupId>uk.org.taverna.commons</groupId> - <artifactId>taverna-services-api</artifactId> - </dependency> - <dependency> - <groupId>uk.org.taverna.scufl2</groupId> - <artifactId>scufl2-api</artifactId> - </dependency> - - <dependency> - <groupId>org.apache.batik</groupId> - <artifactId>batik-osgi</artifactId> - </dependency> - <dependency> - <groupId>log4j</groupId> - <artifactId>log4j</artifactId> - </dependency> - - <dependency> - <groupId>junit</groupId> - <artifactId>junit</artifactId> - <scope>test</scope> - </dependency> - </dependencies> -</project> http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-graph-view/src/main/java/net/sf/taverna/t2/workbench/views/graph/AutoScrollInteractor.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-graph-view/src/main/java/net/sf/taverna/t2/workbench/views/graph/AutoScrollInteractor.java b/taverna-workbench-graph-view/src/main/java/net/sf/taverna/t2/workbench/views/graph/AutoScrollInteractor.java deleted file mode 100644 index 65a4aa5..0000000 --- a/taverna-workbench-graph-view/src/main/java/net/sf/taverna/t2/workbench/views/graph/AutoScrollInteractor.java +++ /dev/null @@ -1,181 +0,0 @@ -package net.sf.taverna.t2.workbench.views.graph; - -import static java.awt.event.InputEvent.BUTTON1_DOWN_MASK; -import static java.awt.event.InputEvent.BUTTON1_MASK; -import static java.awt.event.MouseEvent.BUTTON1; -import static java.awt.event.MouseEvent.MOUSE_DRAGGED; -import static java.awt.event.MouseEvent.MOUSE_PRESSED; -import static java.lang.System.currentTimeMillis; - -import java.awt.Component; -import java.awt.Dimension; -import java.awt.event.InputEvent; -import java.awt.event.MouseEvent; -import java.awt.geom.AffineTransform; -import java.util.Timer; -import java.util.TimerTask; - -import org.apache.batik.swing.JSVGCanvas; -import org.apache.batik.swing.gvt.InteractorAdapter; -import org.apache.batik.swing.gvt.JGVTComponent; - -/** - * An interactor that scrolls the canvas view if the mouse is dragged to the - * edge of the canvas. - * - * @author David Withers - */ -public class AutoScrollInteractor extends InteractorAdapter { - /** - * Defines the border around the canvas in which the auto scroll will become - * active. - */ - private static final int BORDER = 25; - /** - * The interval, in milliseconds, between scroll events. - */ - private static final long SCROLL_INTERVAL = 100; - - private JSVGCanvas svgCanvas; - private Dimension canvasSize; - private int scrollX; - private int scrollY; - private int mouseX; - private int mouseY; - - /** - * Component used to identify mouse events generated by this class - */ - private Component eventIdentifier = new Component() { - private static final long serialVersionUID = -295542754718804222L; - }; - - private static Timer timer = new Timer("GraphAutoScrollTimer", true); - - private TimerTask task; - - /** - * Whether the interactor has finished. - */ - protected boolean finished = true; - - public AutoScrollInteractor(JSVGCanvas svgCanvas) { - this.svgCanvas = svgCanvas; - } - - @Override - public boolean startInteraction(InputEvent ie) { - int mods = ie.getModifiers(); - if (ie.getID() == MOUSE_PRESSED && (mods & BUTTON1_MASK) != 0) { - AffineTransform transform = svgCanvas.getRenderingTransform(); - // check if we're zoomed in - if (transform.getScaleX() > 1d || transform.getScaleY() > 1d) { - canvasSize = svgCanvas.getSize(); - return true; - } - } - return false; - } - - @Override - public boolean endInteraction() { - return finished; - } - - @Override - public void mousePressed(final MouseEvent e) { - if (startInteraction(e)) { - finished = false; - task = new TimerTask() { - @Override - public void run() { - scrollTimerCallback(e); - } - }; - timer.schedule(task, 0, SCROLL_INTERVAL); - } - } - - /** - * Dispatches a mouse drag event that updates the mouse location by the - * amount that the canvas has been scrolled. - * - * @param dragX - * @param dragY - */ - private void dispatchDragEvent(double dragX, double dragY) { - int x = (int) (mouseX + dragX); - int y = (int) (mouseY + dragY); - MouseEvent mouseDragEvent = new MouseEvent(eventIdentifier, - MOUSE_DRAGGED, currentTimeMillis(), BUTTON1_DOWN_MASK, x, y, 1, - false, BUTTON1); - svgCanvas.dispatchEvent(mouseDragEvent); - } - - @Override - public void mouseReleased(MouseEvent e) { - if (!finished) { - finished = true; - scrollX = 0; - scrollY = 0; - if (task != null) - task.cancel(); - } - } - - @Override - public void mouseDragged(MouseEvent e) { - // ignore events generated by this class - if (!finished && e.getSource() != eventIdentifier) { - mouseX = e.getX(); - mouseY = e.getY(); - int minX = BORDER; - int maxX = canvasSize.width - BORDER; - int minY = BORDER; - int maxY = canvasSize.height - BORDER; - - scrollX = (mouseX < minX) ? (minX - mouseX) - : (mouseX > maxX) ? (maxX - mouseX) : 0; - scrollY = (mouseY < minY) ? (minY - mouseY) - : (mouseY > maxY) ? (maxY - mouseY) : 0; - } - } - - private void scrollTimerCallback(MouseEvent e) { - double x = scrollX; - double y = scrollY; - if (x == 0 && y == 0) - return; - - JGVTComponent c = (JGVTComponent) e.getSource(); - AffineTransform rt = (AffineTransform) c.getRenderingTransform() - .clone(); - double currentTranslateX = rt.getTranslateX(); - double currentTranslateY = rt.getTranslateY(); - // the tranlation that will show the east edge - double maxTranslateX = -((canvasSize.width * rt.getScaleX()) - canvasSize.width); - // the translation that will show the south - double maxTranslateY = -((canvasSize.height * rt.getScaleY()) - canvasSize.height); - - if (x > 0 && currentTranslateX + x > 0) - // scroll left && not at west edge - x = -currentTranslateX; - else if (x < 0 && currentTranslateX + x < maxTranslateX) - // scroll right && not at east edge - x = maxTranslateX - currentTranslateX; - - if (y > 0 && currentTranslateY + y > 0) - // scroll up && not at north edge - y = -currentTranslateY; - else if (y < 0 && currentTranslateY + y < maxTranslateY) - // scroll down && not at south edge - y = maxTranslateY - currentTranslateY; - - if (x != 0d || y != 0d) { - AffineTransform at = AffineTransform.getTranslateInstance(x, y); - rt.preConcatenate(at); - c.setRenderingTransform(rt); - dispatchDragEvent(x, y); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-graph-view/src/main/java/net/sf/taverna/t2/workbench/views/graph/GraphViewComponent.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-graph-view/src/main/java/net/sf/taverna/t2/workbench/views/graph/GraphViewComponent.java b/taverna-workbench-graph-view/src/main/java/net/sf/taverna/t2/workbench/views/graph/GraphViewComponent.java deleted file mode 100644 index 55bcf3f..0000000 --- a/taverna-workbench-graph-view/src/main/java/net/sf/taverna/t2/workbench/views/graph/GraphViewComponent.java +++ /dev/null @@ -1,548 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program 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 (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.views.graph; - -import static java.awt.BorderLayout.CENTER; -import static java.awt.BorderLayout.NORTH; -import static javax.swing.Action.SHORT_DESCRIPTION; -import static javax.swing.Action.SMALL_ICON; -import static javax.swing.BoxLayout.PAGE_AXIS; -import static net.sf.taverna.t2.workbench.icons.WorkbenchIcons.allportIcon; -import static net.sf.taverna.t2.workbench.icons.WorkbenchIcons.blobIcon; -import static net.sf.taverna.t2.workbench.icons.WorkbenchIcons.expandNestedIcon; -import static net.sf.taverna.t2.workbench.icons.WorkbenchIcons.horizontalIcon; -import static net.sf.taverna.t2.workbench.icons.WorkbenchIcons.noportIcon; -import static net.sf.taverna.t2.workbench.icons.WorkbenchIcons.refreshIcon; -import static net.sf.taverna.t2.workbench.icons.WorkbenchIcons.verticalIcon; -import static net.sf.taverna.t2.workbench.icons.WorkbenchIcons.zoomInIcon; -import static net.sf.taverna.t2.workbench.icons.WorkbenchIcons.zoomOutIcon; -import static net.sf.taverna.t2.workbench.views.graph.config.GraphViewConfiguration.ALIGNMENT; -import static net.sf.taverna.t2.workbench.views.graph.config.GraphViewConfiguration.ANIMATION_ENABLED; -import static net.sf.taverna.t2.workbench.views.graph.config.GraphViewConfiguration.ANIMATION_SPEED; -import static net.sf.taverna.t2.workbench.views.graph.config.GraphViewConfiguration.PORT_STYLE; -import static org.apache.batik.swing.svg.AbstractJSVGComponent.ALWAYS_DYNAMIC; - -import java.awt.BorderLayout; -import java.awt.CardLayout; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.ComponentAdapter; -import java.awt.event.ComponentEvent; -import java.util.HashSet; -import java.util.IdentityHashMap; -import java.util.Map; -import java.util.Set; - -import javax.swing.AbstractAction; -import javax.swing.Action; -import javax.swing.BoxLayout; -import javax.swing.ButtonGroup; -import javax.swing.ImageIcon; -import javax.swing.JButton; -import javax.swing.JPanel; -import javax.swing.JToggleButton; -import javax.swing.JToolBar; -import javax.swing.Timer; -import javax.swing.border.EmptyBorder; - -import net.sf.taverna.t2.lang.observer.Observable; -import net.sf.taverna.t2.lang.observer.SwingAwareObserver; -import net.sf.taverna.t2.ui.menu.MenuManager; -import net.sf.taverna.t2.workbench.configuration.colour.ColourManager; -import net.sf.taverna.t2.workbench.configuration.workbench.WorkbenchConfiguration; -import net.sf.taverna.t2.workbench.edits.EditManager; -import net.sf.taverna.t2.workbench.edits.EditManager.AbstractDataflowEditEvent; -import net.sf.taverna.t2.workbench.edits.EditManager.EditManagerEvent; -import net.sf.taverna.t2.workbench.file.FileManager; -import net.sf.taverna.t2.workbench.file.events.ClosedDataflowEvent; -import net.sf.taverna.t2.workbench.file.events.FileManagerEvent; -import net.sf.taverna.t2.workbench.models.graph.Graph.Alignment; -import net.sf.taverna.t2.workbench.models.graph.GraphController; -import net.sf.taverna.t2.workbench.models.graph.GraphController.PortStyle; -import net.sf.taverna.t2.workbench.models.graph.svg.SVGGraphController; -import net.sf.taverna.t2.workbench.selection.SelectionManager; -import net.sf.taverna.t2.workbench.selection.events.SelectionManagerEvent; -import net.sf.taverna.t2.workbench.selection.events.WorkflowBundleSelectionEvent; -import net.sf.taverna.t2.workbench.selection.events.WorkflowSelectionEvent; -import net.sf.taverna.t2.workbench.ui.dndhandler.ServiceTransferHandler; -import net.sf.taverna.t2.workbench.ui.zaria.UIComponentSPI; -import net.sf.taverna.t2.workbench.views.graph.config.GraphViewConfiguration; -import net.sf.taverna.t2.workbench.views.graph.menu.ResetDiagramAction; -import net.sf.taverna.t2.workbench.views.graph.menu.ZoomInAction; -import net.sf.taverna.t2.workbench.views.graph.menu.ZoomOutAction; - -import org.apache.batik.swing.JSVGCanvas; -import org.apache.batik.swing.JSVGScrollPane; -import org.apache.batik.swing.gvt.GVTTreeRendererAdapter; -import org.apache.batik.swing.gvt.GVTTreeRendererEvent; -import org.apache.log4j.Logger; - -import uk.org.taverna.commons.services.ServiceRegistry; -import uk.org.taverna.scufl2.api.container.WorkflowBundle; -import uk.org.taverna.scufl2.api.core.Workflow; - -/** - * @author David Withers - * @author Alex Nenadic - * @author Tom Oinn - */ -public class GraphViewComponent extends JPanel implements UIComponentSPI { - private static final long serialVersionUID = 7404937056378331528L; - private static final Logger logger = Logger.getLogger(GraphViewComponent.class); - - private Workflow workflow; - private SVGGraphController graphController; - private JPanel diagramPanel; - - private Map<WorkflowBundle, Set<Workflow>> workflowsMap = new IdentityHashMap<>(); - - private Map<Workflow, SVGGraphController> graphControllerMap = new IdentityHashMap<>(); - private Map<Workflow, JPanel> diagramPanelMap = new IdentityHashMap<>(); - private Map<Workflow, Action[]> diagramActionsMap = new IdentityHashMap<>(); - - private Timer timer; - - private CardLayout cardLayout; - - private final ColourManager colourManager; - private final EditManager editManager; - private final MenuManager menuManager; - private final GraphViewConfiguration graphViewConfiguration; - private final WorkbenchConfiguration workbenchConfiguration; - private final SelectionManager selectionManager; - private final ServiceRegistry serviceRegistry; - - public GraphViewComponent(ColourManager colourManager, - EditManager editManager, FileManager fileManager, - MenuManager menuManager, - GraphViewConfiguration graphViewConfiguration, - WorkbenchConfiguration workbenchConfiguration, - SelectionManager selectionManager, ServiceRegistry serviceRegistry) { - this.colourManager = colourManager; - this.editManager = editManager; - this.menuManager = menuManager; - this.graphViewConfiguration = graphViewConfiguration; - this.workbenchConfiguration = workbenchConfiguration; - this.selectionManager = selectionManager; - this.serviceRegistry = serviceRegistry; - - cardLayout = new CardLayout(); - setLayout(cardLayout); - - ActionListener taskPerformer = new ActionListener() { - @Override - public void actionPerformed(ActionEvent evt) { - if (graphController != null) - graphController.redraw(); - timer.stop(); - } - }; - timer = new Timer(100, taskPerformer); - - addComponentListener(new ComponentAdapter() { - @Override - public void componentResized(ComponentEvent e) { - if (timer.isRunning()) - timer.restart(); - else - timer.start(); - } - }); - - editManager.addObserver(new EditManagerObserver()); - selectionManager.addObserver(new SelectionManagerObserver()); - fileManager.addObserver(new FileManagerObserver()); - } - - @Override - protected void finalize() throws Throwable { - if (timer != null) - timer.stop(); - } - - @Override - public String getName() { - return "Graph View Component"; - } - - @Override - public ImageIcon getIcon() { - return null; - } - - @Override - public void onDisplay() { - } - - @Override - public void onDispose() { - if (timer != null) - timer.stop(); - } - - private JPanel createDiagramPanel(Workflow workflow) { - final JPanel diagramPanel = new JPanel(new BorderLayout()); - - // get the default diagram settings - Alignment alignment = Alignment.valueOf(graphViewConfiguration - .getProperty(ALIGNMENT)); - PortStyle portStyle = PortStyle.valueOf(graphViewConfiguration - .getProperty(PORT_STYLE)); - boolean animationEnabled = Boolean.parseBoolean(graphViewConfiguration - .getProperty(ANIMATION_ENABLED)); - int animationSpeed = Integer.parseInt(graphViewConfiguration - .getProperty(ANIMATION_SPEED)); - - // create an SVG canvas - final JSVGCanvas svgCanvas = new JSVGCanvas(null, true, false); - svgCanvas.setEnableZoomInteractor(false); - svgCanvas.setEnableRotateInteractor(false); - svgCanvas.setDocumentState(ALWAYS_DYNAMIC); - svgCanvas.setTransferHandler(new ServiceTransferHandler(editManager, - menuManager, selectionManager, serviceRegistry)); - - AutoScrollInteractor asi = new AutoScrollInteractor(svgCanvas); - svgCanvas.addMouseListener(asi); - svgCanvas.addMouseMotionListener(asi); - - final JSVGScrollPane svgScrollPane = new MySvgScrollPane(svgCanvas); - - GVTTreeRendererAdapter gvtTreeRendererAdapter = new GVTTreeRendererAdapter() { - @Override - public void gvtRenderingCompleted(GVTTreeRendererEvent e) { - logger.info("Rendered svg"); - svgScrollPane.reset(); - diagramPanel.revalidate(); - } - }; - svgCanvas.addGVTTreeRendererListener(gvtTreeRendererAdapter); - - // create a graph controller - SVGGraphController svgGraphController = new SVGGraphController( - workflow, selectionManager.getSelectedProfile(), false, - svgCanvas, alignment, portStyle, editManager, menuManager, - colourManager, workbenchConfiguration); - svgGraphController.setDataflowSelectionModel(selectionManager - .getDataflowSelectionModel(workflow.getParent())); - svgGraphController.setAnimationSpeed(animationEnabled ? animationSpeed - : 0); - - graphControllerMap.put(workflow, svgGraphController); - - // Toolbar with actions related to graph - JToolBar graphActionsToolbar = graphActionsToolbar(workflow, - svgGraphController, svgCanvas, alignment, portStyle); - graphActionsToolbar.setAlignmentX(LEFT_ALIGNMENT); - graphActionsToolbar.setFloatable(false); - - // Panel to hold the toolbars - JPanel toolbarPanel = new JPanel(); - toolbarPanel.setLayout(new BoxLayout(toolbarPanel, PAGE_AXIS)); - toolbarPanel.add(graphActionsToolbar); - - diagramPanel.add(toolbarPanel, NORTH); - diagramPanel.add(svgScrollPane, CENTER); - - // JTextField workflowHierarchy = new JTextField(workflow.getName()); - // diagramPanel.add(workflowHierarchy, BorderLayout.SOUTH); - - return diagramPanel; - } - - @SuppressWarnings("serial") - private JToolBar graphActionsToolbar(Workflow workflow, - final SVGGraphController graphController, JSVGCanvas svgCanvas, - Alignment alignment, PortStyle portStyle) { - JToolBar toolBar = new JToolBar(); - - JButton resetDiagramButton = new JButton(); - resetDiagramButton.setBorder(new EmptyBorder(0, 2, 0, 2)); - JButton zoomInButton = new JButton(); - zoomInButton.setBorder(new EmptyBorder(0, 2, 0, 2)); - JButton zoomOutButton = new JButton(); - zoomOutButton.setBorder(new EmptyBorder(0, 2, 0, 2)); - - Action resetDiagramAction = svgCanvas.new ResetTransformAction(); - ResetDiagramAction.setDesignAction(resetDiagramAction); - resetDiagramAction.putValue(SHORT_DESCRIPTION, "Reset Diagram"); - resetDiagramAction.putValue(SMALL_ICON, refreshIcon); - resetDiagramButton.setAction(resetDiagramAction); - - Action zoomInAction = svgCanvas.new ZoomAction(1.2); - ZoomInAction.setDesignAction(zoomInAction); - zoomInAction.putValue(SHORT_DESCRIPTION, "Zoom In"); - zoomInAction.putValue(SMALL_ICON, zoomInIcon); - zoomInButton.setAction(zoomInAction); - - Action zoomOutAction = svgCanvas.new ZoomAction(1 / 1.2); - ZoomOutAction.setDesignAction(zoomOutAction); - zoomOutAction.putValue(SHORT_DESCRIPTION, "Zoom Out"); - zoomOutAction.putValue(SMALL_ICON, zoomOutIcon); - zoomOutButton.setAction(zoomOutAction); - - diagramActionsMap.put(workflow, new Action[] { resetDiagramAction, - zoomInAction, zoomOutAction }); - - toolBar.add(resetDiagramButton); - toolBar.add(zoomInButton); - toolBar.add(zoomOutButton); - - toolBar.addSeparator(); - - ButtonGroup nodeTypeGroup = new ButtonGroup(); - - JToggleButton noPorts = new JToggleButton(); - JToggleButton allPorts = new JToggleButton(); - JToggleButton blobs = new JToggleButton(); - nodeTypeGroup.add(noPorts); - nodeTypeGroup.add(allPorts); - nodeTypeGroup.add(blobs); - - if (portStyle.equals(PortStyle.NONE)) - noPorts.setSelected(true); - else if (portStyle.equals(PortStyle.ALL)) - allPorts.setSelected(true); - else - blobs.setSelected(true); - - noPorts.setAction(new AbstractAction() { - @Override - public void actionPerformed(ActionEvent arg0) { - graphController.setPortStyle(PortStyle.NONE); - graphController.redraw(); - } - }); - noPorts.getAction().putValue(SHORT_DESCRIPTION, - "Display no service ports"); - noPorts.getAction().putValue(SMALL_ICON, noportIcon); - noPorts.setFocusPainted(false); - - allPorts.setAction(new AbstractAction() { - @Override - public void actionPerformed(ActionEvent arg0) { - graphController.setPortStyle(PortStyle.ALL); - graphController.redraw(); - } - }); - allPorts.getAction().putValue(SHORT_DESCRIPTION, - "Display all service ports"); - allPorts.getAction().putValue(SMALL_ICON, allportIcon); - allPorts.setFocusPainted(false); - - blobs.setAction(new AbstractAction() { - @Override - public void actionPerformed(ActionEvent arg0) { - graphController.setPortStyle(PortStyle.BLOB); - graphController.redraw(); - } - }); - blobs.getAction().putValue(SHORT_DESCRIPTION, - "Display services as circles"); - blobs.getAction().putValue(SMALL_ICON, blobIcon); - blobs.setFocusPainted(false); - - toolBar.add(noPorts); - toolBar.add(allPorts); - toolBar.add(blobs); - - toolBar.addSeparator(); - - ButtonGroup alignmentGroup = new ButtonGroup(); - - JToggleButton vertical = new JToggleButton(); - JToggleButton horizontal = new JToggleButton(); - alignmentGroup.add(vertical); - alignmentGroup.add(horizontal); - - if (alignment.equals(Alignment.VERTICAL)) { - vertical.setSelected(true); - } else { - horizontal.setSelected(true); - } - - vertical.setAction(new AbstractAction() { - @Override - public void actionPerformed(ActionEvent arg0) { - graphController.setAlignment(Alignment.VERTICAL); - graphController.redraw(); - } - }); - vertical.getAction().putValue(SHORT_DESCRIPTION, - "Align services vertically"); - vertical.getAction().putValue(SMALL_ICON, verticalIcon); - vertical.setFocusPainted(false); - - horizontal.setAction(new AbstractAction() { - @Override - public void actionPerformed(ActionEvent arg0) { - graphController.setAlignment(Alignment.HORIZONTAL); - graphController.redraw(); - } - - }); - horizontal.getAction().putValue(SHORT_DESCRIPTION, - "Align services horizontally"); - horizontal.getAction().putValue(SMALL_ICON, horizontalIcon); - horizontal.setFocusPainted(false); - - toolBar.add(vertical); - toolBar.add(horizontal); - - toolBar.addSeparator(); - - JToggleButton expandNested = new JToggleButton(); - expandNested.setSelected(true); - - expandNested.setAction(new AbstractAction() { - @Override - public void actionPerformed(ActionEvent arg0) { - graphController.setExpandNestedDataflows(!graphController - .expandNestedDataflows()); - graphController.redraw(); - } - }); - expandNested.getAction().putValue(SHORT_DESCRIPTION, - "Expand Nested Workflows"); - expandNested.getAction().putValue(SMALL_ICON, expandNestedIcon); - expandNested.setFocusPainted(false); - toolBar.add(expandNested); - - return toolBar; - } - - /** - * Sets the Workflow to display in the graph view. - * - * @param workflow - */ - private void setWorkflow(Workflow workflow) { - this.workflow = workflow; - if (!diagramPanelMap.containsKey(workflow)) - addWorkflow(workflow); - graphController = graphControllerMap.get(workflow); - diagramPanel = diagramPanelMap.get(workflow); - Action[] actions = diagramActionsMap.get(workflow); - if (actions != null && actions.length == 3) { - ResetDiagramAction.setDesignAction(actions[0]); - ZoomInAction.setDesignAction(actions[1]); - ZoomOutAction.setDesignAction(actions[2]); - } - cardLayout.show(this, String.valueOf(diagramPanel.hashCode())); - graphController.redraw(); - } - - private void addWorkflow(Workflow workflow) { - JPanel newDiagramPanel = createDiagramPanel(workflow); - add(newDiagramPanel, String.valueOf(newDiagramPanel.hashCode())); - diagramPanelMap.put(workflow, newDiagramPanel); - if (!workflowsMap.containsKey(workflow.getParent())) - workflowsMap.put(workflow.getParent(), new HashSet<Workflow>()); - workflowsMap.get(workflow.getParent()).add(workflow); - } - - private void removeWorkflow(Workflow workflow) { - JPanel panel = diagramPanelMap.remove(workflow); - if (panel != null) - remove(panel); - SVGGraphController removedController = graphControllerMap.remove(workflow); - if (removedController != null) - removedController.shutdown(); - diagramActionsMap.remove(workflow); - Set<Workflow> workflows = workflowsMap.get(workflow.getParent()); - if (workflows != null) - workflows.remove(workflow); - } - - public GraphController getGraphController(Workflow workflow) { - return graphControllerMap.get(workflow); - } - - private class EditManagerObserver extends - SwingAwareObserver<EditManagerEvent> { - @Override - public void notifySwing(Observable<EditManagerEvent> sender, - EditManagerEvent message) { - if (!(message instanceof AbstractDataflowEditEvent)) - return; - AbstractDataflowEditEvent dataflowEditEvent = (AbstractDataflowEditEvent) message; - if (dataflowEditEvent.getDataFlow() != workflow.getParent()) - return; - - boolean animationEnabled = Boolean - .parseBoolean(graphViewConfiguration - .getProperty(ANIMATION_ENABLED)); - int animationSpeed = (animationEnabled ? Integer - .parseInt(graphViewConfiguration - .getProperty(ANIMATION_SPEED)) : 0); - boolean animationSettingChanged = (animationEnabled != (graphController - .getAnimationSpeed() != 0)); - - if (graphController.isDotMissing() || animationSettingChanged) { - removeWorkflow(workflow); - setWorkflow(workflow); - } else { - if (animationSpeed != graphController.getAnimationSpeed()) - graphController.setAnimationSpeed(animationSpeed); - graphController.redraw(); - } - } - } - - private class FileManagerObserver extends SwingAwareObserver<FileManagerEvent> { - @Override - public void notifySwing(Observable<FileManagerEvent> sender, final FileManagerEvent message) { - if (!(message instanceof ClosedDataflowEvent)) - return; - ClosedDataflowEvent closedDataflowEvent = (ClosedDataflowEvent) message; - - WorkflowBundle workflowBundle = closedDataflowEvent.getDataflow(); - if (workflowsMap.containsKey(workflowBundle)) - for (Workflow workflow : workflowsMap.remove(workflowBundle)) - removeWorkflow(workflow); - } - } - - private class SelectionManagerObserver extends - SwingAwareObserver<SelectionManagerEvent> { - @Override - public void notifySwing(Observable<SelectionManagerEvent> sender, - SelectionManagerEvent message) { - if (message instanceof WorkflowSelectionEvent) - setWorkflow(selectionManager.getSelectedWorkflow()); - else if (message instanceof WorkflowBundleSelectionEvent) - setWorkflow(selectionManager.getSelectedWorkflow()); - } - } - - private class MySvgScrollPane extends JSVGScrollPane { - private static final long serialVersionUID = -1539947450704269879L; - - public MySvgScrollPane(JSVGCanvas canvas) { - super(canvas); - } - - @Override - public void reset() { - super.resizeScrollBars(); - super.reset(); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-graph-view/src/main/java/net/sf/taverna/t2/workbench/views/graph/GraphViewComponentFactory.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-graph-view/src/main/java/net/sf/taverna/t2/workbench/views/graph/GraphViewComponentFactory.java b/taverna-workbench-graph-view/src/main/java/net/sf/taverna/t2/workbench/views/graph/GraphViewComponentFactory.java deleted file mode 100644 index 85f2929..0000000 --- a/taverna-workbench-graph-view/src/main/java/net/sf/taverna/t2/workbench/views/graph/GraphViewComponentFactory.java +++ /dev/null @@ -1,100 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program 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 (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.views.graph; - -import javax.swing.ImageIcon; - -import uk.org.taverna.commons.services.ServiceRegistry; - -import net.sf.taverna.t2.ui.menu.MenuManager; -import net.sf.taverna.t2.workbench.configuration.colour.ColourManager; -import net.sf.taverna.t2.workbench.configuration.workbench.WorkbenchConfiguration; -import net.sf.taverna.t2.workbench.edits.EditManager; -import net.sf.taverna.t2.workbench.file.FileManager; -import net.sf.taverna.t2.workbench.selection.SelectionManager; -import net.sf.taverna.t2.workbench.ui.zaria.UIComponentFactorySPI; -import net.sf.taverna.t2.workbench.ui.zaria.UIComponentSPI; -import net.sf.taverna.t2.workbench.views.graph.config.GraphViewConfiguration; - -/** - * @author David Withers - */ -public class GraphViewComponentFactory implements UIComponentFactorySPI { - private EditManager editManager; - private FileManager fileManager; - private MenuManager menuManager; - private SelectionManager selectionManager; - private ColourManager colourManager; - private WorkbenchConfiguration workbenchConfiguration; - private GraphViewConfiguration graphViewConfiguration; - private ServiceRegistry serviceRegistry; - - @Override - public UIComponentSPI getComponent() { - return new GraphViewComponent(colourManager, editManager, fileManager, - menuManager, graphViewConfiguration, workbenchConfiguration, - selectionManager, serviceRegistry); - } - - @Override - public ImageIcon getIcon() { - return null; - } - - @Override - public String getName() { - return "Graph View"; - } - - public void setEditManager(EditManager editManager) { - this.editManager = editManager; - } - - public void setFileManager(FileManager fileManager) { - this.fileManager = fileManager; - } - - public void setMenuManager(MenuManager menuManager) { - this.menuManager = menuManager; - } - - public void setSelectionManager(SelectionManager selectionManager) { - this.selectionManager = selectionManager; - } - - public void setColourManager(ColourManager colourManager) { - this.colourManager = colourManager; - } - - public void setWorkbenchConfiguration( - WorkbenchConfiguration workbenchConfiguration) { - this.workbenchConfiguration = workbenchConfiguration; - } - - public void setGraphViewConfiguration( - GraphViewConfiguration graphViewConfiguration) { - this.graphViewConfiguration = graphViewConfiguration; - } - - public void setServiceRegistry(ServiceRegistry serviceRegistry) { - this.serviceRegistry = serviceRegistry; - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-graph-view/src/main/java/net/sf/taverna/t2/workbench/views/graph/actions/AddWFInputAction.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-graph-view/src/main/java/net/sf/taverna/t2/workbench/views/graph/actions/AddWFInputAction.java b/taverna-workbench-graph-view/src/main/java/net/sf/taverna/t2/workbench/views/graph/actions/AddWFInputAction.java deleted file mode 100644 index 8c16e4a..0000000 --- a/taverna-workbench-graph-view/src/main/java/net/sf/taverna/t2/workbench/views/graph/actions/AddWFInputAction.java +++ /dev/null @@ -1,69 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program 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 (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.views.graph.actions; - -import static java.awt.event.InputEvent.ALT_DOWN_MASK; -import static java.awt.event.InputEvent.SHIFT_DOWN_MASK; -import static java.awt.event.KeyEvent.VK_I; -import static javax.swing.KeyStroke.getKeyStroke; -import static net.sf.taverna.t2.workbench.icons.WorkbenchIcons.inputIcon; - -import java.awt.event.ActionEvent; - -import javax.swing.AbstractAction; - -import net.sf.taverna.t2.ui.menu.DesignOnlyAction; -import net.sf.taverna.t2.workbench.design.actions.AddDataflowInputAction; -import net.sf.taverna.t2.workbench.edits.EditManager; -import net.sf.taverna.t2.workbench.selection.SelectionManager; -import uk.org.taverna.scufl2.api.core.Workflow; - -/** - * An action that adds a workflow input. - * - * @author Alex Nenadic - * @author Alan R Williams - */ -@SuppressWarnings("serial") -public class AddWFInputAction extends AbstractAction implements - DesignOnlyAction { - private final EditManager editManager; - private final SelectionManager selectionManager; - - public AddWFInputAction(EditManager editManager, - SelectionManager selectionManager) { - super(); - this.editManager = editManager; - this.selectionManager = selectionManager; - putValue(SMALL_ICON, inputIcon); - putValue(NAME, "Workflow input port"); - putValue(SHORT_DESCRIPTION, "Workflow input port"); - putValue(ACCELERATOR_KEY, - getKeyStroke(VK_I, SHIFT_DOWN_MASK | ALT_DOWN_MASK)); - } - - @Override - public void actionPerformed(ActionEvent e) { - Workflow workflow = selectionManager.getSelectedWorkflow(); - new AddDataflowInputAction(workflow, null, editManager, - selectionManager).actionPerformed(e); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-graph-view/src/main/java/net/sf/taverna/t2/workbench/views/graph/actions/AddWFOutputAction.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-graph-view/src/main/java/net/sf/taverna/t2/workbench/views/graph/actions/AddWFOutputAction.java b/taverna-workbench-graph-view/src/main/java/net/sf/taverna/t2/workbench/views/graph/actions/AddWFOutputAction.java deleted file mode 100644 index 4027773..0000000 --- a/taverna-workbench-graph-view/src/main/java/net/sf/taverna/t2/workbench/views/graph/actions/AddWFOutputAction.java +++ /dev/null @@ -1,69 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program 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 (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.views.graph.actions; - -import static java.awt.event.InputEvent.ALT_DOWN_MASK; -import static java.awt.event.InputEvent.SHIFT_DOWN_MASK; -import static java.awt.event.KeyEvent.VK_O; -import static javax.swing.KeyStroke.getKeyStroke; - -import java.awt.event.ActionEvent; - -import javax.swing.AbstractAction; - -import net.sf.taverna.t2.ui.menu.DesignOnlyAction; -import net.sf.taverna.t2.workbench.design.actions.AddDataflowOutputAction; -import net.sf.taverna.t2.workbench.edits.EditManager; -import net.sf.taverna.t2.workbench.icons.WorkbenchIcons; -import net.sf.taverna.t2.workbench.selection.SelectionManager; -import uk.org.taverna.scufl2.api.core.Workflow; - -/** - * An action that adds a workflow output. - * - * @author Alex Nenadic - * @author Alan R Williams - */ -@SuppressWarnings("serial") -public class AddWFOutputAction extends AbstractAction implements - DesignOnlyAction { - private final EditManager editManager; - private final SelectionManager selectionManager; - - public AddWFOutputAction(EditManager editManager, - SelectionManager selectionManager) { - super(); - this.editManager = editManager; - this.selectionManager = selectionManager; - putValue(SMALL_ICON, WorkbenchIcons.outputIcon); - putValue(NAME, "Workflow output port"); - putValue(SHORT_DESCRIPTION, "Workflow output port"); - putValue(ACCELERATOR_KEY, - getKeyStroke(VK_O, SHIFT_DOWN_MASK | ALT_DOWN_MASK)); - } - - @Override - public void actionPerformed(ActionEvent e) { - Workflow workflow = selectionManager.getSelectedWorkflow(); - new AddDataflowOutputAction(workflow, null, editManager, - selectionManager).actionPerformed(e); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-graph-view/src/main/java/net/sf/taverna/t2/workbench/views/graph/actions/DeleteGraphComponentAction.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-graph-view/src/main/java/net/sf/taverna/t2/workbench/views/graph/actions/DeleteGraphComponentAction.java b/taverna-workbench-graph-view/src/main/java/net/sf/taverna/t2/workbench/views/graph/actions/DeleteGraphComponentAction.java deleted file mode 100644 index 86849b6..0000000 --- a/taverna-workbench-graph-view/src/main/java/net/sf/taverna/t2/workbench/views/graph/actions/DeleteGraphComponentAction.java +++ /dev/null @@ -1,180 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program 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 (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.views.graph.actions; - -import static java.awt.event.KeyEvent.VK_DELETE; -import static javax.swing.KeyStroke.getKeyStroke; -import static net.sf.taverna.t2.workbench.icons.WorkbenchIcons.deleteIcon; - -import java.awt.event.ActionEvent; -import java.util.Set; - -import javax.swing.AbstractAction; - -import net.sf.taverna.t2.lang.observer.Observable; -import net.sf.taverna.t2.lang.observer.Observer; -import net.sf.taverna.t2.lang.observer.SwingAwareObserver; -import net.sf.taverna.t2.ui.menu.DesignOnlyAction; -import net.sf.taverna.t2.workbench.design.actions.RemoveConditionAction; -import net.sf.taverna.t2.workbench.design.actions.RemoveDataflowInputPortAction; -import net.sf.taverna.t2.workbench.design.actions.RemoveDataflowOutputPortAction; -import net.sf.taverna.t2.workbench.design.actions.RemoveDatalinkAction; -import net.sf.taverna.t2.workbench.design.actions.RemoveProcessorAction; -import net.sf.taverna.t2.workbench.edits.EditManager; -import net.sf.taverna.t2.workbench.selection.DataflowSelectionModel; -import net.sf.taverna.t2.workbench.selection.SelectionManager; -import net.sf.taverna.t2.workbench.selection.events.DataflowSelectionMessage; -import net.sf.taverna.t2.workbench.selection.events.SelectionManagerEvent; -import net.sf.taverna.t2.workbench.selection.events.WorkflowBundleSelectionEvent; -import uk.org.taverna.scufl2.api.container.WorkflowBundle; -import uk.org.taverna.scufl2.api.core.ControlLink; -import uk.org.taverna.scufl2.api.core.DataLink; -import uk.org.taverna.scufl2.api.core.Processor; -import uk.org.taverna.scufl2.api.port.InputWorkflowPort; -import uk.org.taverna.scufl2.api.port.OutputWorkflowPort; - -/** - * An action that deletes the selected graph component. - * - * @author Alex Nenadic - */ -@SuppressWarnings("serial") -public class DeleteGraphComponentAction extends AbstractAction implements DesignOnlyAction { - /** Current workflow's selection model event observer.*/ - private Observer<DataflowSelectionMessage> workflowSelectionObserver = new DataflowSelectionObserver(); - - private final EditManager editManager; - private final SelectionManager selectionManager; - - public DeleteGraphComponentAction(EditManager editManager, final SelectionManager selectionManager) { - super(); - this.editManager = editManager; - this.selectionManager = selectionManager; - putValue(SMALL_ICON, deleteIcon); - putValue(NAME, "Delete"); - putValue(SHORT_DESCRIPTION, "Delete selected component"); - putValue(ACCELERATOR_KEY, getKeyStroke(VK_DELETE, 0)); - setEnabled(false); - - selectionManager.addObserver(new SelectionManagerObserver()); - } - - @Override - public void actionPerformed(ActionEvent e) { - WorkflowBundle workflowBundle = selectionManager - .getSelectedWorkflowBundle(); - DataflowSelectionModel dataFlowSelectionModel = selectionManager - .getDataflowSelectionModel(workflowBundle); - // Get all selected components - Set<Object> selectedWFComponents = dataFlowSelectionModel.getSelection(); - for (Object selectedWFComponent : selectedWFComponents) - if (selectedWFComponent instanceof Processor) { - Processor processor = (Processor) selectedWFComponent; - new RemoveProcessorAction(processor.getParent(), processor, - null, editManager, selectionManager).actionPerformed(e); - } else if (selectedWFComponent instanceof DataLink) { - DataLink dataLink = (DataLink) selectedWFComponent; - new RemoveDatalinkAction(dataLink.getParent(), dataLink, null, - editManager, selectionManager).actionPerformed(e); - } else if (selectedWFComponent instanceof InputWorkflowPort) { - InputWorkflowPort port = (InputWorkflowPort) selectedWFComponent; - new RemoveDataflowInputPortAction(port.getParent(), port, null, - editManager, selectionManager).actionPerformed(e); - } else if (selectedWFComponent instanceof OutputWorkflowPort) { - OutputWorkflowPort port = (OutputWorkflowPort) selectedWFComponent; - new RemoveDataflowOutputPortAction(port.getParent(), port, - null, editManager, selectionManager).actionPerformed(e); - } else if (selectedWFComponent instanceof ControlLink) { - ControlLink controlLink = (ControlLink) selectedWFComponent; - new RemoveConditionAction(controlLink.getParent(), controlLink, - null, editManager, selectionManager).actionPerformed(e); - } - } - - /** - * Check if action should be enabled or disabled and update its status. - */ - public void updateStatus(WorkflowBundle selectionWorkflowBundle) { - if (selectionWorkflowBundle != null) { - DataflowSelectionModel selectionModel = selectionManager - .getDataflowSelectionModel(selectionWorkflowBundle); - Set<Object> selection = selectionModel.getSelection(); - if (!selection.isEmpty()) { - // Take the first selected item - we only support single selections anyway - Object selected = selection.toArray()[0]; - if ((selected instanceof Processor) - || (selected instanceof InputWorkflowPort) - || (selected instanceof OutputWorkflowPort) - || (selected instanceof DataLink) - || (selected instanceof ControlLink)) { - setEnabled(true); - return; - } - } - } - setEnabled(false); - } - - /** - * Observes events on workflow Selection Manager, i.e. when a workflow node - * is selected in the graph view, and enables/disables this action - * accordingly. - */ - private final class DataflowSelectionObserver extends - SwingAwareObserver<DataflowSelectionMessage> { - @Override - public void notifySwing(Observable<DataflowSelectionMessage> sender, - DataflowSelectionMessage message) { - updateStatus(selectionManager.getSelectedWorkflowBundle()); - } - } - - private final class SelectionManagerObserver extends - SwingAwareObserver<SelectionManagerEvent> { - @Override - public void notifySwing(Observable<SelectionManagerEvent> sender, - SelectionManagerEvent message) { - if (!(message instanceof WorkflowBundleSelectionEvent)) - return; - WorkflowBundleSelectionEvent workflowBundleSelectionEvent = (WorkflowBundleSelectionEvent) message; - WorkflowBundle oldFlow = workflowBundleSelectionEvent - .getPreviouslySelectedWorkflowBundle(); - WorkflowBundle newFlow = workflowBundleSelectionEvent - .getSelectedWorkflowBundle(); - - /* - * Remove the workflow selection model listener from the previous - * (if any) and add to the new workflow (if any) - */ - if (oldFlow != null) - selectionManager.getDataflowSelectionModel(oldFlow) - .removeObserver(workflowSelectionObserver); - - // Update the buttons status as current dataflow has changed - updateStatus(newFlow); - - if (newFlow != null) - selectionManager.getDataflowSelectionModel(newFlow) - .addObserver(workflowSelectionObserver); - } - } - -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-graph-view/src/main/java/net/sf/taverna/t2/workbench/views/graph/actions/RenameWFInputOutputProcessorAction.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-graph-view/src/main/java/net/sf/taverna/t2/workbench/views/graph/actions/RenameWFInputOutputProcessorAction.java b/taverna-workbench-graph-view/src/main/java/net/sf/taverna/t2/workbench/views/graph/actions/RenameWFInputOutputProcessorAction.java deleted file mode 100644 index f56a0e0..0000000 --- a/taverna-workbench-graph-view/src/main/java/net/sf/taverna/t2/workbench/views/graph/actions/RenameWFInputOutputProcessorAction.java +++ /dev/null @@ -1,184 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program 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 (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.views.graph.actions; - -import static java.awt.event.KeyEvent.VK_F2; -import static javax.swing.JOptionPane.WARNING_MESSAGE; -import static javax.swing.JOptionPane.showMessageDialog; -import static javax.swing.KeyStroke.getKeyStroke; - -import java.awt.event.ActionEvent; -import java.util.Set; - -import javax.swing.AbstractAction; - -import net.sf.taverna.t2.lang.observer.Observable; -import net.sf.taverna.t2.lang.observer.Observer; -import net.sf.taverna.t2.lang.observer.SwingAwareObserver; -import net.sf.taverna.t2.ui.menu.DesignOnlyAction; -import net.sf.taverna.t2.workbench.design.actions.EditDataflowInputPortAction; -import net.sf.taverna.t2.workbench.design.actions.EditDataflowOutputPortAction; -import net.sf.taverna.t2.workbench.design.actions.RenameProcessorAction; -import net.sf.taverna.t2.workbench.edits.EditManager; -import net.sf.taverna.t2.workbench.icons.WorkbenchIcons; -import net.sf.taverna.t2.workbench.selection.DataflowSelectionModel; -import net.sf.taverna.t2.workbench.selection.SelectionManager; -import net.sf.taverna.t2.workbench.selection.events.DataflowSelectionMessage; -import net.sf.taverna.t2.workbench.selection.events.SelectionManagerEvent; -import net.sf.taverna.t2.workbench.selection.events.WorkflowBundleSelectionEvent; -import uk.org.taverna.scufl2.api.container.WorkflowBundle; -import uk.org.taverna.scufl2.api.core.Processor; -import uk.org.taverna.scufl2.api.port.InputWorkflowPort; -import uk.org.taverna.scufl2.api.port.OutputWorkflowPort; - -/** - * An action that allows user to rename workflow input, output or - * processor, in case one of these is currently selected in the Graph View. - * - * @author Alex Nenadic - */ -@SuppressWarnings("serial") -public class RenameWFInputOutputProcessorAction extends AbstractAction implements DesignOnlyAction { - /** Current workflow's selection model event observer.*/ - private Observer<DataflowSelectionMessage> workflowSelectionObserver = new DataflowSelectionObserver(); - - private final EditManager editManager; - private final SelectionManager selectionManager; - - public RenameWFInputOutputProcessorAction(EditManager editManager, - final SelectionManager selectionManager) { - super(); - this.editManager = editManager; - this.selectionManager = selectionManager; - putValue(SMALL_ICON, WorkbenchIcons.renameIcon); - putValue(NAME, "Rename"); - putValue(SHORT_DESCRIPTION, "Rename inputs, outputs or services"); - putValue(ACCELERATOR_KEY, getKeyStroke(VK_F2, 0)); - setEnabled(false); - - selectionManager.addObserver(new SelectionManagerObserver()); - } - - @Override - public void actionPerformed(ActionEvent e) { - WorkflowBundle workflowBundle = selectionManager - .getSelectedWorkflowBundle(); - DataflowSelectionModel dataFlowSelectionModel = selectionManager - .getDataflowSelectionModel(workflowBundle); - // Get selected port - Set<Object> selectedWFComponents = dataFlowSelectionModel - .getSelection(); - if (selectedWFComponents.size() > 1) { - showMessageDialog( - null, - "Only one workflow component should be selected for this action.", - "Warning", WARNING_MESSAGE); - } else { - Object selectedWFComponent = selectedWFComponents.toArray()[0]; - if (selectedWFComponent instanceof InputWorkflowPort) { - InputWorkflowPort port = (InputWorkflowPort) selectedWFComponent; - new EditDataflowInputPortAction(port.getParent(), port, null, - editManager, selectionManager).actionPerformed(e); - } else if (selectedWFComponent instanceof OutputWorkflowPort) { - OutputWorkflowPort port = (OutputWorkflowPort) selectedWFComponent; - new EditDataflowOutputPortAction(port.getParent(), port, null, - editManager, selectionManager).actionPerformed(e); - } else if (selectedWFComponent instanceof Processor) { - Processor processor = (Processor) selectedWFComponent; - new RenameProcessorAction(processor.getParent(), processor, - null, editManager, selectionManager).actionPerformed(e); - } else { // should not happen as the button will be disabled otherwise, but ... - showMessageDialog( - null, - "This action does not apply for the selected component.", - "Warning", WARNING_MESSAGE); - } - } - } - - /** - * Check if action should be enabled or disabled and update its status. - */ - public void updateStatus() { - WorkflowBundle workflowBundle = selectionManager - .getSelectedWorkflowBundle(); - DataflowSelectionModel selectionModel = selectionManager - .getDataflowSelectionModel(workflowBundle); - - // List of all selected objects in the graph view - Set<Object> selection = selectionModel.getSelection(); - - if (!selection.isEmpty()) { - // Take the first selected item - we only support single selections anyway - Object selected = selection.toArray()[0]; - if ((selected instanceof Processor) - || (selected instanceof InputWorkflowPort) - || (selected instanceof OutputWorkflowPort)) { - setEnabled(true); - return; - } - } - setEnabled(false); - } - - /** - * Observes events on workflow Selection Manager, i.e. when a workflow node - * is selected in the graph view, and enables/disables this action - * accordingly. - */ - private final class DataflowSelectionObserver extends - SwingAwareObserver<DataflowSelectionMessage> { - @Override - public void notifySwing(Observable<DataflowSelectionMessage> sender, - DataflowSelectionMessage message) { - updateStatus(); - } - } - - private final class SelectionManagerObserver extends - SwingAwareObserver<SelectionManagerEvent> { - @Override - public void notifySwing(Observable<SelectionManagerEvent> sender, - SelectionManagerEvent message) { - if (!(message instanceof WorkflowBundleSelectionEvent)) - return; - WorkflowBundleSelectionEvent workflowBundleSelectionEvent = (WorkflowBundleSelectionEvent) message; - WorkflowBundle oldFlow = workflowBundleSelectionEvent - .getPreviouslySelectedWorkflowBundle(); - WorkflowBundle newFlow = workflowBundleSelectionEvent - .getSelectedWorkflowBundle(); - // Update the buttons status as current dataflow has changed - updateStatus(); - - /* - * Remove the workflow selection model listener from the previous - * (if any) and add to the new workflow (if any) - */ - if (oldFlow != null) - selectionManager.getDataflowSelectionModel(oldFlow) - .removeObserver(workflowSelectionObserver); - - if (newFlow != null) - selectionManager.getDataflowSelectionModel(newFlow) - .addObserver(workflowSelectionObserver); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-graph-view/src/main/java/net/sf/taverna/t2/workbench/views/graph/config/GraphViewConfiguration.java ---------------------------------------------------------------------- diff --git a/taverna-workbench-graph-view/src/main/java/net/sf/taverna/t2/workbench/views/graph/config/GraphViewConfiguration.java b/taverna-workbench-graph-view/src/main/java/net/sf/taverna/t2/workbench/views/graph/config/GraphViewConfiguration.java deleted file mode 100644 index b1c3265..0000000 --- a/taverna-workbench-graph-view/src/main/java/net/sf/taverna/t2/workbench/views/graph/config/GraphViewConfiguration.java +++ /dev/null @@ -1,80 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2009 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program 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 (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.views.graph.config; - -import java.util.HashMap; -import java.util.Map; - -import uk.org.taverna.configuration.AbstractConfigurable; -import uk.org.taverna.configuration.ConfigurationManager; - -import net.sf.taverna.t2.workbench.models.graph.Graph.Alignment; -import net.sf.taverna.t2.workbench.models.graph.GraphController.PortStyle; - -/** - * Configuration for the GraphViewComponent. - * - * @author David Withers - */ -public class GraphViewConfiguration extends AbstractConfigurable { - public static final String PORT_STYLE = "portStyle"; - public static final String ALIGNMENT = "alignment"; - public static final String ANIMATION_ENABLED = "animationEnabled"; - public static final String ANIMATION_SPEED = "animationSpeed"; - - private Map<String, String> defaultPropertyMap; - - public GraphViewConfiguration(ConfigurationManager configurationManager) { - super(configurationManager); - } - - @Override - public String getCategory() { - return "general"; - } - - @Override - public Map<String, String> getDefaultPropertyMap() { - if (defaultPropertyMap == null) { - defaultPropertyMap = new HashMap<>(); - defaultPropertyMap.put(PORT_STYLE, PortStyle.NONE.toString()); - defaultPropertyMap.put(ALIGNMENT, Alignment.VERTICAL.toString()); - defaultPropertyMap.put(ANIMATION_ENABLED, "false"); - defaultPropertyMap.put(ANIMATION_SPEED, "800"); - } - return defaultPropertyMap; - } - - @Override - public String getDisplayName() { - return "Diagram"; - } - - @Override - public String getFilePrefix() { - return "Diagram"; - } - - @Override - public String getUUID() { - return "3686BA31-449F-4147-A8AC-0C3F63AFC68F"; - } -}