http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/SVGGraphNode.java
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/SVGGraphNode.java
 
b/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/SVGGraphNode.java
deleted file mode 100644
index 004b3f6..0000000
--- 
a/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/SVGGraphNode.java
+++ /dev/null
@@ -1,611 +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.svg;
-
-import static 
net.sf.taverna.t2.workbench.models.graph.svg.SVGGraphSettings.COMPLETED_COLOUR;
-import static 
net.sf.taverna.t2.workbench.models.graph.svg.SVGGraphSettings.ERROR_COLOUR;
-import static net.sf.taverna.t2.workbench.models.graph.svg.SVGUtil.animate;
-import static 
net.sf.taverna.t2.workbench.models.graph.svg.SVGUtil.calculatePoints;
-import static 
net.sf.taverna.t2.workbench.models.graph.svg.SVGUtil.createAnimationElement;
-import static org.apache.batik.util.CSSConstants.CSS_ALL_VALUE;
-import static org.apache.batik.util.CSSConstants.CSS_BLACK_VALUE;
-import static org.apache.batik.util.CSSConstants.CSS_DISPLAY_PROPERTY;
-import static org.apache.batik.util.CSSConstants.CSS_HIDDEN_VALUE;
-import static org.apache.batik.util.CSSConstants.CSS_INLINE_VALUE;
-import static org.apache.batik.util.CSSConstants.CSS_NONE_VALUE;
-import static org.apache.batik.util.CSSConstants.CSS_POINTER_EVENTS_PROPERTY;
-import static org.apache.batik.util.CSSConstants.CSS_VISIBILITY_PROPERTY;
-import static org.apache.batik.util.CSSConstants.CSS_VISIBLE_VALUE;
-import static org.apache.batik.util.SVGConstants.SVG_ANIMATE_TAG;
-import static org.apache.batik.util.SVGConstants.SVG_ANIMATE_TRANSFORM_TAG;
-import static org.apache.batik.util.SVGConstants.SVG_CLICK_EVENT_TYPE;
-import static org.apache.batik.util.SVGConstants.SVG_CX_ATTRIBUTE;
-import static org.apache.batik.util.SVGConstants.SVG_CY_ATTRIBUTE;
-import static org.apache.batik.util.SVGConstants.SVG_D_ATTRIBUTE;
-import static org.apache.batik.util.SVGConstants.SVG_END_VALUE;
-import static org.apache.batik.util.SVGConstants.SVG_FILL_ATTRIBUTE;
-import static org.apache.batik.util.SVGConstants.SVG_FILL_OPACITY_ATTRIBUTE;
-import static org.apache.batik.util.SVGConstants.SVG_FONT_FAMILY_ATTRIBUTE;
-import static org.apache.batik.util.SVGConstants.SVG_FONT_SIZE_ATTRIBUTE;
-import static org.apache.batik.util.SVGConstants.SVG_HEIGHT_ATTRIBUTE;
-import static org.apache.batik.util.SVGConstants.SVG_MIDDLE_VALUE;
-import static org.apache.batik.util.SVGConstants.SVG_MOUSEDOWN_EVENT_TYPE;
-import static org.apache.batik.util.SVGConstants.SVG_MOUSEMOVE_EVENT_TYPE;
-import static org.apache.batik.util.SVGConstants.SVG_MOUSEOUT_EVENT_TYPE;
-import static org.apache.batik.util.SVGConstants.SVG_MOUSEOVER_EVENT_TYPE;
-import static org.apache.batik.util.SVGConstants.SVG_NONE_VALUE;
-import static org.apache.batik.util.SVGConstants.SVG_POINTS_ATTRIBUTE;
-import static org.apache.batik.util.SVGConstants.SVG_RX_ATTRIBUTE;
-import static org.apache.batik.util.SVGConstants.SVG_RY_ATTRIBUTE;
-import static org.apache.batik.util.SVGConstants.SVG_STROKE_ATTRIBUTE;
-import static 
org.apache.batik.util.SVGConstants.SVG_STROKE_DASHARRAY_ATTRIBUTE;
-import static org.apache.batik.util.SVGConstants.SVG_STROKE_WIDTH_ATTRIBUTE;
-import static org.apache.batik.util.SVGConstants.SVG_TEXT_ANCHOR_ATTRIBUTE;
-import static org.apache.batik.util.SVGConstants.SVG_TRANSFORM_ATTRIBUTE;
-import static org.apache.batik.util.SVGConstants.SVG_WIDTH_ATTRIBUTE;
-import static org.apache.batik.util.SVGConstants.SVG_X_ATTRIBUTE;
-import static org.apache.batik.util.SVGConstants.SVG_Y_ATTRIBUTE;
-import static org.apache.batik.util.SVGConstants.TRANSFORM_TRANSLATE;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Point;
-
-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.svg.event.SVGMouseClickEventListener;
-import 
net.sf.taverna.t2.workbench.models.graph.svg.event.SVGMouseDownEventListener;
-import 
net.sf.taverna.t2.workbench.models.graph.svg.event.SVGMouseMovedEventListener;
-import 
net.sf.taverna.t2.workbench.models.graph.svg.event.SVGMouseOutEventListener;
-import 
net.sf.taverna.t2.workbench.models.graph.svg.event.SVGMouseOverEventListener;
-
-import org.apache.batik.dom.svg.SVGOMAnimationElement;
-import org.apache.batik.dom.svg.SVGOMEllipseElement;
-import org.apache.batik.dom.svg.SVGOMGElement;
-import org.apache.batik.dom.svg.SVGOMPathElement;
-import org.apache.batik.dom.svg.SVGOMPolygonElement;
-import org.apache.batik.dom.svg.SVGOMRectElement;
-import org.apache.batik.dom.svg.SVGOMTextElement;
-import org.apache.batik.util.CSSConstants;
-import org.apache.batik.util.SVGConstants;
-import org.w3c.dom.Text;
-import org.w3c.dom.events.Event;
-import org.w3c.dom.events.EventListener;
-import org.w3c.dom.events.EventTarget;
-import org.w3c.dom.svg.SVGElement;
-
-/**
- * SVG representation of a graph node.
- * 
- * @author David Withers
- */
-public class SVGGraphNode extends GraphNode {
-       private SVGGraphController graphController;
-       private SVGGraphElementDelegate delegate;
-       private SVGMouseClickEventListener mouseClickAction;
-       private SVGMouseMovedEventListener mouseMovedAction;
-       private SVGMouseDownEventListener mouseDownAction;
-       @SuppressWarnings("unused")
-       private SVGMouseOverEventListener mouseOverAction;
-       @SuppressWarnings("unused")
-       private SVGMouseOutEventListener mouseOutAction;
-       private SVGOMGElement mainGroup, labelGroup, portsGroup;
-       private SVGElement expandedElement, contractedElement;
-       private SVGOMPolygonElement polygon, completedPolygon;
-       private SVGOMEllipseElement ellipse;
-       private SVGOMTextElement label, iteration, error;
-       private Text labelText, iterationText, errorsText;
-       private SVGElement deleteButton;
-       private SVGOMAnimationElement animateShape, animatePosition, 
animateLabel, animateIteration,
-                       animateErrors;
-
-       public SVGGraphNode(SVGGraphController graphController) {
-               super(graphController);
-               this.graphController = graphController;
-               mouseClickAction = new SVGMouseClickEventListener(this);
-               mouseDownAction = new SVGMouseDownEventListener(this);
-               mouseMovedAction = new SVGMouseMovedEventListener(this);
-               mouseOverAction = new SVGMouseOverEventListener(this);
-               mouseOutAction = new SVGMouseOutEventListener(this);
-
-               mainGroup = graphController.createGElem();
-               mainGroup.setAttribute("alignment-baseline", SVG_MIDDLE_VALUE);
-               mainGroup.setAttribute(SVG_STROKE_ATTRIBUTE, CSS_BLACK_VALUE);
-               mainGroup.setAttribute(SVG_STROKE_DASHARRAY_ATTRIBUTE, 
CSS_NONE_VALUE);
-               mainGroup.setAttribute(SVG_STROKE_WIDTH_ATTRIBUTE, "1");
-               mainGroup.setAttribute(SVG_FILL_ATTRIBUTE, CSS_NONE_VALUE);
-
-               EventTarget t = (EventTarget) mainGroup;
-               t.addEventListener(SVG_CLICK_EVENT_TYPE, mouseClickAction, 
false);
-               t.addEventListener(SVG_MOUSEMOVE_EVENT_TYPE, mouseMovedAction, 
false);
-               t.addEventListener(SVG_MOUSEDOWN_EVENT_TYPE, mouseDownAction, 
false);
-//             t.addEventListener(SVGConstants.SVG_MOUSEOVER_EVENT_TYPE, 
mouseOverAction, false);
-//             t.addEventListener(SVGConstants.SVG_MOUSEOUT_EVENT_TYPE, 
mouseOutAction, false);
-
-               expandedElement = graphController.createGElem();
-               contractedElement = graphController.createGElem();
-
-               portsGroup = graphController.createGElem();
-               portsGroup.setAttribute(CSS_DISPLAY_PROPERTY, CSS_NONE_VALUE);
-               contractedElement.appendChild(portsGroup);
-
-               mainGroup.appendChild(contractedElement);
-
-               polygon = graphController.createPolygon();
-               contractedElement.appendChild(polygon);
-
-               ellipse = graphController.createEllipse();
-               ellipse.setAttribute(CSS_DISPLAY_PROPERTY, CSS_NONE_VALUE);
-               ellipse.setAttribute(SVG_RX_ATTRIBUTE, String.valueOf(2));
-               ellipse.setAttribute(SVG_CX_ATTRIBUTE, String.valueOf(0));
-               ellipse.setAttribute(SVG_RY_ATTRIBUTE, String.valueOf(2));
-               ellipse.setAttribute(SVG_CY_ATTRIBUTE, String.valueOf(0));
-               contractedElement.appendChild(ellipse);
-
-               completedPolygon = graphController.createPolygon();
-               completedPolygon.setAttribute(SVG_POINTS_ATTRIBUTE,
-                               calculatePoints(getShape(), 0, 0));
-               completedPolygon.setAttribute(SVG_FILL_ATTRIBUTE, 
COMPLETED_COLOUR);
-               completedPolygon.setAttribute(SVG_FILL_OPACITY_ATTRIBUTE, 
"0.8");
-               contractedElement.appendChild(completedPolygon);
-
-               labelText = graphController.createText("");
-               label = graphController.createText(labelText);
-               label.setAttribute(SVG_TEXT_ANCHOR_ATTRIBUTE, SVG_MIDDLE_VALUE);
-               label.setAttribute("baseline-shift", "-35%");
-               label.setAttribute(SVG_FILL_ATTRIBUTE, CSS_BLACK_VALUE);
-               label.setAttribute(SVG_STROKE_ATTRIBUTE, 
SVGConstants.SVG_NONE_VALUE);
-               labelGroup = graphController.createGElem();
-               labelGroup.appendChild(label);
-               contractedElement.appendChild(labelGroup);
-
-               iterationText = graphController.createText("");
-               iteration = graphController.createText(iterationText);
-               iteration.setAttribute(SVG_TEXT_ANCHOR_ATTRIBUTE, 
SVG_END_VALUE);
-               iteration.setAttribute(SVG_FONT_SIZE_ATTRIBUTE, "6");
-               iteration.setAttribute(SVG_FONT_FAMILY_ATTRIBUTE, "sans-serif");
-               iteration.setAttribute(SVG_FILL_ATTRIBUTE, CSS_BLACK_VALUE);
-               iteration.setAttribute(SVG_STROKE_ATTRIBUTE, SVG_NONE_VALUE);
-               contractedElement.appendChild(iteration);
-
-               errorsText = graphController.createText("");
-               error = graphController.createText(errorsText);
-               error.setAttribute(SVG_TEXT_ANCHOR_ATTRIBUTE, SVG_END_VALUE);
-               error.setAttribute(SVG_FONT_SIZE_ATTRIBUTE, "6");
-               error.setAttribute(SVG_FONT_FAMILY_ATTRIBUTE, "sans-serif");
-               error.setAttribute(SVG_FILL_ATTRIBUTE, 
CSSConstants.CSS_BLACK_VALUE);
-               error.setAttribute(SVG_STROKE_ATTRIBUTE, SVG_NONE_VALUE);
-               contractedElement.appendChild(error);
-
-               // deleteButton = createDeleteButton();
-               // g.appendChild(deleteButton);
-
-               animateShape = createAnimationElement(graphController, 
SVG_ANIMATE_TAG,
-                               SVG_POINTS_ATTRIBUTE, null);
-
-               animatePosition = createAnimationElement(graphController,
-                               SVG_ANIMATE_TRANSFORM_TAG, 
SVG_TRANSFORM_ATTRIBUTE,
-                               TRANSFORM_TRANSLATE);
-
-               animateLabel = SVGUtil.createAnimationElement(graphController,
-                               SVG_ANIMATE_TRANSFORM_TAG, 
SVG_TRANSFORM_ATTRIBUTE,
-                               TRANSFORM_TRANSLATE);
-
-               animateIteration = createAnimationElement(graphController,
-                               SVG_ANIMATE_TRANSFORM_TAG, 
SVG_TRANSFORM_ATTRIBUTE,
-                               TRANSFORM_TRANSLATE);
-
-               animateErrors = createAnimationElement(graphController,
-                               SVG_ANIMATE_TRANSFORM_TAG, 
SVG_TRANSFORM_ATTRIBUTE,
-                               TRANSFORM_TRANSLATE);
-
-               delegate = new SVGGraphElementDelegate(graphController, this, 
mainGroup);
-       }
-
-       @SuppressWarnings("unused")
-       private SVGElement createDeleteButton() {
-               final SVGOMGElement button = graphController.createGElem();
-               button.setAttribute(CSS_VISIBILITY_PROPERTY, CSS_HIDDEN_VALUE);
-               button.setAttribute(CSS_POINTER_EVENTS_PROPERTY, CSS_ALL_VALUE);
-
-               SVGOMRectElement rect = graphController.createRect();
-               rect.setAttribute(SVG_X_ATTRIBUTE, "4");
-               rect.setAttribute(SVG_Y_ATTRIBUTE, "4");
-               rect.setAttribute(SVG_WIDTH_ATTRIBUTE, "13");
-               rect.setAttribute(SVG_HEIGHT_ATTRIBUTE, "13");
-               rect.setAttribute(SVG_FILL_ATTRIBUTE, "none");
-               button.appendChild(rect);
-
-               final SVGOMPathElement path = graphController.createPath();
-               path.setAttribute(SVG_STROKE_ATTRIBUTE, "white");
-               path.setAttribute(SVG_STROKE_WIDTH_ATTRIBUTE, "2");
-               path.setAttribute(SVG_D_ATTRIBUTE, "M5,5L12,12M5,12L12,5");
-               button.appendChild(path);
-
-               EventTarget t = (EventTarget) button;
-               t.addEventListener(SVG_MOUSEOVER_EVENT_TYPE, new 
EventListener() {
-                       @Override
-                       public void handleEvent(Event evt) {
-                               if (isInteractive()) {
-                                       
deleteButton.setAttribute(CSS_VISIBILITY_PROPERTY,
-                                                       CSS_VISIBLE_VALUE);
-                                       path.setAttribute(SVG_STROKE_ATTRIBUTE, 
"red");
-                                       evt.stopPropagation();
-                               }
-                       }
-               }, false);
-               t.addEventListener(SVG_MOUSEOUT_EVENT_TYPE, new EventListener() 
{
-                       @Override
-                       public void handleEvent(Event evt) {
-                               if (isInteractive()) {
-                                       path.setAttribute(SVG_STROKE_ATTRIBUTE, 
"white");
-                                       evt.stopPropagation();
-                               }
-                       }
-               }, false);
-
-               return button;
-       }
-
-       public SVGElement getSVGElement() {
-               return mainGroup;
-       }
-
-       @Override
-       public void setActive(final boolean active) {
-               super.setActive(active);
-               if (isInteractive())
-                       graphController.updateSVGDocument(new Runnable() {
-                               @Override
-                               public void run() {
-                                       if (active) {
-                                               
deleteButton.setAttribute(CSS_VISIBILITY_PROPERTY,
-                                                               
CSS_VISIBLE_VALUE);
-                                               // 
deleteButton.setAttribute(CSSConstants.CSS_DISPLAY_PROPERTY,
-                                               // 
CSSConstants.CSS_INLINE_VALUE);
-                                       } else {
-                                               
deleteButton.setAttribute(CSS_VISIBILITY_PROPERTY,
-                                                               
CSS_HIDDEN_VALUE);
-                                               // 
button.setAttribute(CSSConstants.CSS_DISPLAY_PROPERTY,
-                                               // CSSConstants.CSS_NONE_VALUE);
-                                       }
-                               }
-                       });
-       }
-
-       @Override
-       public void setGraph(Graph graph) {
-               super.setGraph(graph);
-               if (graph instanceof SVGGraph) {
-                       SVGGraph svgGraph = (SVGGraph) graph;
-                       final SVGElement graphElement = 
svgGraph.getSVGElement();
-                       if (isExpanded())
-                               graphController.updateSVGDocument(new 
Runnable() {
-                                       @Override
-                                       public void run() {
-                                               
mainGroup.replaceChild(expandedElement, graphElement);
-                                       }
-                               });
-                       expandedElement = graphElement;
-               }
-       }
-
-       @Override
-       public void setExpanded(final boolean expanded) {
-               if (isExpanded() != expanded)
-                       graphController.updateSVGDocument(new Runnable() {
-                               @Override
-                               public void run() {
-                                       if (expanded)
-                                               
mainGroup.replaceChild(expandedElement, contractedElement);
-                                       else
-                                               
mainGroup.replaceChild(contractedElement, expandedElement);
-                               }
-                       });
-               super.setExpanded(expanded);
-       }
-
-       @Override
-       public void addSourceNode(final GraphNode sourceNode) {
-               super.addSourceNode(sourceNode);
-               if (sourceNode instanceof SVGGraphNode)
-                       graphController.updateSVGDocument(new Runnable() {
-                               @Override
-                               public void run() {
-                                       SVGGraphNode svgGraphNode = 
(SVGGraphNode) sourceNode;
-                                       
portsGroup.appendChild(svgGraphNode.getSVGElement());
-                               }
-                       });
-       }
-
-       @Override
-       public boolean removeSourceNode(final GraphNode sourceNode) {
-               if (sourceNode instanceof SVGGraphNode)
-                       graphController.updateSVGDocument(new Runnable() {
-                               @Override
-                               public void run() {
-                                       SVGGraphNode svgGraphNode = 
(SVGGraphNode) sourceNode;
-                                       
portsGroup.removeChild(svgGraphNode.getSVGElement());
-                               }
-                       });
-               return super.removeSourceNode(sourceNode);
-       }
-
-       @Override
-       public void addSinkNode(final GraphNode sinkNode) {
-               super.addSinkNode(sinkNode);
-               if (sinkNode instanceof SVGGraphNode)
-                       graphController.updateSVGDocument(new Runnable() {
-                               @Override
-                               public void run() {
-                                       SVGGraphNode svgGraphNode = 
(SVGGraphNode) sinkNode;
-                                       
portsGroup.appendChild(svgGraphNode.getSVGElement());
-                               }
-                       });
-       }
-
-       @Override
-       public boolean removeSinkNode(final GraphNode sinkNode) {
-               if (sinkNode instanceof SVGGraphNode)
-                       graphController.updateSVGDocument(new Runnable() {
-                               @Override
-                               public void run() {
-                                       SVGGraphNode svgGraphNode = 
(SVGGraphNode) sinkNode;
-                                       
portsGroup.removeChild(svgGraphNode.getSVGElement());
-                               }
-                       });
-               return super.removeSinkNode(sinkNode);
-       }
-
-       @Override
-       public void setPosition(final Point position) {
-               final Point oldPosition = getPosition();
-               if (position != null && !position.equals(oldPosition)) {
-                       super.setPosition(position);
-                       graphController.updateSVGDocument(new Runnable() {
-                               @Override
-                               public void run() {
-                                       if (graphController.isAnimatable())
-                                               animate(animatePosition, 
mainGroup,
-                                                               
graphController.getAnimationSpeed(),
-                                                               oldPosition.x + 
", " + oldPosition.y,
-                                                               position.x + ", 
" + position.y);
-                                       else
-                                               
mainGroup.setAttribute(SVG_TRANSFORM_ATTRIBUTE,
-                                                               "translate(" + 
position.x + " " + position.y
-                                                                               
+ ")");
-                               }
-                       });
-               }
-       }
-
-       @Override
-       public void setSize(final Dimension size) {
-               final Dimension oldSize = getSize();
-               if (size != null && !size.equals(oldSize)) {
-                       super.setSize(size);
-                       graphController.updateSVGDocument(new Runnable() {
-                               @Override
-                               public void run() {
-                                       adjustSize(size, oldSize);
-                               }
-                       });
-               }
-       }
-
-       /** core of implementation of {@link #setSize(Dimension)} */
-       private void adjustSize(Dimension size, Dimension oldSize) {
-               int oldWidth = oldSize.width;
-               int oldHeight = oldSize.height;
-               if (graphController.isAnimatable()) {
-                       if (Shape.CIRCLE.equals(getShape())) {
-                               ellipse.setAttribute(SVG_RX_ATTRIBUTE,
-                                               String.valueOf(size.width / 
2f));
-                               ellipse.setAttribute(SVG_CX_ATTRIBUTE,
-                                               String.valueOf(size.width / 
2f));
-                               ellipse.setAttribute(SVG_RY_ATTRIBUTE,
-                                               String.valueOf(size.height / 
2f));
-                               ellipse.setAttribute(SVG_CY_ATTRIBUTE,
-                                               String.valueOf(size.height / 
2f));
-                       } else
-                               animate(animateShape, polygon,
-                                               
graphController.getAnimationSpeed(),
-                                               calculatePoints(getShape(), 
oldWidth, oldHeight),
-                                               calculatePoints(getShape(), 
getWidth(), getHeight()));
-
-                       if (getLabel() != null && !getLabel().isEmpty())
-                               animate(animateLabel, labelGroup,
-                                               
graphController.getAnimationSpeed(), (oldWidth / 2f)
-                                                               + ", " + 
(oldHeight / 2f), (getWidth() / 2f)
-                                                               + ", " + 
(getHeight() / 2f));
-                       else
-                               labelGroup.setAttribute(SVG_TRANSFORM_ATTRIBUTE,
-                                               "translate(" + getWidth() / 2f 
+ " " + getHeight() / 2f + ")");
-
-                       if (getIteration() > 0)
-                               animate(animateIteration, iteration,
-                                               
graphController.getAnimationSpeed(), (oldWidth - 1.5)
-                                                               + ", 5.5", 
(getWidth() - 1.5) + ", 5.5");
-                       else
-                               iteration.setAttribute(SVG_TRANSFORM_ATTRIBUTE, 
"translate("
-                                               + (getWidth() - 1.5) + " 5.5)");
-
-                       if (getErrors() > 0)
-                               animate(animateErrors, error,
-                                               
graphController.getAnimationSpeed(), (oldWidth - 1.5)
-                                                               + ", " + 
(oldHeight - 1), (getWidth() - 1.5)
-                                                               + ", " + 
(getHeight() - 1));
-                       else
-                               error.setAttribute(SVG_TRANSFORM_ATTRIBUTE, 
"translate("
-                                               + (getWidth() - 1.5) + " " + 
(getHeight() - 1) + ")");
-               } else {
-                       if (Shape.CIRCLE.equals(getShape())) {
-                               ellipse.setAttribute(SVG_RX_ATTRIBUTE,
-                                               String.valueOf(size.width / 
2f));
-                               ellipse.setAttribute(SVG_CX_ATTRIBUTE,
-                                               String.valueOf(size.width / 
2f));
-                               ellipse.setAttribute(SVG_RY_ATTRIBUTE,
-                                               String.valueOf(size.height / 
2f));
-                               ellipse.setAttribute(SVG_CY_ATTRIBUTE,
-                                               String.valueOf(size.height / 
2f));
-                       } else
-                               polygon.setAttribute(SVG_POINTS_ATTRIBUTE,
-                                               calculatePoints(getShape(), 
getWidth(), getHeight()));
-
-                       labelGroup.setAttribute(SVG_TRANSFORM_ATTRIBUTE, 
"translate("
-                                       + getWidth() / 2f + " " + getHeight() / 
2f + ")");
-                       iteration.setAttribute(SVG_TRANSFORM_ATTRIBUTE, 
"translate("
-                                       + (getWidth() - 1.5) + " 5.5)");
-                       error.setAttribute(SVG_TRANSFORM_ATTRIBUTE, "translate("
-                                       + (getWidth() - 1.5) + " " + 
(getHeight() - 1) + ")");
-               }
-       }
-
-       @Override
-       public void setShape(final Shape shape) {
-               final Shape currentShape = getShape();
-               if (shape != null && !shape.equals(currentShape)) {
-                       super.setShape(shape);
-                       graphController.updateSVGDocument(new Runnable() {
-                               @Override
-                               public void run() {
-                                       if (Shape.CIRCLE.equals(shape)) {
-                                               
ellipse.setAttribute(CSS_DISPLAY_PROPERTY,
-                                                               
CSS_INLINE_VALUE);
-                                               
polygon.setAttribute(CSS_DISPLAY_PROPERTY,
-                                                               CSS_NONE_VALUE);
-                                       } else if 
(Shape.CIRCLE.equals(currentShape)) {
-                                               
ellipse.setAttribute(CSS_DISPLAY_PROPERTY,
-                                                               CSS_NONE_VALUE);
-                                               
polygon.setAttribute(CSS_DISPLAY_PROPERTY,
-                                                               
CSS_INLINE_VALUE);
-                                       }
-                                       if (Shape.RECORD.equals(shape))
-                                               
portsGroup.setAttribute(CSS_DISPLAY_PROPERTY,
-                                                               
CSS_INLINE_VALUE);
-                                       else if 
(Shape.RECORD.equals(currentShape))
-                                               
portsGroup.setAttribute(CSS_DISPLAY_PROPERTY,
-                                                               CSS_NONE_VALUE);
-                               }
-                       });
-               }
-       }
-
-       @Override
-       public void setLabel(final String label) {
-               super.setLabel(label);
-               graphController.updateSVGDocument(new Runnable() {
-                       @Override
-                       public void run() {
-                               labelText.setData(label);
-                       }
-               });
-       }
-
-       @Override
-       public void setIteration(final int iteration) {
-               super.setIteration(iteration);
-               graphController.updateSVGDocument(new Runnable() {
-                       @Override
-                       public void run() {
-                               if (iteration > 0)
-                                       
iterationText.setData(String.valueOf(iteration));
-                               else
-                                       iterationText.setData("");
-                       }
-               });
-       }
-
-       @Override
-       public void setErrors(final int errors) {
-               super.setErrors(errors);
-               graphController.updateSVGDocument(new Runnable() {
-                       @Override
-                       public void run() {
-                               if (errors > 0) {
-                                       
errorsText.setData(String.valueOf(errors));
-                                       
completedPolygon.setAttribute(SVG_FILL_ATTRIBUTE,
-                                                       ERROR_COLOUR);
-                               } else {
-                                       errorsText.setData("");
-                                       
completedPolygon.setAttribute(SVG_FILL_ATTRIBUTE,
-                                                       COMPLETED_COLOUR);
-                               }
-                       }
-               });
-       }
-
-       @Override
-       public void setCompleted(final float complete) {
-               super.setCompleted(complete);
-               graphController.updateSVGDocument(new Runnable() {
-                       @Override
-                       public void run() {
-                               completedPolygon.setAttribute(
-                                               SVG_POINTS_ATTRIBUTE,
-                                               calculatePoints(getShape(),
-                                                               (int) 
(getWidth() * complete), getHeight()));
-                       }
-               });
-       }
-
-       @Override
-       public void setSelected(final boolean selected) {
-               delegate.setSelected(selected);
-               super.setSelected(selected);
-       }
-
-       @Override
-       public void setLineStyle(final LineStyle lineStyle) {
-               delegate.setLineStyle(lineStyle);
-               super.setLineStyle(lineStyle);
-       }
-
-       @Override
-       public void setColor(final Color color) {
-               delegate.setColor(color);
-               super.setColor(color);
-       }
-
-       @Override
-       public void setFillColor(final Color fillColor) {
-               delegate.setFillColor(fillColor);
-               super.setFillColor(fillColor);
-       }
-
-       @Override
-       public void setVisible(final boolean visible) {
-               delegate.setVisible(visible);
-               super.setVisible(visible);
-       }
-
-       @Override
-       public void setFiltered(final boolean filtered) {
-               delegate.setFiltered(filtered);
-               super.setFiltered(filtered);
-       }
-
-       @Override
-       public void setOpacity(final float opacity) {
-               delegate.setOpacity(opacity);
-               super.setOpacity(opacity);
-       }
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/SVGGraphSettings.java
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/SVGGraphSettings.java
 
b/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/SVGGraphSettings.java
deleted file mode 100644
index 777102e..0000000
--- 
a/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/SVGGraphSettings.java
+++ /dev/null
@@ -1,28 +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.svg;
-
-public interface SVGGraphSettings {
-       String COMPLETED_COLOUR = "grey";
-       String ERROR_COLOUR = "#dd3131";
-       String SELECTED_COLOUR = "#4377d3";
-       String NORMAL_COLOUR = "black";
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/SVGMonitorShape.java
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/SVGMonitorShape.java
 
b/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/SVGMonitorShape.java
deleted file mode 100644
index 5aab55f..0000000
--- 
a/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/SVGMonitorShape.java
+++ /dev/null
@@ -1,40 +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.svg;
-
-import org.apache.batik.dom.svg.SVGOMPolygonElement;
-
-public interface SVGMonitorShape extends SVGShape {
-       /**
-        * Returns the polygon used to display the completed value.
-        * 
-        * @return the polygon used to display the completed value
-        */
-       SVGOMPolygonElement getCompletedPolygon();
-
-       /**
-        * Sets the polygon used to display the completed value.
-        * 
-        * @param polygon
-        *            the new polygon used to display the completed value
-        */
-       void setCompletedPolygon(SVGOMPolygonElement polygon);
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/SVGShape.java
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/SVGShape.java
 
b/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/SVGShape.java
deleted file mode 100644
index 8ebc338..0000000
--- 
a/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/SVGShape.java
+++ /dev/null
@@ -1,29 +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.svg;
-
-public interface SVGShape {
-       public void setIteration(final int iteration);
-
-       // public void setErrors(final int errors);
-
-       // public void setCompleted(final float complete);
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/SVGUtil.java
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/SVGUtil.java
 
b/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/SVGUtil.java
deleted file mode 100644
index f2e4247..0000000
--- 
a/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/SVGUtil.java
+++ /dev/null
@@ -1,477 +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.svg;
-
-import static java.lang.Float.parseFloat;
-import static java.lang.Math.PI;
-import static java.lang.Math.atan2;
-import static 
org.apache.batik.dom.svg.SVGDOMImplementation.getDOMImplementation;
-import static 
org.apache.batik.util.SMILConstants.SMIL_ATTRIBUTE_NAME_ATTRIBUTE;
-import static org.apache.batik.util.SMILConstants.SMIL_DUR_ATTRIBUTE;
-import static org.apache.batik.util.SMILConstants.SMIL_FILL_ATTRIBUTE;
-import static org.apache.batik.util.SMILConstants.SMIL_FREEZE_VALUE;
-import static org.apache.batik.util.SMILConstants.SMIL_FROM_ATTRIBUTE;
-import static org.apache.batik.util.SMILConstants.SMIL_TO_ATTRIBUTE;
-import static org.apache.batik.util.SVGConstants.SVG_TYPE_ATTRIBUTE;
-import static org.apache.batik.util.SVGConstants.SVG_X1_ATTRIBUTE;
-import static org.apache.batik.util.SVGConstants.SVG_X2_ATTRIBUTE;
-import static org.apache.batik.util.SVGConstants.SVG_Y1_ATTRIBUTE;
-import static org.apache.batik.util.SVGConstants.SVG_Y2_ATTRIBUTE;
-import static 
org.apache.batik.util.XMLResourceDescriptor.getXMLParserClassName;
-
-import java.awt.Color;
-import java.awt.Point;
-import java.io.IOException;
-import java.io.PrintWriter;
-import java.io.StringReader;
-import java.util.List;
-
-import net.sf.taverna.t2.lang.io.StreamDevourer;
-import 
net.sf.taverna.t2.workbench.configuration.workbench.WorkbenchConfiguration;
-import net.sf.taverna.t2.workbench.models.graph.GraphShapeElement.Shape;
-
-import org.apache.batik.dom.svg.SAXSVGDocumentFactory;
-import org.apache.batik.dom.svg.SVGDOMImplementation;
-import org.apache.batik.dom.svg.SVGOMAnimationElement;
-import org.apache.batik.dom.svg.SVGOMPoint;
-import org.apache.log4j.Logger;
-import org.w3c.dom.DOMImplementation;
-import org.w3c.dom.Element;
-import org.w3c.dom.svg.SVGDocument;
-import org.w3c.dom.svg.SVGElement;
-import org.w3c.dom.svg.SVGLocatable;
-import org.w3c.dom.svg.SVGMatrix;
-//import org.apache.batik.transcoder.TranscoderException;
-//import org.apache.batik.transcoder.svg2svg.PrettyPrinter;
-
-/**
- * Utility methods.
- *
- * @author David Withers
- */
-public class SVGUtil {
-       private static final String C = "C";
-       private static final String M = "M";
-       private static final String SPACE = " ";
-       private static final String COMMA = ",";
-       public static final String svgNS = 
SVGDOMImplementation.SVG_NAMESPACE_URI;
-       private static final String SVG = "svg";
-       private static final Logger logger = Logger.getLogger(SVGUtil.class);
-
-       private static SAXSVGDocumentFactory docFactory;
-
-       static {
-               String parser = getXMLParserClassName();
-               logger.info("Using XML parser " + parser);
-               docFactory = new SAXSVGDocumentFactory(parser);
-       }
-
-       /**
-        * Creates a new SVGDocument.
-        * 
-        * @return a new SVGDocument
-        */
-       public static SVGDocument createSVGDocument() {
-               DOMImplementation impl = getDOMImplementation();
-               return (SVGDocument) impl.createDocument(svgNS, SVG, null);
-       }
-
-       /**
-        * Converts a point in screen coordinates to a point in document
-        * coordinates.
-        * 
-        * @param locatable
-        * @param screenPoint
-        *            the point in screen coordinates
-        * @return the point in document coordinates
-        */
-       public static SVGOMPoint screenToDocument(SVGLocatable locatable,
-                       SVGOMPoint screenPoint) {
-               SVGMatrix mat = ((SVGLocatable) 
locatable.getFarthestViewportElement())
-                               .getScreenCTM().inverse();
-               return (SVGOMPoint) screenPoint.matrixTransform(mat);
-       }
-
-       /**
-        * Writes SVG to the console. For debugging only.
-        *
-        * @param svgDocument
-        *            the document to output
-        */
-//     public static void writeSVG(SVGDocument svgDocument) {
-//             writeSVG(svgDocument, new OutputStreamWriter(System.out));
-//     }
-
-       /**
-        * Writes SVG to an output stream.
-        *
-        * @param svgDocument
-        *            the document to output
-        * @param writer
-        *            the stream to write the document to
-        */
-//     public static void writeSVG(SVGDocument svgDocument, Writer writer) {
-//             StringWriter sw = new StringWriter();
-//             try {
-//                     Transformer transformer = 
TransformerFactory.newInstance().newTransformer();
-//                     Source src = new 
DOMSource(svgDocument.getDocumentElement());
-//                     transformer.transform(src, new StreamResult(sw));
-//
-//                     PrettyPrinter pp = new PrettyPrinter();
-//                     pp.print(new StringReader(sw.toString()), writer);
-//             } catch (TransformerException | TranscoderException | 
IOException e) {
-//                     e.printStackTrace(new PrintWriter(writer));
-//             }
-//     }
-
-       /**
-        * Generates an SVGDocument from DOT text by calling out to GraphViz.
-        * 
-        * @param dotText
-        * @return an SVGDocument
-        * @throws IOException
-        */
-       public static SVGDocument getSVG(String dotText,
-                       WorkbenchConfiguration workbenchConfiguration) throws 
IOException {
-               String dotLocation = (String) workbenchConfiguration
-                               .getProperty("taverna.dotlocation");
-               if (dotLocation == null)
-                       dotLocation = "dot";
-               logger.debug("Invoking dot...");
-               Process dotProcess = exec(dotLocation, "-Tsvg");
-               StreamDevourer devourer = new StreamDevourer(
-                               dotProcess.getInputStream());
-               devourer.start();
-               try (PrintWriter out = new 
PrintWriter(dotProcess.getOutputStream(),
-                               true)) {
-                       out.print(dotText);
-                       out.flush();
-               }
-
-               String svgText = devourer.blockOnOutput();
-               /*
-                * Avoid TAV-424, replace buggy SVG outputted by "modern" 
GraphViz
-                * versions. http://www.graphviz.org/bugs/b1075.html
-                * 
-                * Contributed by Marko Ullgren
-                */
-               svgText = svgText.replaceAll("font-weight:regular",
-                               "font-weight:normal");
-               logger.info(svgText);
-               // Fake URI, just used for internal references like #fish
-               return docFactory.createSVGDocument(
-                               "http://taverna.sf.net/diagram/generated.svg";,
-                               new StringReader(svgText));
-       }
-
-       /**
-        * Generates DOT text with layout information from DOT text by calling 
out
-        * to GraphViz.
-        * 
-        * @param dotText
-        *            dot text
-        * @return dot text with layout information
-        * @throws IOException
-        */
-       public static String getDot(String dotText,
-                       WorkbenchConfiguration workbenchConfiguration) throws 
IOException {
-               String dotLocation = (String) workbenchConfiguration
-                               .getProperty("taverna.dotlocation");
-               if (dotLocation == null)
-                       dotLocation = "dot";
-               logger.debug("Invoking dot...");
-               Process dotProcess = exec(dotLocation, "-Tdot", "-Glp=0,0");
-               StreamDevourer devourer = new StreamDevourer(
-                               dotProcess.getInputStream());
-               devourer.start();
-               try (PrintWriter out = new 
PrintWriter(dotProcess.getOutputStream(),
-                               true)) {
-                       out.print(dotText);
-                       out.flush();
-               }
-
-               String dot = devourer.blockOnOutput();
-               // logger.info(dot);
-               return dot;
-       }
-
-       private static Process exec(String...args) throws IOException {
-               Process p = Runtime.getRuntime().exec(args);
-               /*
-                * Must create an error devourer otherwise stderr fills up and 
the
-                * process stalls!
-                */
-               new StreamDevourer(p.getErrorStream()).start();
-               return p;
-       }
-
-       /**
-        * Returns the hex value for a <code>Color</code>. If color is null 
"none"
-        * is returned.
-        *
-        * @param color
-        *            the <code>Color</code> to convert to hex code
-        * @return the hex value
-        */
-       public static String getHexValue(Color color) {
-               if (color == null)
-                       return "none";
-
-               return String.format("#%02x%02x%02x", color.getRed(), 
color.getGreen(),
-                               color.getBlue());
-       }
-
-       /**
-        * Calculates the angle to rotate an arrow head to be placed on the end 
of a
-        * line.
-        *
-        * @param line
-        *            the line to calculate the arrow head angle from
-        * @return the angle to rotate an arrow head
-        */
-       public static double calculateAngle(Element line) {
-               float x1 = parseFloat(line.getAttribute(SVG_X1_ATTRIBUTE));
-               float y1 = parseFloat(line.getAttribute(SVG_Y1_ATTRIBUTE));
-               float x2 = parseFloat(line.getAttribute(SVG_X2_ATTRIBUTE));
-               float y2 = parseFloat(line.getAttribute(SVG_Y2_ATTRIBUTE));
-               return calculateAngle(x1, y1, x2, y2);
-       }
-
-       /**
-        * Calculates the angle to rotate an arrow head to be placed on the end 
of a
-        * line.
-        *
-        * @param pointList
-        *            the list of <code>Point</code>s to calculate the arrow 
head
-        *            angle from
-        * @return the angle to rotate an arrow head
-        */
-       public static double calculateAngle(List<Point> pointList) {
-               double angle = 0d;
-               if (pointList.size() > 1) {
-                       int listSize = pointList.size();
-                       Point a = pointList.get(listSize - 2);
-                       Point b = pointList.get(listSize - 1);
-                       /*
-                        * dot sometimes generates paths with the same point 
repeated at the
-                        * end of the path, so move back along the path until 
two different
-                        * points are found
-                        */
-                       while (a.equals(b) && listSize > 2) {
-                               b = a;
-                               a = pointList.get(--listSize - 2);
-                       }
-                       angle = calculateAngle(a.x, a.y, b.x, b.y);
-               }
-               return angle;
-       }
-
-       /**
-        * Calculates the angle to rotate an arrow head to be placed on the end 
of a
-        * line.
-        * 
-        * @param x1
-        *            the x coordinate of the start of the line
-        * @param y1
-        *            the y coordinate of the start of the line
-        * @param x2
-        *            the x coordinate of the end of the line
-        * @param y2
-        *            the y coordinate of the end of the line
-        * @return the angle to rotate an arrow head
-        */
-       public static double calculateAngle(float x1, float y1, float x2, float 
y2) {
-               return atan2(y2 - y1, x2 - x1) * 180 / PI;
-       }
-
-       /**
-        * Calculates the points that make up the polygon for the specified
-        * {@link Shape}.
-        *
-        * @param shape
-        *            the <code>Shape</code> to calculate points for
-        * @param width
-        *            the width of the <code>Shape</code>
-        * @param height
-        *            the height of the <code>Shape</code>
-        * @return the points that make up the polygon for the specified
-        *         <code>Shape</code>
-        */
-       public static String calculatePoints(Shape shape, int width, int 
height) {
-               StringBuilder sb = new StringBuilder();
-               switch (shape) {
-               case BOX:
-               case RECORD:
-                       addPoint(sb, 0, 0);
-                       addPoint(sb, width, 0);
-                       addPoint(sb, width, height);
-                       addPoint(sb, 0, height);
-                       break;
-               case HOUSE:
-                       addPoint(sb, width / 2f, 0);
-                       addPoint(sb, width, height / 3f);
-                       addPoint(sb, width, height - 3);
-                       addPoint(sb, 0, height - 3);
-                       addPoint(sb, 0, height / 3f);
-                       break;
-               case INVHOUSE:
-                       addPoint(sb, 0, 3);
-                       addPoint(sb, width, 3);
-                       addPoint(sb, width, height / 3f * 2f);
-                       addPoint(sb, width / 2f, height);
-                       addPoint(sb, 0, height / 3f * 2f);
-                       break;
-               case TRIANGLE:
-                       addPoint(sb, width / 2f, 0);
-                       addPoint(sb, width, height);
-                       addPoint(sb, 0, height);
-                       break;
-               case INVTRIANGLE:
-                       addPoint(sb, 0, 0);
-                       addPoint(sb, width, 0);
-                       addPoint(sb, width / 2f, height);
-                       break;
-               default:
-                       // Nothing to do for the others
-                       break;
-               }
-               return sb.toString();
-       }
-
-       /**
-        * Appends x y coordinates to a <code>StringBuilder</code> in the format
-        * "x,y ".
-        * 
-        * @param stringBuilder
-        *            the <code>StringBuilder</code> to append the point to
-        * @param x
-        *            the x coordinate
-        * @param y
-        *            the y coordinate
-        */
-       public static void addPoint(StringBuilder stringBuilder, float x, float 
y) {
-               stringBuilder.append(x).append(COMMA).append(y).append(SPACE);
-       }
-
-       /**
-        * Converts a list of points into a string format for a cubic Bezier 
curve.
-        *
-        * For example, "M100,200 C100,100 250,100 250,200". See
-        * http://www.w3.org/TR/SVG11/paths.html#PathDataCubicBezierCommands.
-        *
-        * @param pointList
-        *            a list of points that describes a cubic Bezier curve
-        * @return a string that describes a cubic Bezier curve
-        */
-       public static String getPath(List<Point> pointList) {
-               StringBuilder sb = new StringBuilder();
-               if (pointList != null && pointList.size() > 1) {
-                       Point firstPoint = pointList.get(0);
-                       sb.append(M).append(firstPoint.x).append(COMMA)
-                                       .append(firstPoint.y);
-                       sb.append(SPACE);
-                       Point secontPoint = pointList.get(1);
-                       sb.append(C).append(secontPoint.x).append(COMMA)
-                                       .append(secontPoint.y);
-                       for (int i = 2; i < pointList.size(); i++) {
-                               Point point = pointList.get(i);
-                               
sb.append(SPACE).append(point.x).append(COMMA).append(point.y);
-                       }
-               }
-               return sb.toString();
-       }
-
-       /**
-        * Creates an animation element.
-        *
-        * @param graphController
-        *            the SVGGraphController to use to create the animation 
element
-        * @param elementType
-        *            the type of animation element to create
-        * @param attribute
-        *            the attribute that the animation should affect
-        * @param transformType
-        *            the type of transform - use null not creating a transform
-        *            animation
-        * @return an new animation element
-        */
-       public static SVGOMAnimationElement createAnimationElement(
-                       SVGGraphController graphController, String elementType,
-                       String attribute, String transformType) {
-               SVGOMAnimationElement animationElement = 
(SVGOMAnimationElement) graphController
-                               .createElement(elementType);
-               animationElement.setAttribute(SMIL_ATTRIBUTE_NAME_ATTRIBUTE, 
attribute);
-               if (transformType != null)
-                       animationElement.setAttribute(SVG_TYPE_ATTRIBUTE, 
transformType);
-               animationElement.setAttribute(SMIL_FILL_ATTRIBUTE, 
SMIL_FREEZE_VALUE);
-               return animationElement;
-       }
-
-       /**
-        * Adds an animation to the SVG element and starts the animation.
-        *
-        * @param animate
-        *            that animation element
-        * @param element
-        *            the element to animate
-        * @param duration
-        *            the duration of the animation in milliseconds
-        * @param from
-        *            the starting point for the animation, can be null
-        * @param to
-        *            the end point for the animation, cannot be null
-        */
-       public static void animate(SVGOMAnimationElement animate, SVGElement 
element, int duration,
-                       String from, String to) {
-               animate.setAttribute(SMIL_DUR_ATTRIBUTE, duration + "ms");
-               if (from != null)
-                       animate.setAttribute(SMIL_FROM_ATTRIBUTE, from);
-               animate.setAttribute(SMIL_TO_ATTRIBUTE, to);
-               element.appendChild(animate);
-               try {
-                       animate.beginElement();
-               } catch (NullPointerException e) {
-               }
-       }
-
-       /**
-        * Adjusts the length of <code>pointList</code> by adding or removing 
points
-        * to make the length equal to <code>size</code>. If 
<code>pointList</code>
-        * is shorter than <code>size</code> the last point is repeated. If
-        * <code>pointList</code> is longer than <code>size</code> points at 
the end
-        * of the list are removed.
-        *
-        * @param pointList
-        *            the path to adjust
-        * @param size
-        *            the required size for <code>pointList</code>
-        */
-       public static void adjustPathLength(List<Point> pointList, int size) {
-               if (pointList.size() < size) {
-                       Point lastPoint = pointList.get(pointList.size() - 1);
-                       for (int i = pointList.size(); i < size; i++)
-                               pointList.add(lastPoint);
-               } else if (pointList.size() > size) {
-                       for (int i = pointList.size(); i > size; i--)
-                               pointList.remove(i - 1);
-               }
-       }
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/event/SVGEventListener.java
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/event/SVGEventListener.java
 
b/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/event/SVGEventListener.java
deleted file mode 100644
index 95b4181..0000000
--- 
a/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/event/SVGEventListener.java
+++ /dev/null
@@ -1,56 +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.svg.event;
-
-import static 
net.sf.taverna.t2.workbench.models.graph.svg.SVGUtil.screenToDocument;
-import net.sf.taverna.t2.workbench.models.graph.GraphElement;
-
-import org.apache.batik.dom.svg.SVGOMPoint;
-import org.w3c.dom.events.Event;
-import org.w3c.dom.events.EventListener;
-import org.w3c.dom.events.MouseEvent;
-import org.w3c.dom.svg.SVGLocatable;
-
-/**
- * Abstract superclass for SVG event listeners.
- * 
- * @author David Withers
- */
-public abstract class SVGEventListener implements EventListener {
-       protected GraphElement graphElement;
-
-       public SVGEventListener(GraphElement graphElement) {
-               this.graphElement = graphElement;
-       }
-
-       protected abstract void event(SVGOMPoint point, MouseEvent evt);
-
-       @Override
-       public final void handleEvent(Event evt) {
-               if (evt instanceof MouseEvent) {
-                       MouseEvent me = (MouseEvent) evt;
-                       SVGOMPoint point = screenToDocument((SVGLocatable) 
me.getTarget(),
-                                       new SVGOMPoint(me.getClientX(), 
me.getClientY()));
-                       event(point, me);
-                       evt.stopPropagation();
-               }
-       }
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/event/SVGMouseClickEventListener.java
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/event/SVGMouseClickEventListener.java
 
b/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/event/SVGMouseClickEventListener.java
deleted file mode 100644
index 0c13be3..0000000
--- 
a/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/event/SVGMouseClickEventListener.java
+++ /dev/null
@@ -1,45 +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.svg.event;
-
-import net.sf.taverna.t2.workbench.models.graph.GraphElement;
-
-import org.apache.batik.dom.svg.SVGOMPoint;
-import org.w3c.dom.events.MouseEvent;
-
-/**
- * SVG event listener for handling mouse click events.
- * 
- * @author David Withers
- */
-public class SVGMouseClickEventListener extends SVGEventListener {
-       public SVGMouseClickEventListener(GraphElement graphElement) {
-               super(graphElement);
-       }
-
-       @Override
-       protected void event(SVGOMPoint point, MouseEvent evt) {
-               graphElement.getEventManager().mouseClicked(graphElement,
-                               evt.getButton(), evt.getAltKey(), 
evt.getCtrlKey(),
-                               evt.getMetaKey(), (int) point.getX(), (int) 
point.getY(),
-                               evt.getScreenX(), evt.getScreenY());
-       }
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/event/SVGMouseDownEventListener.java
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/event/SVGMouseDownEventListener.java
 
b/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/event/SVGMouseDownEventListener.java
deleted file mode 100644
index bd69506..0000000
--- 
a/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/event/SVGMouseDownEventListener.java
+++ /dev/null
@@ -1,45 +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.svg.event;
-
-import net.sf.taverna.t2.workbench.models.graph.GraphElement;
-
-import org.apache.batik.dom.svg.SVGOMPoint;
-import org.w3c.dom.events.MouseEvent;
-
-/**
- * SVG event listener for handling mouse button down events.
- * 
- * @author David Withers
- */
-public class SVGMouseDownEventListener extends SVGEventListener {
-       public SVGMouseDownEventListener(GraphElement graphElement) {
-               super(graphElement);
-       }
-
-       @Override
-       protected void event(SVGOMPoint point, MouseEvent evt) {
-               graphElement.getEventManager().mouseDown(graphElement, 
evt.getButton(),
-                               evt.getAltKey(), evt.getCtrlKey(), 
evt.getMetaKey(),
-                               (int) point.getX(), (int) point.getY(), 
evt.getScreenX(),
-                               evt.getScreenY());
-       }
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/event/SVGMouseMovedEventListener.java
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/event/SVGMouseMovedEventListener.java
 
b/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/event/SVGMouseMovedEventListener.java
deleted file mode 100644
index 6ae5d50..0000000
--- 
a/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/event/SVGMouseMovedEventListener.java
+++ /dev/null
@@ -1,46 +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.svg.event;
-
-import net.sf.taverna.t2.workbench.models.graph.GraphElement;
-
-import org.apache.batik.dom.svg.SVGOMPoint;
-import org.w3c.dom.events.MouseEvent;
-
-/**
- * SVG event listener for handling mouse movement events.
- * 
- * @author David Withers
- */
-public class SVGMouseMovedEventListener extends SVGEventListener {
-       public SVGMouseMovedEventListener(GraphElement graphElement) {
-               super(graphElement);
-       }
-
-       @Override
-       protected void event(SVGOMPoint point, MouseEvent mouseEvent) {
-               graphElement.getEventManager().mouseMoved(graphElement,
-                               mouseEvent.getButton(), mouseEvent.getAltKey(),
-                               mouseEvent.getCtrlKey(), 
mouseEvent.getMetaKey(),
-                               (int) point.getX(), (int) point.getY(),
-                               mouseEvent.getScreenX(), 
mouseEvent.getScreenY());
-       }
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/event/SVGMouseOutEventListener.java
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/event/SVGMouseOutEventListener.java
 
b/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/event/SVGMouseOutEventListener.java
deleted file mode 100644
index 32714a6..0000000
--- 
a/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/event/SVGMouseOutEventListener.java
+++ /dev/null
@@ -1,46 +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.svg.event;
-
-import net.sf.taverna.t2.workbench.models.graph.GraphElement;
-
-import org.apache.batik.dom.svg.SVGOMPoint;
-import org.w3c.dom.events.MouseEvent;
-
-/**
- * SVG event listener for handling mouse button up events.
- * 
- * @author David Withers
- */
-public class SVGMouseOutEventListener extends SVGEventListener {
-       public SVGMouseOutEventListener(GraphElement graphElement) {
-               super(graphElement);
-       }
-
-       @Override
-       protected void event(SVGOMPoint point, MouseEvent mouseEvent) {
-               graphElement.getEventManager().mouseOut(graphElement,
-                               mouseEvent.getButton(), mouseEvent.getAltKey(),
-                               mouseEvent.getCtrlKey(), 
mouseEvent.getMetaKey(),
-                               (int) point.getX(), (int) point.getY(),
-                               mouseEvent.getScreenX(), 
mouseEvent.getScreenY());
-       }
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/event/SVGMouseOverEventListener.java
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/event/SVGMouseOverEventListener.java
 
b/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/event/SVGMouseOverEventListener.java
deleted file mode 100644
index 1c5f9a4..0000000
--- 
a/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/event/SVGMouseOverEventListener.java
+++ /dev/null
@@ -1,46 +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.svg.event;
-
-import net.sf.taverna.t2.workbench.models.graph.GraphElement;
-
-import org.apache.batik.dom.svg.SVGOMPoint;
-import org.w3c.dom.events.MouseEvent;
-
-/**
- * SVG event listener for handling mouse button up events.
- * 
- * @author David Withers
- */
-public class SVGMouseOverEventListener extends SVGEventListener {
-       public SVGMouseOverEventListener(GraphElement graphElement) {
-               super(graphElement);
-       }
-
-       @Override
-       protected void event(SVGOMPoint point, MouseEvent mouseEvent) {
-               graphElement.getEventManager().mouseOver(graphElement,
-                               mouseEvent.getButton(), mouseEvent.getAltKey(),
-                               mouseEvent.getCtrlKey(), 
mouseEvent.getMetaKey(),
-                               (int) point.getX(), (int) point.getY(),
-                               mouseEvent.getScreenX(), 
mouseEvent.getScreenY());
-       }
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/event/SVGMouseUpEventListener.java
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/event/SVGMouseUpEventListener.java
 
b/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/event/SVGMouseUpEventListener.java
deleted file mode 100644
index 492ecc2..0000000
--- 
a/taverna-workbench-graph-model/src/main/java/net/sf/taverna/t2/workbench/models/graph/svg/event/SVGMouseUpEventListener.java
+++ /dev/null
@@ -1,46 +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.svg.event;
-
-import net.sf.taverna.t2.workbench.models.graph.GraphElement;
-
-import org.apache.batik.dom.svg.SVGOMPoint;
-import org.w3c.dom.events.MouseEvent;
-
-/**
- * SVG event listener for handling mouse button up events.
- * 
- * @author David Withers
- */
-public class SVGMouseUpEventListener extends SVGEventListener {
-       public SVGMouseUpEventListener(GraphElement graphElement) {
-               super(graphElement);
-       }
-
-       @Override
-       protected void event(SVGOMPoint point, MouseEvent mouseEvent) {
-               graphElement.getEventManager().mouseUp(graphElement,
-                               mouseEvent.getButton(), mouseEvent.getAltKey(),
-                               mouseEvent.getCtrlKey(), 
mouseEvent.getMetaKey(),
-                               (int) point.getX(), (int) point.getY(),
-                               mouseEvent.getScreenX(), 
mouseEvent.getScreenY());
-       }
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-graph-model/src/main/jjtree/NamedNode.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-graph-model/src/main/jjtree/NamedNode.java 
b/taverna-workbench-graph-model/src/main/jjtree/NamedNode.java
deleted file mode 100644
index da92a97..0000000
--- a/taverna-workbench-graph-model/src/main/jjtree/NamedNode.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package net.sf.taverna.t2.workbench.models.graph.dot;
-
-public class NamedNode  {
-       
-       protected String name, value, port;
-
-       /**
-        * Returns the name.
-        * 
-        * @return the name
-        */
-       public String getName() {
-               return name;
-       }
-
-       /**
-        * Sets the value of name.
-        * 
-        * @param name
-        *            the new value for name
-        */
-       public void setName(String name) {
-               this.name = name;
-       }
-
-       /**
-        * Returns the value.
-        * 
-        * @return the value
-        */
-       public String getValue() {
-               return value;
-       }
-
-       /**
-        * Sets the value of value.
-        * 
-        * @param value
-        *            the new value for value
-        */
-       public void setValue(String value) {
-               this.value = value;
-       }
-
-       /**
-        * Returns the port.
-        * 
-        * @return the port
-        */
-       public String getPort() {
-               return port;
-       }
-
-       /**
-        * Sets the value of port.
-        * 
-        * @param port
-        *            the new value for port
-        */
-       public void setPort(String port) {
-               this.port = port;
-       }
-
-}
-

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-graph-model/src/main/jjtree/dotparser.jjt
----------------------------------------------------------------------
diff --git a/taverna-workbench-graph-model/src/main/jjtree/dotparser.jjt 
b/taverna-workbench-graph-model/src/main/jjtree/dotparser.jjt
deleted file mode 100644
index 001450b..0000000
--- a/taverna-workbench-graph-model/src/main/jjtree/dotparser.jjt
+++ /dev/null
@@ -1,289 +0,0 @@
-/**
- * JavaCC grammar for parsing Graphviz DOT files.
- * Written by Lynn Monson at l...@lmonson.com
- * Modified by David Withers
- */
-options {
-  STATIC = false;
-  UNICODE_INPUT = true;
-    VISITOR = true;
-    MULTI=true;
-    NODE_EXTENDS="NamedNode";
-}
-
-/*===========================================================================================
-  Parser java class
-  
===========================================================================================*/
-PARSER_BEGIN(DOTParser)
-package net.sf.taverna.t2.workbench.models.graph.dot;
-import java.io.*;
-
-class DOTParser {
-
-  public static void parseDot(Reader r) throws IOException, ParseException {
-    new DOTParser(r).parse().dump(" ");
-  }
-
-  public static void main(String[] args) throws Exception
-  {
-    parseDot(new FileReader(args[0]));
-  }
-  
-}
-PARSER_END(DOTParser)
-
-
-// whitespace
-SKIP :  {  " " | "\t" | "\n" | "\r" | "\f" }
-
-// comments
-MORE :
-{
-  "//" : IN_SINGLE_LINE_COMMENT
-|
-  "/*" : IN_MULTI_LINE_COMMENT
-}
-
-<IN_SINGLE_LINE_COMMENT>
-SPECIAL_TOKEN :
-{
-  <SINGLE_LINE_COMMENT: "\n" | "\r" | "\r\n" > : DEFAULT
-}
-
-<IN_MULTI_LINE_COMMENT>
-SPECIAL_TOKEN :
-{
-  <MULTI_LINE_COMMENT: "*/" > : DEFAULT
-}
-
-<IN_SINGLE_LINE_COMMENT,IN_MULTI_LINE_COMMENT>
-MORE : {   < ~[] >  }
-
-// Case insensitive keywords
-TOKEN [IGNORE_CASE] : {
-    <DIGRAPH: ( "digraph" )>
-  | <EDGE: ( "edge" )>
-  | <GRAPH: ( "graph" )>
-  | <NODE: ( "node" )>
-  | <STRICT: ( "strict" )>
-  | <SUBGRAPH: ( "subgraph" )>
-}
-
-// All other tokens
-TOKEN:
-{
-    // -------------------------------------------
-    // Various pieces of syntax as lexical tokens
-    // -------------------------------------------
-      <EQ: "=">
-    | <LBRACE: "{">
-    | <RBRACE: "}">
-    | <EDGE_UNDIRECTED: "--">
-    | <EDGE_DIRECTED: "->">
-    | <LBRACKET: "[">
-    | <RBRACKET: "]">
-    | <COMMA: ",">
-    | <SEMICOLON: ";">
-    | <COLON: ":">
-
-
-    // -------------------------------------------
-    // Identifiers
-    // -------------------------------------------
-  | <ID: <$HtmlString> | <$Number> | <$UnquotedString> | <$QuotedString> >
-  | <HTML: <$HtmlString>>
-  | <#$HtmlString: ( "<" ( "<" (~[">"])* ">" (~["<", ">"])* )* ">" ) >
-
-      // -------------------------------------------
-      // Character definitions (taken from xpath)
-      // -------------------------------------------
-
-  |    <#$BaseChar:
-                 ["\u0041"-"\u005A"] | ["\u0061"-"\u007A"] | 
["\u00C0"-"\u00D6"] | ["\u00D8"-"\u00F6"]
-               | ["\u00F8"-"\u00FF"] | ["\u0100"-"\u0131"] | 
["\u0134"-"\u013E"] | ["\u0141"-"\u0148"]
-               | ["\u014A"-"\u017E"] | ["\u0180"-"\u01C3"] | 
["\u01CD"-"\u01F0"] | ["\u01F4"-"\u01F5"]
-               | ["\u01FA"-"\u0217"] | ["\u0250"-"\u02A8"] | 
["\u02BB"-"\u02C1"] | "\u0386" | ["\u0388"-"\u038A"]
-               | "\u038C" | ["\u038E"-"\u03A1"] | ["\u03A3"-"\u03CE"] | 
["\u03D0"-"\u03D6"] | "\u03DA"
-               | "\u03DC" | "\u03DE" | "\u03E0" | ["\u03E2"-"\u03F3"] | 
["\u0401"-"\u040C"] | ["\u040E"-"\u044F"]
-               | ["\u0451"-"\u045C"] | ["\u045E"-"\u0481"] | 
["\u0490"-"\u04C4"] | ["\u04C7"-"\u04C8"]
-               | ["\u04CB"-"\u04CC"] | ["\u04D0"-"\u04EB"] | 
["\u04EE"-"\u04F5"] | ["\u04F8"-"\u04F9"]
-               | ["\u0531"-"\u0556"] | "\u0559" | ["\u0561"-"\u0586"] | 
["\u05D0"-"\u05EA"] | ["\u05F0"-"\u05F2"]
-               | ["\u0621"-"\u063A"] | ["\u0641"-"\u064A"] | 
["\u0671"-"\u06B7"] | ["\u06BA"-"\u06BE"]
-               | ["\u06C0"-"\u06CE"] | ["\u06D0"-"\u06D3"] | "\u06D5" | 
["\u06E5"-"\u06E6"] | ["\u0905"-"\u0939"]
-               | "\u093D" | ["\u0958"-"\u0961"] | ["\u0985"-"\u098C"] | 
["\u098F"-"\u0990"] | ["\u0993"-"\u09A8"]
-               | ["\u09AA"-"\u09B0"] | "\u09B2" | ["\u09B6"-"\u09B9"] | 
["\u09DC"-"\u09DD"] | ["\u09DF"-"\u09E1"]
-               | ["\u09F0"-"\u09F1"] | ["\u0A05"-"\u0A0A"] | 
["\u0A0F"-"\u0A10"] | ["\u0A13"-"\u0A28"]
-               | ["\u0A2A"-"\u0A30"] | ["\u0A32"-"\u0A33"] | 
["\u0A35"-"\u0A36"] | ["\u0A38"-"\u0A39"]
-               | ["\u0A59"-"\u0A5C"] | "\u0A5E" | ["\u0A72"-"\u0A74"] | 
["\u0A85"-"\u0A8B"] | "\u0A8D"
-               | ["\u0A8F"-"\u0A91"] | ["\u0A93"-"\u0AA8"] | 
["\u0AAA"-"\u0AB0"] | ["\u0AB2"-"\u0AB3"]
-               | ["\u0AB5"-"\u0AB9"] | "\u0ABD" | "\u0AE0" | 
["\u0B05"-"\u0B0C"] | ["\u0B0F"-"\u0B10"]
-               | ["\u0B13"-"\u0B28"] | ["\u0B2A"-"\u0B30"] | 
["\u0B32"-"\u0B33"] | ["\u0B36"-"\u0B39"]
-               | "\u0B3D" | ["\u0B5C"-"\u0B5D"] | ["\u0B5F"-"\u0B61"] | 
["\u0B85"-"\u0B8A"]
-               | ["\u0B8E"-"\u0B90"] | ["\u0B92"-"\u0B95"] | 
["\u0B99"-"\u0B9A"] | "\u0B9C" | ["\u0B9E"-"\u0B9F"]
-               | ["\u0BA3"-"\u0BA4"] | ["\u0BA8"-"\u0BAA"] | 
["\u0BAE"-"\u0BB5"] | ["\u0BB7"-"\u0BB9"]
-               | ["\u0C05"-"\u0C0C"] | ["\u0C0E"-"\u0C10"] | 
["\u0C12"-"\u0C28"] | ["\u0C2A"-"\u0C33"]
-               | ["\u0C35"-"\u0C39"] | ["\u0C60"-"\u0C61"] | 
["\u0C85"-"\u0C8C"] | ["\u0C8E"-"\u0C90"]
-               | ["\u0C92"-"\u0CA8"] | ["\u0CAA"-"\u0CB3"] | 
["\u0CB5"-"\u0CB9"] | "\u0CDE" | ["\u0CE0"-"\u0CE1"]
-               | ["\u0D05"-"\u0D0C"] | ["\u0D0E"-"\u0D10"] | 
["\u0D12"-"\u0D28"] | ["\u0D2A"-"\u0D39"]
-               | ["\u0D60"-"\u0D61"] | ["\u0E01"-"\u0E2E"] | "\u0E30" | 
["\u0E32"-"\u0E33"] | ["\u0E40"-"\u0E45"]
-               | ["\u0E81"-"\u0E82"] | "\u0E84" | ["\u0E87"-"\u0E88"] | 
"\u0E8A" | "\u0E8D" | ["\u0E94"-"\u0E97"]
-               | ["\u0E99"-"\u0E9F"] | ["\u0EA1"-"\u0EA3"] | "\u0EA5" | 
"\u0EA7" | ["\u0EAA"-"\u0EAB"]
-               | ["\u0EAD"-"\u0EAE"] | "\u0EB0" | ["\u0EB2"-"\u0EB3"] | 
"\u0EBD" | ["\u0EC0"-"\u0EC4"]
-               | ["\u0F40"-"\u0F47"] | ["\u0F49"-"\u0F69"] | 
["\u10A0"-"\u10C5"] | ["\u10D0"-"\u10F6"] | "\u1100"
-               | ["\u1102"-"\u1103"] | ["\u1105"-"\u1107"] | "\u1109" | 
["\u110B"-"\u110C"] | ["\u110E"-"\u1112"]
-               | "\u113C" | "\u113E" | "\u1140" | "\u114C" | "\u114E" | 
"\u1150" | ["\u1154"-"\u1155"] | "\u1159"
-               | ["\u115F"-"\u1161"] | "\u1163" | "\u1165" | "\u1167" | 
"\u1169" | ["\u116D"-"\u116E"]
-               | ["\u1172"-"\u1173"] | "\u1175" | "\u119E" | "\u11A8" | 
"\u11AB" | ["\u11AE"-"\u11AF"]
-               | ["\u11B7"-"\u11B8"] | "\u11BA" | ["\u11BC"-"\u11C2"] | 
"\u11EB" | "\u11F0" | "\u11F9"
-               | ["\u1E00"-"\u1E9B"] | ["\u1EA0"-"\u1EF9"] | 
["\u1F00"-"\u1F15"] | ["\u1F18"-"\u1F1D"]
-               | ["\u1F20"-"\u1F45"] | ["\u1F48"-"\u1F4D"] | 
["\u1F50"-"\u1F57"] | "\u1F59" | "\u1F5B" | "\u1F5D"
-               | ["\u1F5F"-"\u1F7D"] | ["\u1F80"-"\u1FB4"] | 
["\u1FB6"-"\u1FBC"] | "\u1FBE" | ["\u1FC2"-"\u1FC4"]
-               | ["\u1FC6"-"\u1FCC"] | ["\u1FD0"-"\u1FD3"] | 
["\u1FD6"-"\u1FDB"] | ["\u1FE0"-"\u1FEC"]
-               | ["\u1FF2"-"\u1FF4"] | ["\u1FF6"-"\u1FFC"] | "\u2126" | 
["\u212A"-"\u212B"] | "\u212E"
-               | ["\u2180"-"\u2182"] | ["\u3041"-"\u3094"] | 
["\u30A1"-"\u30FA"] | ["\u3105"-"\u312C"]
-               | ["\uAC00"-"\uD7A3"] >
-|      <#$Ideographic :    ["\u4E00"-"\u9FA5"] | "\u3007" | 
["\u3021"-"\u3029"] >
-|      <#CombiningChar :
-                 ["\u0300"-"\u0345"] | ["\u0360"-"\u0361"] | 
["\u0483"-"\u0486"] | ["\u0591"-"\u05A1"]
-               | ["\u05A3"-"\u05B9"] | ["\u05BB"-"\u05BD"] | "\u05BF" | 
["\u05C1"-"\u05C2"] | "\u05C4"
-               | ["\u064B"-"\u0652"] | "\u0670" | ["\u06D6"-"\u06DC"] | 
["\u06DD"-"\u06DF"]
-               | ["\u06E0"-"\u06E4"] | ["\u06E7"-"\u06E8"] | 
["\u06EA"-"\u06ED"] | ["\u0901"-"\u0903"]
-               | "\u093C" | ["\u093E"-"\u094C"] | "\u094D" | 
["\u0951"-"\u0954"] | ["\u0962"-"\u0963"]
-               | ["\u0981"-"\u0983"] | "\u09BC" | "\u09BE" | "\u09BF" | 
["\u09C0"-"\u09C4"] | ["\u09C7"-"\u09C8"]
-               | ["\u09CB"-"\u09CD"] | "\u09D7" | ["\u09E2"-"\u09E3"] | 
"\u0A02" | "\u0A3C" | "\u0A3E"
-               | "\u0A3F" | ["\u0A40"-"\u0A42"] | ["\u0A47"-"\u0A48"] | 
["\u0A4B"-"\u0A4D"] | ["\u0A70"-"\u0A71"]
-               | ["\u0A81"-"\u0A83"] | "\u0ABC" | ["\u0ABE"-"\u0AC5"] | 
["\u0AC7"-"\u0AC9"] | ["\u0ACB"-"\u0ACD"]
-               | ["\u0B01"-"\u0B03"] | "\u0B3C" | ["\u0B3E"-"\u0B43"] | 
["\u0B47"-"\u0B48"] | ["\u0B4B"-"\u0B4D"]
-               | ["\u0B56"-"\u0B57"] | ["\u0B82"-"\u0B83"] | 
["\u0BBE"-"\u0BC2"] | ["\u0BC6"-"\u0BC8"]
-               | ["\u0BCA"-"\u0BCD"] | "\u0BD7" | ["\u0C01"-"\u0C03"] | 
["\u0C3E"-"\u0C44"] | ["\u0C46"-"\u0C48"]
-               | ["\u0C4A"-"\u0C4D"] | ["\u0C55"-"\u0C56"] | 
["\u0C82"-"\u0C83"] | ["\u0CBE"-"\u0CC4"]
-               | ["\u0CC6"-"\u0CC8"] | ["\u0CCA"-"\u0CCD"] | 
["\u0CD5"-"\u0CD6"] | ["\u0D02"-"\u0D03"]
-               | ["\u0D3E"-"\u0D43"] | ["\u0D46"-"\u0D48"] | 
["\u0D4A"-"\u0D4D"] | "\u0D57" | "\u0E31"
-               | ["\u0E34"-"\u0E3A"] | ["\u0E47"-"\u0E4E"] | "\u0EB1" | 
["\u0EB4"-"\u0EB9"]
-               | ["\u0EBB"-"\u0EBC"] | ["\u0EC8"-"\u0ECD"] | 
["\u0F18"-"\u0F19"] | "\u0F35" | "\u0F37" | "\u0F39"
-               | "\u0F3E" | "\u0F3F" | ["\u0F71"-"\u0F84"] | 
["\u0F86"-"\u0F8B"] | ["\u0F90"-"\u0F95"] | "\u0F97"
-               | ["\u0F99"-"\u0FAD"] | ["\u0FB1"-"\u0FB7"] | "\u0FB9" | 
["\u20D0"-"\u20DC"] | "\u20E1"
-               | ["\u302A"-"\u302F"] | "\u3099" | "\u309A" >
-|      <#$Digit:
-                 ["\u0030"-"\u0039"] | ["\u0660"-"\u0669"] | 
["\u06F0"-"\u06F9"] | ["\u0966"-"\u096F"]
-               | ["\u09E6"-"\u09EF"] | ["\u0A66"-"\u0A6F"] | 
["\u0AE6"-"\u0AEF"] | ["\u0B66"-"\u0B6F"]
-               | ["\u0BE7"-"\u0BEF"] | ["\u0C66"-"\u0C6F"] | 
["\u0CE6"-"\u0CEF"] | ["\u0D66"-"\u0D6F"]
-               | ["\u0E50"-"\u0E59"] | ["\u0ED0"-"\u0ED9"] | 
["\u0F20"-"\u0F29"] >
-|      <#Extender :
-                 "\u00B7" | "\u02D0" | "\u02D1" | "\u0387" | "\u0640" | 
"\u0E46" | "\u0EC6" | "\u3005"
-               | ["\u3031"-"\u3035"] | ["\u309D"-"\u309E"] | 
["\u30FC"-"\u30FE"] >
-  | <#$EscapedCharacter: "\\" (["\u0020"-"\u007E", "\n", "\r" ] | "\r\n" ) >
-  | <#$NotWhitespaceNotQuoteNotEscape:~["\"","\\","\n","\r"]>
-  | <#$Letter: <$BaseChar> | <$Ideographic> >
-  | <#$Number: ("-")? ("." (<$Digit>)+) | ((<$Digit>)+ ("." (<$Digit>)*)?)>
-  | <#$UnquotedString:  (<$Letter>|"_"|<$Digit>)+       >
-  | <#$QuotedString: "\""  (<$NotWhitespaceNotQuoteNotEscape> | 
<$EscapedCharacter>)* "\""  >
-}
-
-/*===========================================================================================
-  DOT Grammar starts here
-  
===========================================================================================*/
-SimpleNode parse() #Parse :
-{}
-{
-    graph()
-    {
-        return jjtThis;
-        }
-}
-
-void graph() #Graph :
-{Token t;}
-{
-    [<STRICT>] (<GRAPH>|<DIGRAPH>) t=<ID>{jjtThis.setName(t.image);} <LBRACE> 
stmt_list() <RBRACE>  <EOF>
-}
-
-void stmt_list() #StatementList :
-{}
-{
-    stmt() [<SEMICOLON>] [stmt_list()]
-}
-
-
-void stmt() #Statement :
-{}
-{
-  ( LOOKAHEAD(edge_stmt()) edge_stmt() | LOOKAHEAD(2) subgraph() | 
LOOKAHEAD(2) node_stmt() | LOOKAHEAD(2) attr_stmt() | LOOKAHEAD(2) (<ID> <EQ> 
<ID>)  )
-
-}
-
-/*
-void ideq_stmt() :
-{}
-{
-    <ID> <EQ> <ID>
-}
-*/
-
-void attr_stmt() #AttributeStatement :
-{Token t;}
-{
-    (t=<GRAPH>{jjtThis.setName(t.image);} | 
t=<NODE>{jjtThis.setName(t.image);} | t=<EDGE>{jjtThis.setName(t.image);}) 
attr_list()
-}
-
-void node_stmt() #NodeStatement :
-{}
-{
-    node_id(jjtThis) [attr_list()]
-}
-
-void node_id(NamedNode namedNode) #NodeId :
-{Token t;}
-{
-    t=<ID>{namedNode.setName(t.image);} [port(namedNode)]
-}
-
-void port(NamedNode namedNode) #Port :
-{Token t;}
-{
-   <COLON> (LOOKAHEAD(2) t=<ID>{namedNode.setPort(t.image);} <COLON> <ID> | 
<ID>)
-}
-
-void edge_stmt() #EdgeStatement :
-{}
-{
-    (node_id(jjtThis)| subgraph()) edgeRHS() [attr_list()]
-}
-
-void subgraph() #Subgraph :
-{Token t;}
-{
-    (
-        LOOKAHEAD(2)
-        ([<SUBGRAPH>  [t=<ID>{jjtThis.setName(t.image);}]] <LBRACE> 
stmt_list() <RBRACE>)
-            |
-        (<SUBGRAPH> t=<ID>{jjtThis.setName(t.image);})
-    )
-
-}
-
-void edgeRHS() #EdgeRHS :
-{}
-{
-    edgeop() (node_id(jjtThis) | subgraph()) [ edgeRHS() ]
-}
-
-void edgeop() #void :
-{}
-{
-    <EDGE_UNDIRECTED> | <EDGE_DIRECTED>
-}
-
-
-void attr_list() #AttributeList :
-{}
-{
-    <LBRACKET> a_list() <RBRACKET>
-}
-
-void a_list() #AList :
-{Token t;}
-{
-    t=<ID>{jjtThis.setName(t.image);} [<EQ> 
t=<ID>{jjtThis.setValue(t.image);}] [<COMMA>] [a_list()]
-}
-

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/GraphControllerTest.java
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-graph-model/src/test/java/net/sf/taverna/t2/workbench/models/graph/GraphControllerTest.java
 
b/taverna-workbench-graph-model/src/test/java/net/sf/taverna/t2/workbench/models/graph/GraphControllerTest.java
deleted file mode 100644
index cb76b97..0000000
--- 
a/taverna-workbench-graph-model/src/test/java/net/sf/taverna/t2/workbench/models/graph/GraphControllerTest.java
+++ /dev/null
@@ -1,81 +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 java.io.IOException;
-
-import net.sf.taverna.t2.workbench.models.graph.GraphController.PortStyle;
-
-import org.junit.Before;
-import org.junit.Ignore;
-import org.junit.Test;
-
-import uk.org.taverna.scufl2.api.core.Workflow;
-
-public class GraphControllerTest {
-
-       Workflow dataflow;
-
-       GraphController graphController;
-
-       @Before
-       public void setUp() throws Exception {
-//             System.setProperty("raven.eclipse", "true");
-//             setUpRavenRepository();
-//             dataflow = 
WorkflowModelTranslator.doTranslation(loadScufl("nested_iteration.xml"));
-               graphController = new GraphController(dataflow, null, false, 
null, null, null, null) {
-
-                       @Override
-                       public GraphEdge createGraphEdge() {
-                               return new GraphEdge(this);
-                       }
-
-                       @Override
-                       public Graph createGraph() {
-                               return new Graph(this);
-                       }
-
-                       @Override
-                       public GraphNode createGraphNode() {
-                               return new GraphNode(this);
-                       }
-
-                       @Override
-                       public void redraw() {
-
-                       }
-
-               };
-               graphController.setPortStyle(PortStyle.NONE);
-       }
-
-       @Test
-       @Ignore
-       public void testGenerateGraph() throws IOException, 
InterruptedException {
-               Graph graph = graphController.generateGraph();
-               assertEquals(5, graph.getNodes().size());
-               assertEquals(9, graph.getEdges().size());
-               assertEquals(1, graph.getSubgraphs().size());
-       }
-
-}

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/GraphEdgeTest.java
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-graph-model/src/test/java/net/sf/taverna/t2/workbench/models/graph/GraphEdgeTest.java
 
b/taverna-workbench-graph-model/src/test/java/net/sf/taverna/t2/workbench/models/graph/GraphEdgeTest.java
deleted file mode 100644
index 10a3c20..0000000
--- 
a/taverna-workbench-graph-model/src/test/java/net/sf/taverna/t2/workbench/models/graph/GraphEdgeTest.java
+++ /dev/null
@@ -1,129 +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 net.sf.taverna.t2.workbench.models.graph.GraphEdge.ArrowStyle;
-
-import org.junit.Before;
-import org.junit.Test;
-
-public class GraphEdgeTest {
-
-       private GraphEdge edge;
-
-       private GraphNode source;
-
-       private GraphNode sink;
-
-       private ArrowStyle arrowHeadStyle;
-
-       private ArrowStyle arrowTailStyle;
-
-       private GraphController graphController;
-
-       @Before
-       public void setUp() throws Exception {
-               source = new GraphNode(graphController);
-               sink = new GraphNode(graphController);
-               arrowHeadStyle = ArrowStyle.DOT;
-               arrowTailStyle = ArrowStyle.NORMAL;
-               edge = new GraphEdge(graphController);
-               edge.setArrowHeadStyle(arrowHeadStyle);
-               edge.setArrowTailStyle(arrowTailStyle);
-               edge.setSink(sink);
-               edge.setSource(source);
-       }
-
-       @Test
-       public void testEdge() {
-               edge = new GraphEdge(graphController);
-               assertNull(edge.getSource());
-               assertNull(edge.getSink());
-               assertNull(edge.getLabel());
-       }
-
-       @Test
-       public void testEdgeNodeNode() {
-               edge = new GraphEdge(graphController);
-               edge.setSource(source);
-               edge.setSink(sink);
-               assertEquals(source, edge.getSource());
-               assertEquals(sink, edge.getSink());
-               assertNull(edge.getLabel());
-       }
-
-       @Test
-       public void testGetSource() {
-               assertEquals(source, edge.getSource());
-       }
-
-       @Test
-       public void testSetSource() {
-               GraphNode node = new GraphNode(graphController);
-               edge.setSource(node);
-               assertEquals(node, edge.getSource());
-               edge.setSource(null);
-               assertNull(edge.getSource());
-       }
-
-       @Test
-       public void testGetSink() {
-               assertEquals(sink, edge.getSink());
-       }
-
-       @Test
-       public void testSetSink() {
-               GraphNode node = new GraphNode(graphController);
-               edge.setSink(node);
-               assertEquals(node, edge.getSink());
-               edge.setSink(null);
-               assertNull(edge.getSink());
-       }
-
-       @Test
-       public void testGetArrowHeadStyle() {
-               assertEquals(arrowHeadStyle, edge.getArrowHeadStyle());
-       }
-
-       @Test
-       public void testSetArrowHeadStyle() {
-               edge.setArrowHeadStyle(ArrowStyle.DOT);
-               assertEquals(ArrowStyle.DOT, edge.getArrowHeadStyle());
-               edge.setArrowHeadStyle(null);
-               assertNull(edge.getArrowHeadStyle());
-       }
-
-       @Test
-       public void testGetArrowTailStyle() {
-               assertEquals(arrowTailStyle, edge.getArrowTailStyle());
-       }
-
-       @Test
-       public void testSetArrowTailStyle() {
-               edge.setArrowTailStyle(ArrowStyle.NORMAL);
-               assertEquals(ArrowStyle.NORMAL, edge.getArrowTailStyle());
-               edge.setArrowTailStyle(null);
-               assertNull(edge.getArrowTailStyle());
-       }
-
-}

Reply via email to