http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-iteration-strategy-ui/src/main/resources/META-INF/spring/iteration-strategy-ui-context-osgi.xml
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-iteration-strategy-ui/src/main/resources/META-INF/spring/iteration-strategy-ui-context-osgi.xml
 
b/taverna-workbench-iteration-strategy-ui/src/main/resources/META-INF/spring/iteration-strategy-ui-context-osgi.xml
deleted file mode 100644
index e3db399..0000000
--- 
a/taverna-workbench-iteration-strategy-ui/src/main/resources/META-INF/spring/iteration-strategy-ui-context-osgi.xml
+++ /dev/null
@@ -1,14 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans:beans xmlns="http://www.springframework.org/schema/osgi"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-       xmlns:beans="http://www.springframework.org/schema/beans";
-       xsi:schemaLocation="http://www.springframework.org/schema/beans
-                      
http://www.springframework.org/schema/beans/spring-beans.xsd
-                      http://www.springframework.org/schema/osgi
-                      
http://www.springframework.org/schema/osgi/spring-osgi.xsd";>
-
-       <service ref="IterationStrategyContextualViewFactory" 
interface="net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory"
 />
-
-       <reference id="editManager" 
interface="net.sf.taverna.t2.workbench.edits.EditManager" />
-       <reference id="fileManager" 
interface="net.sf.taverna.t2.workbench.file.FileManager" />
-
-</beans:beans>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-iteration-strategy-ui/src/main/resources/META-INF/spring/iteration-strategy-ui-context.xml
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-iteration-strategy-ui/src/main/resources/META-INF/spring/iteration-strategy-ui-context.xml
 
b/taverna-workbench-iteration-strategy-ui/src/main/resources/META-INF/spring/iteration-strategy-ui-context.xml
deleted file mode 100644
index f0bc464..0000000
--- 
a/taverna-workbench-iteration-strategy-ui/src/main/resources/META-INF/spring/iteration-strategy-ui-context.xml
+++ /dev/null
@@ -1,11 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<beans xmlns="http://www.springframework.org/schema/beans"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-       xsi:schemaLocation="http://www.springframework.org/schema/beans
-                      
http://www.springframework.org/schema/beans/spring-beans.xsd";>
-
-       <bean id="IterationStrategyContextualViewFactory" 
class="net.sf.taverna.t2.workbench.iterationstrategy.contextview.IterationStrategyContextualViewFactory">
-                       <property name="editManager" ref="editManager" />
-                       <property name="fileManager" ref="fileManager" />
-       </bean>
-
-</beans>

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-iteration-strategy-ui/src/main/resources/net/sf/taverna/t2/workbench/iterationstrategy/icons/crossproducticon.png
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-iteration-strategy-ui/src/main/resources/net/sf/taverna/t2/workbench/iterationstrategy/icons/crossproducticon.png
 
b/taverna-workbench-iteration-strategy-ui/src/main/resources/net/sf/taverna/t2/workbench/iterationstrategy/icons/crossproducticon.png
deleted file mode 100644
index 4627fc8..0000000
Binary files 
a/taverna-workbench-iteration-strategy-ui/src/main/resources/net/sf/taverna/t2/workbench/iterationstrategy/icons/crossproducticon.png
 and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-iteration-strategy-ui/src/main/resources/net/sf/taverna/t2/workbench/iterationstrategy/icons/dotproducticon.png
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-iteration-strategy-ui/src/main/resources/net/sf/taverna/t2/workbench/iterationstrategy/icons/dotproducticon.png
 
b/taverna-workbench-iteration-strategy-ui/src/main/resources/net/sf/taverna/t2/workbench/iterationstrategy/icons/dotproducticon.png
deleted file mode 100644
index c269883..0000000
Binary files 
a/taverna-workbench-iteration-strategy-ui/src/main/resources/net/sf/taverna/t2/workbench/iterationstrategy/icons/dotproducticon.png
 and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-iteration-strategy-ui/src/main/resources/net/sf/taverna/t2/workbench/iterationstrategy/icons/leafnodeicon.png
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-iteration-strategy-ui/src/main/resources/net/sf/taverna/t2/workbench/iterationstrategy/icons/leafnodeicon.png
 
b/taverna-workbench-iteration-strategy-ui/src/main/resources/net/sf/taverna/t2/workbench/iterationstrategy/icons/leafnodeicon.png
deleted file mode 100644
index 36808c6..0000000
Binary files 
a/taverna-workbench-iteration-strategy-ui/src/main/resources/net/sf/taverna/t2/workbench/iterationstrategy/icons/leafnodeicon.png
 and /dev/null differ

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-iteration-strategy-ui/src/test/java/net/sf/taverna/t2/workbench/iterationstrategy/editor/RunIterationStrategyEditor.java
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-iteration-strategy-ui/src/test/java/net/sf/taverna/t2/workbench/iterationstrategy/editor/RunIterationStrategyEditor.java
 
b/taverna-workbench-iteration-strategy-ui/src/test/java/net/sf/taverna/t2/workbench/iterationstrategy/editor/RunIterationStrategyEditor.java
deleted file mode 100644
index 1862233..0000000
--- 
a/taverna-workbench-iteration-strategy-ui/src/test/java/net/sf/taverna/t2/workbench/iterationstrategy/editor/RunIterationStrategyEditor.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.iterationstrategy.editor;
-
-import javax.swing.JFrame;
-
-import net.sf.taverna.t2.workflowmodel.processor.iteration.NamedInputPortNode;
-import 
net.sf.taverna.t2.workflowmodel.processor.iteration.impl.IterationStrategyImpl;
-
-public class RunIterationStrategyEditor {
-
-       /**
-        * @param args
-        */
-       public static void main(String[] args) {
-               IterationStrategyImpl iterationStrategyImpl = new 
IterationStrategyImpl();
-               NamedInputPortNode fishPort = new NamedInputPortNode("fish", 2);
-               NamedInputPortNode otherPort = new NamedInputPortNode("other", 
0);
-               NamedInputPortNode soupPort = new NamedInputPortNode("soup", 1);
-               iterationStrategyImpl.addInput(fishPort);
-               iterationStrategyImpl.addInput(soupPort);
-               iterationStrategyImpl.addInput(otherPort);
-
-               iterationStrategyImpl.connectDefault(otherPort);
-               iterationStrategyImpl.connectDefault(fishPort);
-               iterationStrategyImpl.connectDefault(soupPort);
-               
-               IterationStrategyEditorControl editorControl = new 
IterationStrategyEditorControl(iterationStrategyImpl);
-               
-               JFrame frame = new JFrame("List handling editor");
-               frame.add(editorControl);
-               frame.setSize(500,400);
-               frame.setVisible(true);
-               
-               
-       }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-loop-ui/pom.xml
----------------------------------------------------------------------
diff --git a/taverna-workbench-loop-ui/pom.xml 
b/taverna-workbench-loop-ui/pom.xml
deleted file mode 100644
index f639bea..0000000
--- a/taverna-workbench-loop-ui/pom.xml
+++ /dev/null
@@ -1,71 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
-    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/maven-v4_0_0.xsd";>
-    <modelVersion>4.0.0</modelVersion>
-    <parent>
-        <groupId>net.sf.taverna.t2</groupId>
-        <artifactId>ui-exts</artifactId>
-        <version>2.0-SNAPSHOT</version>
-
-    </parent>
-    <groupId>net.sf.taverna.t2.ui-exts</groupId>
-    <artifactId>loop-ui</artifactId>
-    <packaging>bundle</packaging>
-    <name>Loop layer contextual view</name>
-    <dependencies>
-        <dependency>
-            <groupId>net.sf.taverna.t2.ui-api</groupId>
-            <artifactId>contextual-views-api</artifactId>
-            <version>${t2.ui.api.version}</version>
-        </dependency>
-
-
-        <dependency>
-            <groupId>net.sf.taverna.t2.ui-api</groupId>
-            <artifactId>file-api</artifactId>
-            <version>${t2.ui.api.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>net.sf.taverna.t2.ui-api</groupId>
-            <artifactId>edits-api</artifactId>
-            <version>${t2.ui.api.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>net.sf.taverna.t2.ui-api</groupId>
-            <artifactId>helper-api</artifactId>
-            <version>${t2.ui.api.version}</version>
-        </dependency>
-        <dependency>
-            <groupId>net.sf.taverna.t2.ui-activities</groupId>
-            <artifactId>beanshell-activity-ui</artifactId>
-            <version>${t2.ui.activities.version}</version>
-        </dependency>
-
-               <dependency>
-                       <groupId>net.sf.taverna.t2.ui-impl</groupId>
-                       <artifactId>edits-impl</artifactId>
-                       <version>${t2.ui.impl.version}</version>
-                       <scope>test</scope>
-               </dependency>
-               <dependency>
-                       <groupId>net.sf.taverna.t2.ui-impl</groupId>
-                       <artifactId>file-impl</artifactId>
-                       <version>${t2.ui.impl.version}</version>
-                       <scope>test</scope>
-               </dependency>
-
-        <dependency>
-            <groupId>net.sf.taverna.t2.ui-impl</groupId>
-            <artifactId>contextual-views-impl</artifactId>
-            <version>${t2.ui.impl.version}</version>
-            <scope>test</scope>
-        </dependency>
-            <dependency>
-            <groupId>net.sf.taverna.t2.ui-impl</groupId>
-            <artifactId>selection-impl</artifactId>
-            <version>${t2.ui.impl.version}</version>
-            <scope>test</scope>
-        </dependency>
-
-       </dependencies>
-</project>
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/ActivityGenerator.java
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/ActivityGenerator.java
 
b/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/ActivityGenerator.java
deleted file mode 100644
index 9bd68e8..0000000
--- 
a/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/ActivityGenerator.java
+++ /dev/null
@@ -1,195 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2008 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.loop;
-
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Properties;
-import java.util.Set;
-import java.util.Map.Entry;
-
-import net.sf.taverna.t2.workbench.loop.comparisons.Comparison;
-import net.sf.taverna.t2.workbench.loop.comparisons.EqualTo;
-import net.sf.taverna.t2.workbench.loop.comparisons.IsGreaterThan;
-import net.sf.taverna.t2.workbench.loop.comparisons.IsLessThan;
-import net.sf.taverna.t2.workbench.loop.comparisons.Matches;
-import net.sf.taverna.t2.workbench.loop.comparisons.NotEqualTo;
-import net.sf.taverna.t2.workbench.loop.comparisons.NotMatches;
-
-import org.apache.log4j.Logger;
-
-import uk.org.taverna.scufl2.api.activity.Activity;
-import uk.org.taverna.scufl2.api.common.Scufl2Tools;
-import uk.org.taverna.scufl2.api.configurations.Configuration;
-import uk.org.taverna.scufl2.api.core.Processor;
-import uk.org.taverna.scufl2.api.port.InputActivityPort;
-import uk.org.taverna.scufl2.api.port.InputProcessorPort;
-import uk.org.taverna.scufl2.api.port.OutputActivityPort;
-import uk.org.taverna.scufl2.api.port.OutputPort;
-import uk.org.taverna.scufl2.api.port.OutputProcessorPort;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-public class ActivityGenerator {
-
-    private static final String LOOP_PORT = "loop";
-
-    private static final String SCRIPT = "script";
-
-    public static URI BEANSHELL_ACTIVITY = URI
-            .create("http://ns.taverna.org.uk/2010/activity/beanshell";);
-
-    public static URI BEANSHELL_CONFIG = BEANSHELL_ACTIVITY.resolve("#Config");
-
-    
-       public static final double DEFAULT_DELAY_S = 0.2;
-       public static final String COMPARE_PORT = "comparePort";
-       public static final String COMPARISON = "comparison";
-       public static final String CUSTOM_COMPARISON = "custom";
-       public static final String COMPARE_VALUE = "compareValue";
-       public static final String IS_FEED_BACK = "isFeedBack";
-       public static final String DELAY = "delay";
-
-       private static Logger logger = 
Logger.getLogger(ActivityGenerator.class);
-       private final ObjectNode loopProperties;
-       private final Processor processorToCompare;
-       private static Scufl2Tools scufl2Tools = new Scufl2Tools();
-
-       public ActivityGenerator(ObjectNode configuration,
-                       Processor processorToCompare) {
-               this.loopProperties = configuration;
-               this.processorToCompare = processorToCompare;
-       }
-
-       protected Activity generateActivity() {
-               Activity beanshell = new Activity();
-               beanshell.setType(BEANSHELL_ACTIVITY);
-               Configuration config = generateBeanshellConfig(beanshell);
-               // TODO: Where to put the config?
-               return beanshell;
-       }
-
-       private Configuration generateBeanshellConfig(Activity beanshell) {
-           Configuration config = 
scufl2Tools.createConfigurationFor(beanshell, BEANSHELL_CONFIG);
-           generateInputPorts(beanshell);
-           generateOutputPorts(beanshell);
-           config.getJsonAsObjectNode().put(SCRIPT, generateScript());
-               return config;
-       }
-
-       protected static List<Comparison> comparisons = Arrays.asList(
-                       new EqualTo(), new NotEqualTo(), new Matches(), new 
NotMatches(),
-                       new IsGreaterThan(), new IsLessThan());
-
-       protected static Comparison getComparisonById(String id) {
-           if (id == null || id.isEmpty()) {
-               return comparisons.get(0);
-           }
-               for (Comparison potentialComparison : comparisons) {
-                       if (potentialComparison.getId().equals(id)) {
-                               return potentialComparison;
-                       }
-               }
-               return null;
-       }
-
-       @SuppressWarnings("boxing")
-       private String generateScript() {
-               Map<String, String> replacements = new HashMap<String, 
String>();
-               replacements.put("${loopPort}", LOOP_PORT);
-               replacements.put("${port}", 
loopProperties.findValue(COMPARE_PORT).asText());
-               replacements.put("${value}", beanshellString(loopProperties
-                               .findValue(COMPARE_VALUE).asText()));
-
-
-               // as seconds
-               Double delay = 
loopProperties.findPath(DELAY).asDouble(DEFAULT_DELAY_S);
-               // as milliseconds
-               delay = Math.max(0.0, delay) * 1000;
-               // as integer (for Thread.sleep)
-               replacements.put("${delay}", 
Integer.toString(delay.intValue()));
-
-               String template = getComparisonById(
-                               
loopProperties.findValue(COMPARISON).asText()).getScriptTemplate();
-
-               if (delay > 0.0) {
-               template += "\nif (\"true\".matches(${loopPort})) {\n";
-               template += "   Thread.sleep(${delay});\n";
-               template += "}";
-               }
-
-               String script = template;
-               for (Entry<String, String> mapping : replacements.entrySet()) {
-                       script = script.replace(mapping.getKey(), 
mapping.getValue());
-               }
-               return script;
-       }
-
-       private String beanshellString(String value) {
-               value = value.replace("\\", "\\\\");
-               value = value.replace("\n", "\\n");
-               value = value.replace("\"", "\\\"");
-               return '"' + value + '"';
-       }
-
-       private void generateInputPorts(Activity beanshell) {
-               if (processorToCompare == null) {
-                   return;
-               }
-               for (OutputProcessorPort procOut : 
processorToCompare.getOutputPorts()) {
-                   // Any of the outputs are available to the script, giving
-                   // a custom script that compares multiple outputs a better
-                   // starting point.
-                       String portName = procOut.getName();
-                       if 
(portName.equals(loopProperties.findValue(COMPARE_PORT).asText()) ||
-                               
(loopProperties.findValue(IS_FEED_BACK).asBoolean())) {
-                               InputActivityPort input = new 
InputActivityPort(beanshell, portName);
-                               input.setDepth(procOut.getDepth());
-                               input.setParent(beanshell);
-                       }
-               }
-       }
-
-       private void generateOutputPorts(Activity beanshell) {
-              OutputActivityPort loopPort = new OutputActivityPort(beanshell, 
LOOP_PORT);
-               loopPort.setDepth(0);
-               loopPort.setGranularDepth(0);
-           if (processorToCompare == null) {
-            return;
-           }       
-           if (! loopProperties.findValue(IS_FEED_BACK).asBoolean()) {
-           return;
-           }
-           for (InputProcessorPort procIn : 
processorToCompare.getInputPorts()) {
-            String portName = procIn.getName();
-            if (processorToCompare.getOutputPorts().containsName(portName)) {
-                OutputActivityPort actOut = new OutputActivityPort(beanshell, 
portName);
-                actOut.setDepth(procIn.getDepth());
-                actOut.setGranularDepth(procIn.getDepth());
-            }
-           }
-       }
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/AddLoopFactory.java
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/AddLoopFactory.java
 
b/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/AddLoopFactory.java
deleted file mode 100644
index f23650c..0000000
--- 
a/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/AddLoopFactory.java
+++ /dev/null
@@ -1,125 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2008 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.loop;
-
-import java.awt.event.ActionEvent;
-import java.net.URI;
-import java.util.List;
-
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-
-import net.sf.taverna.t2.workbench.MainWindow;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.file.FileManager;
-import net.sf.taverna.t2.workbench.selection.SelectionManager;
-import net.sf.taverna.t2.workbench.ui.views.contextualviews.AddLayerFactorySPI;
-
-import org.apache.log4j.Logger;
-
-import uk.org.taverna.configuration.app.ApplicationConfiguration;
-import uk.org.taverna.scufl2.api.common.Scufl2Tools;
-import uk.org.taverna.scufl2.api.configurations.Configuration;
-import uk.org.taverna.scufl2.api.core.Processor;
-
-import com.fasterxml.jackson.databind.node.JsonNodeFactory;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-public class AddLoopFactory implements AddLayerFactorySPI {
-
-    private static final URI LOOP_TYPE = 
URI.create("http://ns.taverna.org.uk/2010/scufl2/taverna/dispatchlayer/Loop";);
-
-    
-    private static Logger logger = Logger.getLogger(AddLoopFactory.class);
-    private static final JsonNodeFactory JSON_NODE_FACTORY = 
JsonNodeFactory.instance;
-    private static Scufl2Tools scufl2Tools = new Scufl2Tools();
-    
-       private EditManager editManager;
-       private FileManager fileManager;
-       private SelectionManager selectionManager;
-       private ApplicationConfiguration applicationConfig;
-
-       public boolean canAddLayerFor(Processor processor) {
-          return findLoopLayer(processor) == null;
-       }
-
-
-    public ObjectNode findLoopLayer(Processor processor) {
-        List<Configuration> configs = scufl2Tools.configurationsFor(processor, 
selectionManager.getSelectedProfile());
-        for (Configuration config : configs) {
-            if (config.getJson().has("loop")) {
-                return (ObjectNode) config.getJson().get("loop");
-            }
-        }
-        return null;
-    }
-       
-       @SuppressWarnings("serial")
-       public Action getAddLayerActionFor(final Processor processor) {
-               return new AbstractAction("Add looping") {
-
-            public void actionPerformed(ActionEvent e) {
-                                   ObjectNode loopLayer = 
findLoopLayer(processor);
-                                   if (loopLayer == null) {
-                                       loopLayer = 
JSON_NODE_FACTORY.objectNode();
-                                   }
-                                       // Pop up the configure loop dialog
-                LoopConfigureAction loopConfigureAction = new 
LoopConfigureAction(
-                        MainWindow.getMainWindow(), null, processor, loopLayer,
-                        selectionManager.getSelectedProfile(), editManager,
-                        fileManager, getApplicationConfig());
-                                       loopConfigureAction.actionPerformed(e);
-                       }
-               };
-       }
-
-       @Override
-       public boolean canCreateLayerClass(URI dispatchLayerType) {
-           return dispatchLayerType.equals(LOOP_TYPE);
-       }
-
-       public void setEditManager(EditManager editManager) {
-               this.editManager = editManager;
-       }
-
-       public void setFileManager(FileManager fileManager) {
-               this.fileManager = fileManager;
-       }
-
-    public SelectionManager getSelectionManager() {
-        return selectionManager;
-    }
-
-    public void setSelectionManager(SelectionManager selectionManager) {
-        this.selectionManager = selectionManager;
-    }
-
-
-    public ApplicationConfiguration getApplicationConfig() {
-        return applicationConfig;
-    }
-
-
-    public void setApplicationConfig(ApplicationConfiguration 
applicationConfig) {
-        this.applicationConfig = applicationConfig;
-    }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/LoopAddMenuAction.java
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/LoopAddMenuAction.java
 
b/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/LoopAddMenuAction.java
deleted file mode 100644
index e7b6e87..0000000
--- 
a/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/LoopAddMenuAction.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/**********************************************************************
- * Copyright (C) 2007-2009 The University of Manchester
- *
- *  Modifications to the initial code base are copyright of their
- *  respective authors, or their employers as appropriate.
- *
- *  This program is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU Lesser General Public License
- *  as published by the Free Software Foundation; either version 2.1 of
- *  the License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful, but
- *  WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  Lesser General Public License for more details.
- *
- *  You should have received a copy of the GNU Lesser General Public
- *  License along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- **********************************************************************/
-package net.sf.taverna.t2.workbench.loop;
-
-import java.awt.event.ActionEvent;
-import java.net.URI;
-
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-
-import uk.org.taverna.scufl2.api.core.Processor;
-
-import net.sf.taverna.t2.ui.menu.AbstractContextualMenuAction;
-
-public class LoopAddMenuAction extends AbstractContextualMenuAction {
-
-       public static final URI configureRunningSection = URI
-       .create("http://taverna.sf.net/2009/contextMenu/configureRunning";);
-
-       private static final URI LOOP_ADD_URI = URI
-       .create("http://taverna.sf.net/2008/t2workbench/loopAdd";);
-
-       private static final String LOOP_ADD = "Loop add";
-
-       public LoopAddMenuAction() {
-               super(configureRunningSection, 20, LOOP_ADD_URI);
-       }
-
-       private AddLoopFactory addLoopFactory;
-
-       @SuppressWarnings("serial")
-       @Override
-       protected Action createAction() {
-               return new AbstractAction("Looping...") {
-                       public void actionPerformed(ActionEvent e) {
-                               //Loop loopLayer = null;
-                               Processor p = (Processor) 
getContextualSelection().getSelection();
-                               
addLoopFactory.getAddLayerActionFor(p).actionPerformed(e);
-                               //LoopConfigureMenuAction.configureLoopLayer(p, 
e); // Configuration dialog pop up is now done from getAddLayerActionFor()
-                       }
-               };
-       }
-
-       public boolean isEnabled() {
-               Object selection = getContextualSelection().getSelection();
-               return (super.isEnabled() && (selection instanceof Processor) 
&& (LoopConfigureMenuAction.getLoopLayer((Processor)selection) == null));
-       }
-
-       public void setAddLoopFactory(AddLoopFactory addLoopFactory) {
-               this.addLoopFactory = addLoopFactory;
-       }
-
-
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/LoopConfigurationPanel.java
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/LoopConfigurationPanel.java
 
b/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/LoopConfigurationPanel.java
deleted file mode 100644
index 88efb1a..0000000
--- 
a/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/LoopConfigurationPanel.java
+++ /dev/null
@@ -1,588 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2008 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.loop;
-
-import java.awt.BorderLayout;
-import java.awt.Color;
-import java.awt.FlowLayout;
-import java.awt.Frame;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.Insets;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-import java.util.Properties;
-
-import javax.swing.AbstractAction;
-import javax.swing.Box;
-import javax.swing.JButton;
-import javax.swing.JCheckBox;
-import javax.swing.JComboBox;
-import javax.swing.JDialog;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JTextField;
-import javax.swing.SwingConstants;
-import javax.swing.border.EmptyBorder;
-
-import 
net.sf.taverna.t2.activities.beanshell.views.BeanshellConfigurationPanel;
-import net.sf.taverna.t2.workbench.helper.HelpEnabledDialog;
-import net.sf.taverna.t2.workbench.loop.comparisons.Comparison;
-import net.sf.taverna.t2.workbench.ui.Utils;
-
-import org.apache.log4j.Logger;
-
-import uk.org.taverna.configuration.app.ApplicationConfiguration;
-import uk.org.taverna.scufl2.api.activity.Activity;
-import uk.org.taverna.scufl2.api.common.Scufl2Tools;
-import uk.org.taverna.scufl2.api.configurations.Configuration;
-import uk.org.taverna.scufl2.api.core.Processor;
-import uk.org.taverna.scufl2.api.profiles.Profile;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * UI for {@link LoopConfiguration}
- *
- * @author Stian Soiland-Reyes
- *
- */
-@SuppressWarnings("serial")
-public class LoopConfigurationPanel extends JPanel {
-
-       private static final String CONDITION_ACTIVITY = "conditionActivity";
-    private static final String DEFAULT_DELAY_S = "0.5";
-       protected ObjectNode configuration;
-
-       private static final Scufl2Tools scufl2tools = new Scufl2Tools();
-       private ApplicationConfiguration applicationConfig;
-
-       
-       protected final Processor processor;
-
-       protected JPanel headerPanel = new JPanel();
-       protected JPanel optionsPanel = new JPanel();
-       protected JPanel configPanel = new JPanel();
-       protected JPanel customPanel = new JPanel();
-
-       protected JLabel valueTypeLabel = new JLabel("the string");
-
-       protected JTextField valueField = new JTextField("", 15);
-
-       protected JLabel delayLabel = new JLabel("adding a delay of ");
-       protected JTextField delayField = new JTextField(
-                       Double.toString(ActivityGenerator.DEFAULT_DELAY_S), 4);
-       protected JLabel secondsLabel = new JLabel(" seconds between the 
loops.");
-
-       private JComboBox<String> portCombo;
-       private JComboBox<Comparison> comparisonCombo;
-       private JButton customizeButton;
-
-       protected ObjectNode loopLayer;
-       private Object Comparison;
-       private Activity originalCondition = null;
-    private Profile profile;
-
-    public LoopConfigurationPanel(Processor processor, ObjectNode loopLayer,
-            Profile profile, ApplicationConfiguration applicationConfig) {
-               this.processor = processor;
-               this.loopLayer = loopLayer;
-        this.profile = profile;
-        this.applicationConfig = applicationConfig;
-               this.setBorder(new EmptyBorder(10,10,10,10));
-               initialise();
-               setConfiguration(loopLayer);
-       }
-
-       public ObjectNode getConfiguration() {
-               uiToConfig();
-               return loopLayer.deepCopy();
-       }
-
-       private static Logger logger = Logger
-                       .getLogger(LoopConfigurationPanel.class);
-
-       protected void uiToConfig() {
-           String comparisonStr = 
configuration.path(ActivityGenerator.COMPARISON).asText();
-           if (comparisonStr.isEmpty()) {
-               comparisonStr = ActivityGenerator.CUSTOM_COMPARISON;
-           }
-               if (comparisonStr.equals(ActivityGenerator.CUSTOM_COMPARISON)
-                               && ! 
configuration.path(CONDITION_ACTIVITY).asText().isEmpty()) {
-                       // Ignore values
-               } else {
-                   configuration.put("runFirst", true);
-                       if (portCombo.getSelectedItem() == null) {
-                           // unconfigured port
-                               
configuration.remove(ActivityGenerator.COMPARE_PORT);
-                               configuration.putNull(CONDITION_ACTIVITY);
-                               return;
-                       } else {
-                               
configuration.put(ActivityGenerator.COMPARE_PORT,
-                                               ((String) 
portCombo.getSelectedItem()));
-                       }
-
-                       Comparison comparison = (Comparison) comparisonCombo
-                                       .getSelectedItem();
-                       if (comparison == null) {
-                               
configuration.remove(ActivityGenerator.COMPARISON);
-                               configuration.putNull(CONDITION_ACTIVITY);
-                               return;
-                       } else {
-                               configuration
-                                               
.put(ActivityGenerator.COMPARISON, comparison.getId());
-                       }
-                       configuration.put(ActivityGenerator.COMPARE_VALUE, 
valueField
-                                       .getText());
-                       configuration.put(ActivityGenerator.DELAY, 
Double.parseDouble(delayField.getText()));
-                       configuration.put(ActivityGenerator.IS_FEED_BACK, 
feedBackCheck.isSelected());
-
-                       // Generate activity
-                       ActivityGenerator activityGenerator = new 
ActivityGenerator(
-                                       configuration, processor);
-                       configuration.put(CONDITION_ACTIVITY, 
activityGenerator.generateActivity().getName());
-               }
-       }
-
-       public class ResetAction extends AbstractAction {
-               public ResetAction() {
-                       super("Clear");
-               }
-
-               public void actionPerformed(ActionEvent e) {
-                       configuration.putNull(CONDITION_ACTIVITY);
-                       configToUi();
-               }
-       }
-
-       private final class CustomizeAction implements ActionListener {
-
-
-//             public CustomizeAction() {
-//                     super();
-//                     //putValue(NAME, "Customise loop condition");
-//             }
-
-               public void actionPerformed(ActionEvent e) {
-                       uiToConfig();
-
-                       String conditionName = 
configuration.path(CONDITION_ACTIVITY).asText();
-                       
-                       Activity condition = 
profile.getActivities().getByName(conditionName);
-                       if (condition == null) {
-                           condition = new Activity();
-                           profile.getActivities().add(condition);
-                           configuration.put(CONDITION_ACTIVITY, 
condition.getName());
-                           
condition.setType(ActivityGenerator.BEANSHELL_ACTIVITY);
-                           Configuration config = 
scufl2tools.createConfigurationFor(condition, 
ActivityGenerator.BEANSHELL_CONFIG);
-                       } else if 
(!(condition.getType().equals(ActivityGenerator.BEANSHELL_ACTIVITY))) {
-                               logger.warn("Can't configure unsupported loop 
condition of service type "
-                                               + condition.getType());
-                               return;
-                       }
-
-                       Frame owner = 
Utils.getParentFrame(LoopConfigurationPanel.this);
-                       
-                       
-            final BeanshellConfigurationPanel beanshellConfigView = new 
BeanshellConfigurationPanel(
-                    condition, applicationConfig);
-                       
-                       final JDialog dialog = new HelpEnabledDialog(owner, 
"Customize looping", true);
-                       dialog.setLayout(new BorderLayout());
-                       dialog.add(beanshellConfigView, BorderLayout.NORTH);
-                       dialog.setSize(600, 600);
-                       JPanel buttonPanel = new JPanel();
-
-                       buttonPanel.setLayout(new FlowLayout(FlowLayout.RIGHT));
-
-                       JButton applyButton = new JButton(new AbstractAction() {
-
-                               public void actionPerformed(ActionEvent e) {
-                                       if 
(beanshellConfigView.isConfigurationChanged()) {
-                                               
beanshellConfigView.noteConfiguration();
-//                                                     
beanshellActivity.configure(beanshellConfigView
-//                                                                     
.getConfiguration());
-//                                                     
configuration.setCondition(beanshellActivity);
-                                               Configuration config = 
beanshellConfigView.getConfiguration();
-                                               // TODO: Do we need to store 
this somehow?
-                                               configuration.put(
-                                                               
ActivityGenerator.COMPARISON,
-                                                               
ActivityGenerator.CUSTOM_COMPARISON);
-                                       }
-                                       dialog.setVisible(false);
-                                       configToUi();
-                               }
-
-                       });
-                       applyButton.setText("Apply");
-
-                       buttonPanel.add(applyButton);
-                       JButton closeButton = new JButton(new AbstractAction() {
-
-                               public void actionPerformed(ActionEvent e) {
-                                       dialog.setVisible(false);
-                               }
-                       });
-                       closeButton.setText("Cancel");
-                       buttonPanel.add(closeButton);
-                       dialog.add(buttonPanel, BorderLayout.SOUTH);
-                       dialog.setLocationRelativeTo(customizeButton);
-                       dialog.setVisible(true);
-
-               }
-       }
-
-       public void setConfiguration(ObjectNode configuration) {
-               this.configuration = configuration.deepCopy();
-               configToUi();
-       }
-
-       protected void configToUi() {
-               
-
-               String comparisonId;
-               
-               if (configuration.has(ActivityGenerator.COMPARISON)) {
-            comparisonId = configuration.get(ActivityGenerator.COMPARISON)
-                    .asText();
-               } else {
-            comparisonId = ActivityGenerator.CUSTOM_COMPARISON;
-               }
-
-               if (comparisonId.equals(ActivityGenerator.CUSTOM_COMPARISON)
-                               && configuration.has("conditionalActivity")) {
-                       configPanel.setVisible(false);
-                       customPanel.setVisible(true);
-               } else {
-                       configPanel.setVisible(true);
-                       customPanel.setVisible(false);
-               }
-
-               
portCombo.setSelectedItem(configuration.get(ActivityGenerator.COMPARE_PORT).asText());
-               if (portCombo.getSelectedIndex() == -1
-                               && portCombo.getModel().getSize() > 0) {
-                       portCombo.setSelectedIndex(0);
-               }
-
-               Comparison comparison = ActivityGenerator
-                               .getComparisonById(comparisonId);
-               comparisonCombo.setSelectedItem(comparison);
-               if (comparisonCombo.getSelectedIndex() == -1
-                               && comparisonCombo.getModel().getSize() > 0) {
-                       comparisonCombo.setSelectedIndex(0);
-               }
-
-               
valueField.setText(configuration.get(ActivityGenerator.COMPARE_VALUE).asText());
-
-               if (configuration.has(ActivityGenerator.DELAY)) {
-                   
delayField.setText(configuration.get(ActivityGenerator.DELAY).asText());
-               } else {
-                   delayField.setText(DEFAULT_DELAY_S);
-               }
-
-               
feedBackCheck.setSelected(configuration.get(ActivityGenerator.IS_FEED_BACK).asBoolean());
-               updateFeedbackHelp();
-       }
-
-       private void initialise() {
-               removeAll();
-               setLayout(new GridBagLayout());
-               GridBagConstraints gbc = new GridBagConstraints();
-               gbc.fill = GridBagConstraints.HORIZONTAL;
-               gbc.anchor = GridBagConstraints.FIRST_LINE_START;
-               gbc.gridx = 0;
-               gbc.weightx = 0.1;
-
-               makeHeader();
-               add(headerPanel, gbc);
-
-               makeConfigPanel();
-               gbc.weighty = 0.1;
-               gbc.anchor = GridBagConstraints.CENTER;
-               gbc.fill = GridBagConstraints.BOTH;
-               add(configPanel, gbc);
-
-               makeCustomPanel();
-               add(customPanel, gbc);
-
-               makeOptions();
-               add(optionsPanel, gbc);
-       }
-
-       protected void makeCustomPanel() {
-               customPanel.removeAll();
-               customPanel.setLayout(new GridBagLayout());
-
-               GridBagConstraints gbc = new GridBagConstraints();
-               gbc.anchor = GridBagConstraints.LINE_START;
-               gbc.gridx = 0;
-               gbc.gridy = 0;
-               gbc.gridwidth = 2;
-               gbc.weightx = 0.1;
-               gbc.fill = GridBagConstraints.HORIZONTAL;
-
-               JLabel helpLabel = new JLabel(
-                               "<html><body>"
-                                               + "The service <strong>" + 
processor.getName() +  "</strong> will be "
-                                               + "invoked repeatedly as "
-                                               + "long as the <em>customized 
loop condition service</em> returns a string equal "
-                                               + "to <strong>\"true\"</strong> 
on its output port <code>loop</code>."
-//                                             + "<br><br>"
-//                                             + "Input ports of the condition 
service will be populated with values from "
-//                                             + "the <em>corresponding output 
ports</em> of the main service invocation "
-//                                             + "(as long as they are also "
-//                                             + "<strong>connected</strong> 
in the containing workflow)."
-//                                             + "<br><br> "
-//
-//                                             + "Any <em>matching "
-//                                             + "output ports</em> from the 
condition service will provide the corresponding "
-//                                             + "<em>inputs</em> to the main 
service while looping. You will need to connect "
-//                                             + "the <em>initial inputs</em> 
in the containing workflow."
-                                               + "</body></html>");
-               customPanel.add(helpLabel, gbc);
-
-               gbc.weightx = 0.1;
-               gbc.fill = GridBagConstraints.NONE;
-               gbc.gridx = 0;
-               gbc.gridy++;
-               gbc.gridwidth = 1;
-               gbc.anchor = GridBagConstraints.EAST;
-               JPanel customiseButtonPanel = new JPanel(new FlowLayout());
-               customiseButtonPanel.setBorder(new EmptyBorder(10,0,0,0));
-               customizeButton = new JButton("Customize loop condition");
-               customizeButton.addActionListener(new CustomizeAction());
-               customiseButtonPanel.add(customizeButton);
-               customiseButtonPanel.add(new JButton(new ResetAction()));
-               customPanel.add(customiseButtonPanel, gbc);
-
-       }
-
-       protected void makeConfigPanel() {
-               configPanel.removeAll();
-               configPanel.setLayout(new GridBagLayout());
-
-               GridBagConstraints gbc = new GridBagConstraints();
-               gbc.anchor = GridBagConstraints.LINE_START;
-               gbc.gridx = 0;
-               gbc.gridy = 0;
-               gbc.gridwidth = 4;
-               gbc.weightx = 0.1;
-               gbc.fill = GridBagConstraints.HORIZONTAL;
-               JLabel invokedRepeatedlyLabel = new JLabel(
-
-                               "<html><body>The service <strong>" + 
processor.getName() +  "</strong> " +
-                                               "will be invoked repeatedly 
<em>until</em> its output port</body></html>");
-               invokedRepeatedlyLabel.setBorder(new EmptyBorder(10,0,10,0)); 
// give some top and bottom border to the label
-               configPanel.add(invokedRepeatedlyLabel, gbc);
-               gbc.ipadx = 4;
-               gbc.ipady = 4;
-
-               gbc.weightx = 0.0;
-               gbc.fill = GridBagConstraints.HORIZONTAL;
-               gbc.gridx = 0;
-               gbc.gridy = 1;
-               gbc.gridwidth = 1;
-               List<String> activityOutputPorts = getActivityOutputPorts();
-               portCombo = new JComboBox(activityOutputPorts.toArray());
-               configPanel.add(portCombo, gbc);
-
-               comparisonCombo = new 
JComboBox(ActivityGenerator.comparisons.toArray());
-               comparisonCombo.addActionListener(new ActionListener() {
-                       public void actionPerformed(ActionEvent e) {
-                               Comparison selectedComparison = (Comparison) 
comparisonCombo
-                                               .getSelectedItem();
-                               if (selectedComparison != null) {
-                                       valueTypeLabel.setText("the "
-                                                       + 
selectedComparison.getValueType());
-                               }
-                       }
-               });
-               if (comparisonCombo.getSelectedIndex() == -1) {
-                       comparisonCombo.setSelectedIndex(0);
-               }
-               gbc.gridx = 1;
-               gbc.gridy = 1;
-               configPanel.add(comparisonCombo, gbc);
-
-               gbc.gridx = 2;
-               gbc.gridy = 1;
-               valueTypeLabel.setHorizontalAlignment(SwingConstants.RIGHT);
-               configPanel.add(valueTypeLabel, gbc);
-
-               gbc.gridx = 3;
-               gbc.gridy = 1;
-               gbc.weightx = 0.5; // request all extra space
-               gbc.fill = GridBagConstraints.HORIZONTAL;
-               configPanel.add(valueField, gbc);
-
-               gbc.gridx = 0;
-               gbc.gridy = 2;
-               gbc.weightx = 0.0;
-               configPanel.add(delayLabel, gbc);
-
-               gbc.gridx = 1;
-               gbc.gridx = 1;
-               gbc.gridy = 2;
-               gbc.weightx = 0.0;
-               delayField.setHorizontalAlignment(JTextField.RIGHT);
-               configPanel.add(delayField, gbc);
-
-               gbc.gridx = 2;
-               gbc.gridy = 2;
-               gbc.gridwidth = 2;
-               gbc.weightx = 0.5; // request all extra space
-               gbc.fill = GridBagConstraints.HORIZONTAL;
-               configPanel.add(secondsLabel, gbc);
-
-               if (activityOutputPorts.isEmpty()) {
-                       JLabel warningLabel = new JLabel(
-                                       
"<html><body><strong>Warning:</strong><br>"
-                                                       + "<i>No single value 
output ports detected on the main service, "
-                                                       + "cannot use built-in 
comparisons. You may still add a customized " +
-                                                                       
"looping script</i></body></html>");
-                       gbc.gridx = 0;
-                       gbc.gridy++;
-                       gbc.gridwidth = 4;
-                       gbc.weightx = 0.1;
-                       gbc.fill = GridBagConstraints.BOTH;
-                       gbc.gridy++;
-                       configPanel.add(warningLabel, gbc);
-                       invokedRepeatedlyLabel.setVisible(false);
-                       portCombo.setVisible(false);
-                       comparisonCombo.setVisible(false);
-                       portWarning.setVisible(false);
-                       valueTypeLabel.setVisible(false);
-                       valueField.setVisible(false);
-                       delayField.setVisible(false);
-                       delayLabel.setVisible(false);
-                       secondsLabel.setVisible(false);
-               }
-
-               gbc.gridy++;
-               gbc.gridx = 0;
-               gbc.weightx = 0.1;
-               gbc.gridwidth = 4;
-               gbc.weightx = 0.1;
-               gbc.fill = GridBagConstraints.BOTH;
-               gbc.fill = GridBagConstraints.HORIZONTAL;
-               gbc.insets = new Insets(10, 0, 10, 0);
-               configPanel.add(portWarning, gbc);
-
-               gbc.insets = new Insets(0, 0, 0, 0);
-               gbc.weightx = 0.1;
-               gbc.fill = GridBagConstraints.NONE;
-               gbc.gridx = 0;
-               gbc.gridy++;
-               gbc.gridwidth = 4;
-               gbc.anchor = GridBagConstraints.LAST_LINE_END;
-               JPanel customiseButtonPanel = new JPanel(new FlowLayout());
-               customizeButton = new JButton("Customize loop condition");
-               customizeButton.addActionListener(new CustomizeAction());
-               customiseButtonPanel.add(customizeButton);
-               configPanel.add(customiseButtonPanel, gbc);
-
-               // filler
-               gbc.gridy++;
-               gbc.fill = GridBagConstraints.BOTH;
-               gbc.gridx = 4;
-               gbc.weightx = 0.1;
-               gbc.weighty = 0.1;
-               gbc.gridwidth = 4;
-               configPanel.add(Box.createGlue(), gbc);
-       }
-
-       private List<String> getActivityOutputPorts() {
-           // Should already be sorted
-           return new ArrayList<>(processor.getOutputPorts().getNames());
-    }
-
-    protected JCheckBox feedBackCheck = new JCheckBox(
-                       "Enable output port to input port feedback");
-       private JLabel portWarning = new JLabel(
-                       "<html><body><small>Note that for Taverna to be able to 
execute this loop, "
-                                       + "the output port 
<strong>must</strong> be connected to an input of another service "
-                                       + "or a workflow output 
port.</small></body></html>");
-
-       protected void makeOptions() {
-               optionsPanel.removeAll();
-               optionsPanel.setLayout(new GridBagLayout());
-               GridBagConstraints gbc = new GridBagConstraints();
-               gbc.gridx = 0;
-               gbc.gridy = 0;
-               gbc.weightx = 0.1;
-               gbc.anchor = GridBagConstraints.FIRST_LINE_START;
-               gbc.fill = GridBagConstraints.HORIZONTAL;
-               feedBackCheck.setBorder(new EmptyBorder(0,0,10,0));
-               optionsPanel.add(feedBackCheck, gbc);
-               feedBackCheck.addActionListener(new ActionListener() {
-                       public void actionPerformed(ActionEvent e) {
-                               updateFeedbackHelp();
-                       }
-               });
-               updateFeedbackHelp();
-
-               gbc.gridy = 1;
-               gbc.fill = GridBagConstraints.HORIZONTAL;
-               optionsPanel.add(feedbackHelp, gbc);
-       }
-
-       protected void updateFeedbackHelp() {
-               feedbackHelp.setEnabled(feedBackCheck.isSelected());
-               Color color;
-               if (feedBackCheck.isSelected()) {
-                       color = valueTypeLabel.getForeground();
-               } else {
-                       // Work around
-                       // 
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4303706
-                       // and assume gray is the 'disabled' colour in our Look 
n Feel
-                       color = Color.gray;
-               }
-               feedbackHelp.setForeground(color);
-
-       }
-
-       JLabel feedbackHelp = new JLabel(
-                       "<html><small>"
-                                       + "<p>When feedback is enabled, the 
value of the output port is used as input " +
-                                                       "the next time the loop 
in invoked. The input and output ports used for feedback "
-                                       + "<strong>must</strong> have the same 
<strong>name</strong> and <strong>depth</strong>."
-                                       + "</p><br>"
-
-                                       + "<p>Feedback can be useful for 
looping over a nested workflow, "
-                                       + "where the nested workflow's output 
determines its next input value.</p><br>"
-
-                                       + "<p>In order to use feedback looping, 
you must provide an initial value to the input port by "
-                                       + "connecting it to the output of a 
previous service or workflow input port."
-                                       + "The output port used as feedback 
also has to be connected to a downstream service " +
-                                                       "or a workflow output 
port.</p>"
-
-                                       + "</small></html>");
-
-       protected void makeHeader() {
-               headerPanel.removeAll();
-               headerPanel.setLayout(new BorderLayout());
-               //headerPanel.add(new ShadedLabel("Looping for service"
-               //              + processor.getLocalName(), 
ShadedLabel.ORANGE));
-       }
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/LoopConfigureAction.java
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/LoopConfigureAction.java
 
b/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/LoopConfigureAction.java
deleted file mode 100644
index 0b7ad8f..0000000
--- 
a/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/LoopConfigureAction.java
+++ /dev/null
@@ -1,262 +0,0 @@
-/**
- *
- */
-package net.sf.taverna.t2.workbench.loop;
-
-import java.awt.BorderLayout;
-import java.awt.FlowLayout;
-import java.awt.Frame;
-import java.awt.event.ActionEvent;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Set;
-
-import javax.swing.AbstractAction;
-import javax.swing.JButton;
-import javax.swing.JDialog;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-
-import org.apache.log4j.Logger;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-import uk.org.taverna.configuration.app.ApplicationConfiguration;
-import uk.org.taverna.scufl2.api.core.Processor;
-import uk.org.taverna.scufl2.api.profiles.Profile;
-
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.file.FileManager;
-import net.sf.taverna.t2.workbench.helper.HelpEnabledDialog;
-
-/**
- * @author Alan R Williams
- * @author Stian Soiland-Reyes
- *
- */
-@SuppressWarnings("serial")
-public class LoopConfigureAction extends AbstractAction {
-
-       private static Logger logger = 
Logger.getLogger(LoopConfigureAction.class);
-
-       private final EditManager editManager;
-       private final FileManager fileManager;
-
-       private final Frame owner;
-       private final ObjectNode loopLayer;
-       private final LoopContextualView contextualView;
-       private final Processor processor;
-    private final Profile profile;
-
-    private ApplicationConfiguration applicationConfig;
-
-
-    protected LoopConfigureAction(Frame owner,
-            LoopContextualView contextualView, Processor processor,
-            ObjectNode loopLayer, Profile profile, EditManager editManager,
-            FileManager fileManager, ApplicationConfiguration 
applicationConfig) {
-               super("Configure");
-               this.owner = owner;
-               this.contextualView = contextualView;
-               this.loopLayer = loopLayer;
-        this.profile = profile;
-               this.editManager = editManager;
-               this.fileManager = fileManager;
-               this.processor = processor;
-        this.applicationConfig = applicationConfig;
-       }
-
-       public void actionPerformed(ActionEvent e) {
-               String title = "Looping for service " + processor.getName();
-               final JDialog dialog = new HelpEnabledDialog(owner, title, 
true);
-        LoopConfigurationPanel loopConfigurationPanel = new 
LoopConfigurationPanel(
-                processor, loopLayer, profile, applicationConfig);
-               dialog.add(loopConfigurationPanel, BorderLayout.CENTER);
-
-               JPanel buttonPanel = new JPanel();
-               buttonPanel.setLayout(new FlowLayout());
-
-               JButton okButton = new JButton(new OKAction(dialog, 
loopConfigurationPanel));
-               buttonPanel.add(okButton);
-
-               JButton resetButton = new JButton(new 
ResetAction(loopConfigurationPanel));
-               buttonPanel.add(resetButton);
-
-               JButton cancelButton = new JButton(new CancelAction(dialog));
-               buttonPanel.add(cancelButton);
-
-               dialog.add(buttonPanel, BorderLayout.SOUTH);
-               dialog.pack();
-               dialog.setSize(650, 430);
-               dialog.setLocationRelativeTo(null);
-               dialog.setVisible(true);
-       }
-
-       protected class CancelAction extends AbstractAction {
-               private final JDialog dialog;
-
-               protected CancelAction(JDialog dialog) {
-                       super("Cancel");
-                       this.dialog = dialog;
-               }
-
-               public void actionPerformed(ActionEvent e) {
-                       dialog.setVisible(false);
-                       if (contextualView != null) {
-                               contextualView.refreshView();
-                       }
-               }
-
-       }
-
-       protected class OKAction extends AbstractAction {
-               private final JDialog dialog;
-               private final LoopConfigurationPanel loopConfigurationPanel;
-
-               protected OKAction(JDialog dialog, LoopConfigurationPanel 
loopConfigurationPanel) {
-                       super("OK");
-                       this.dialog = dialog;
-                       this.loopConfigurationPanel = loopConfigurationPanel;
-               }
-
-               public void actionPerformed(ActionEvent e) {
-                       try {
-
-                               List<Edit<?>> compoundEdit = new 
ArrayList<Edit<?>>();
-                               LoopConfiguration configuration = 
loopConfigurationPanel.getConfiguration();
-                               
compoundEdit.add(edits.getConfigureEdit(loopLayer, configuration));
-                               
compoundEdit.addAll(checkPortMappings(configuration.getCondition()));
-
-                               
editManager.doDataflowEdit(fileManager.getCurrentDataflow(), new CompoundEdit(
-                                               compoundEdit));
-                               dialog.setVisible(false);
-                               if (contextualView != null) {
-                                       contextualView.refreshView();
-                               }
-                       } catch (RuntimeException ex) {
-                               logger.warn("Could not configure looping", ex);
-                               JOptionPane.showMessageDialog(owner, "Could not 
configure looping",
-                                               "An error occured when 
configuring looping: " + ex.getMessage(),
-                                               JOptionPane.ERROR_MESSAGE);
-                       } catch (EditException ex) {
-                               logger.warn("Could not configure looping", ex);
-                               JOptionPane.showMessageDialog(owner, "Could not 
configure looping",
-                                               "An error occured when 
configuring looping: " + ex.getMessage(),
-                                               JOptionPane.ERROR_MESSAGE);
-                       }
-               }
-
-               protected List<Edit<?>> checkPortMappings(Activity<?> 
conditionActivity) {
-
-                       List<Edit<?>> compoundEdit = new ArrayList<Edit<?>>();
-                       if (processor.getActivityList().isEmpty()) {
-                               return compoundEdit;
-                       }
-                       Set<String> newInputs = new HashSet<String>();
-                       Set<String> newOutputs = new HashSet<String>();
-
-                       Activity<?> firstProcessorActivity;
-                       firstProcessorActivity = 
processor.getActivityList().get(0);
-                       if (conditionActivity != null) {
-                               for (OutputPort condOutPort : 
conditionActivity.getOutputPorts()) {
-                                       String portName = condOutPort.getName();
-                                       Map<String, String> mapping = 
firstProcessorActivity.getInputPortMapping();
-                                       if (!mapping.containsKey(portName)) {
-                                               if 
(mapping.containsKey(portName)) {
-                                                       logger.warn("Can't 
re-map input for " + "conditional output "
-                                                                       + 
portName);
-                                               }
-                                               for (InputPort inputPort : 
firstProcessorActivity.getInputPorts()) {
-                                                       if 
(inputPort.equals(portName)) {
-                                                               
Edit<Activity<?>> edit = edits.getAddActivityInputPortMappingEdit(
-                                                                               
firstProcessorActivity, portName, portName);
-                                                               
compoundEdit.add(edit);
-                                                               
newInputs.add(portName);
-                                                       }
-                                               }
-                                       }
-                               }
-                               for (InputPort condInPort : 
conditionActivity.getInputPorts()) {
-                                       String portName = condInPort.getName();
-                                       Map<String, String> mapping = 
firstProcessorActivity.getOutputPortMapping();
-                                       if (!mapping.containsValue(portName)) {
-                                               for (OutputPort outputPort : 
firstProcessorActivity.getOutputPorts()) {
-                                                       if 
(outputPort.equals(portName)) {
-                                                               if 
(mapping.containsKey(portName)) {
-                                                                       
logger.warn("Can't re-map output for " + "conditional input "
-                                                                               
        + portName);
-                                                               }
-                                                               
Edit<Activity<?>> edit = edits.getAddActivityOutputPortMappingEdit(
-                                                                               
firstProcessorActivity, portName, portName);
-                                                               
logger.info("Mapping for conditional non-outgoing activity port binding "
-                                                                               
+ portName);
-                                                               
compoundEdit.add(edit);
-                                                               
newOutputs.add(portName);
-                                                       }
-                                               }
-                                       }
-                               }
-                       }
-                       // Remove any stale bindings that no longer match 
neither
-                       // conditional activity or the processor output ports
-                       for (String processorIn : 
firstProcessorActivity.getInputPortMapping().keySet()) {
-                               if (newInputs.contains(processorIn)) {
-                                       continue;
-                               }
-                               boolean foundMatch = false;
-                               for (InputPort processorPort : 
processor.getInputPorts()) {
-                                       if 
(processorPort.getName().equals(processorIn)) {
-                                               foundMatch = true;
-                                               break;
-                                       }
-                               }
-                               if (!foundMatch) {
-                                       Edit<Activity<?>> edit = 
edits.getRemoveActivityInputPortMappingEdit(
-                                                       firstProcessorActivity, 
processorIn);
-                                       logger.info("Removing stale input port 
binding " + processorIn);
-                                       compoundEdit.add(edit);
-                               }
-                       }
-                       for (String processorOut : 
firstProcessorActivity.getOutputPortMapping().keySet()) {
-                               if (newInputs.contains(processorOut)) {
-                                       continue;
-                               }
-                               boolean foundMatch = false;
-                               for (OutputPort processorPort : 
processor.getOutputPorts()) {
-                                       if 
(processorPort.getName().equals(processorOut)) {
-                                               foundMatch = true;
-                                               break;
-                                       }
-                               }
-                               if (!foundMatch) {
-                                       Edit<Activity<?>> edit = 
edits.getRemoveActivityOutputPortMappingEdit(
-                                                       firstProcessorActivity, 
processorOut);
-                                       logger.info("Removing stale output port 
binding " + processorOut);
-                                       compoundEdit.add(edit);
-                               }
-                       }
-
-                       return compoundEdit;
-               }
-       }
-
-       protected class ResetAction extends AbstractAction {
-               private LoopConfigurationPanel loopConfigurationPanel;
-
-               protected ResetAction(LoopConfigurationPanel 
loopConfigurationPanel) {
-                       super("Reset");
-                       this.loopConfigurationPanel = loopConfigurationPanel;
-               }
-
-               public void actionPerformed(ActionEvent e) {
-                       if (contextualView != null) {
-                               contextualView.refreshView();
-                       }
-                       
loopConfigurationPanel.setConfiguration(loopLayer.getConfiguration());
-               }
-
-       }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/LoopConfigureMenuAction.java
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/LoopConfigureMenuAction.java
 
b/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/LoopConfigureMenuAction.java
deleted file mode 100644
index 3d6700d..0000000
--- 
a/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/LoopConfigureMenuAction.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/**********************************************************************
- * Copyright (C) 2007-2009 The University of Manchester
- *
- *  Modifications to the initial code base are copyright of their
- *  respective authors, or their employers as appropriate.
- *
- *  This program is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU Lesser General Public License
- *  as published by the Free Software Foundation; either version 2.1 of
- *  the License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful, but
- *  WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  Lesser General Public License for more details.
- *
- *  You should have received a copy of the GNU Lesser General Public
- *  License along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- **********************************************************************/
-package net.sf.taverna.t2.workbench.loop;
-
-import java.awt.event.ActionEvent;
-import java.net.URI;
-
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-import uk.org.taverna.scufl2.api.core.Processor;
-
-import net.sf.taverna.t2.ui.menu.AbstractContextualMenuAction;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.file.FileManager;
-
-public class LoopConfigureMenuAction extends AbstractContextualMenuAction {
-
-       public static final URI configureRunningSection = URI
-       .create("http://taverna.sf.net/2009/contextMenu/configureRunning";);
-
-       private static final URI LOOP_CONFIGURE_URI = URI
-       .create("http://taverna.sf.net/2008/t2workbench/loopConfigure";);
-
-       private static final String LOOP_CONFIGURE = "Loop configure";
-
-       private EditManager editManager;
-
-       private FileManager fileManager;
-
-       public LoopConfigureMenuAction() {
-               super(configureRunningSection, 20, LOOP_CONFIGURE_URI);
-       }
-
-       @SuppressWarnings("serial")
-       @Override
-       protected Action createAction() {
-               return new AbstractAction("Looping...") {
-                       public void actionPerformed(ActionEvent e) {
-                               Processor p = (Processor) 
getContextualSelection().getSelection();
-                               configureLoopLayer(p, e);
-                       }
-               };
-       }
-
-       public void configureLoopLayer(Processor p, ActionEvent e) {
-           ObjectNode loopLayer = getLoopLayer(p);
-               if (loopLayer != null) {
-                       LoopConfigureAction loopConfigureAction = new 
LoopConfigureAction(null, null, loopLayer, editManager, fileManager);
-                       loopConfigureAction.actionPerformed(e);
-               }
-       }
-
-       public static ObjectNode getLoopLayer(Processor p) {
-               for (DispatchLayer dl : p.getDispatchStack().getLayers()) {
-                       if (dl instanceof Loop) {
-                               result = (Loop) dl;
-                               break;
-                       }
-               }
-               return result;
-       }
-
-       public boolean isEnabled() {
-               Object selection = getContextualSelection().getSelection();
-               return (super.isEnabled() && (selection instanceof Processor) 
&& (getLoopLayer((Processor)selection) != null));
-       }
-
-       public void setEditManager(EditManager editManager) {
-               this.editManager = editManager;
-       }
-
-       public void setFileManager(FileManager fileManager) {
-               this.fileManager = fileManager;
-       }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/LoopContextualView.java
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/LoopContextualView.java
 
b/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/LoopContextualView.java
deleted file mode 100644
index c22f376..0000000
--- 
a/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/LoopContextualView.java
+++ /dev/null
@@ -1,172 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2008 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.loop;
-
-import java.awt.Frame;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.util.Properties;
-
-import javax.swing.Action;
-import javax.swing.JComponent;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.file.FileManager;
-import net.sf.taverna.t2.workbench.loop.comparisons.Comparison;
-import net.sf.taverna.t2.workbench.ui.views.contextualviews.ContextualView;
-
-import org.apache.log4j.Logger;
-
-import uk.org.taverna.scufl2.api.core.Processor;
-
-/**
- * View of a processor, including it's iteration stack, activities, etc.
- *
- * @author Stian Soiland-Reyes
- *
- */
-public class LoopContextualView extends ContextualView {
-
-       private static final long serialVersionUID = 1L;
-
-       private static Logger logger = 
Logger.getLogger(LoopContextualView.class);
-
-       private EditManager editManager;
-       private FileManager fileManager;
-
-       private Loop loopLayer;
-
-       private JPanel panel;
-
-       private Processor processor;
-
-       public LoopContextualView(Processor processor, EditManager editManager, 
FileManager fileManager) {
-               super();
-               this.loopLayer = loopLayer;
-               this.editManager = editManager;
-               this.fileManager = fileManager;
-               this.processor = processor;
-               initialise();
-               initView();
-       }
-
-       @Override
-       public Action getConfigureAction(Frame owner) {
-               return new LoopConfigureAction(owner, this, processor, 
editManager, fileManager);
-       }
-
-       @Override
-       public void refreshView() {
-               initialise();
-       }
-
-       private void initialise() {
-               if (panel == null) {
-                       panel = new JPanel();
-               } else {
-                       panel.removeAll();
-               }
-               panel.setLayout(new GridBagLayout());
-               updateUIByConfig();
-       }
-
-       @Override
-       public JComponent getMainFrame() {
-               return panel;
-       }
-
-       @Override
-       public String getViewTitle() {
-               return "Loop of " + processor.getLocalName();
-       }
-
-       protected void updateUIByConfig() {
-               GridBagConstraints gbc = new GridBagConstraints();
-               gbc.gridx = 0;
-               gbc.gridy = 1;
-               gbc.weightx = 0.1;
-               gbc.fill = GridBagConstraints.HORIZONTAL;
-
-               StringBuilder description = new StringBuilder("<html><body>");
-               Properties properties = 
loopLayer.getConfiguration().getProperties();
-               if (properties.getProperty(ActivityGenerator.COMPARISON,
-                               ActivityGenerator.CUSTOM_COMPARISON).equals(
-                               ActivityGenerator.CUSTOM_COMPARISON)) {
-                       Activity<?> condition = 
loopLayer.getConfiguration().getCondition();
-                       if (condition != null) {
-                               description.append("Looping using custom 
conditional ");
-                               if (condition instanceof BeanshellActivity) {
-                                       String script = 
((BeanshellActivity)condition).getConfiguration().getScript();
-                                       if (script != null) {
-                                               if (script.length() <= 100) {
-                                                       
description.append("<pre>\n");
-                                                       
description.append(script);
-                                                       
description.append("</pre>\n");
-                                               }
-                                       }
-                               }
-                       } else {
-                               description.append("<i>Unconfigured, will not 
loop</i>");
-                       }
-               } else {
-                       description.append("The service will be invoked 
repeatedly ");
-                       description.append("until<br> its output <strong>");
-                       description.append(properties
-                                       
.getProperty(ActivityGenerator.COMPARE_PORT));
-                       description.append("</strong> ");
-
-                       Comparison comparison = ActivityGenerator
-                                       .getComparisonById(properties
-                                                       
.getProperty(ActivityGenerator.COMPARISON));
-                       description.append(comparison.getName());
-
-                       description.append(" the " + comparison.getValueType() 
+ ": <pre>");
-                       description.append(properties
-                                       
.getProperty(ActivityGenerator.COMPARE_VALUE));
-                       description.append("</pre>");
-
-                       String delay = 
properties.getProperty(ActivityGenerator.DELAY, "");
-                       try {
-                               if (Double.parseDouble(delay) > 0) {
-                                       description.append("adding a delay of " 
+ delay
-                                                       + " seconds between 
loops.");
-                               }
-                       } catch (NumberFormatException ex) {
-                       }
-               }
-               description.append("</body></html>");
-
-               panel.add(new JLabel(description.toString()), gbc);
-               gbc.gridy++;
-
-               revalidate();
-       }
-
-
-
-       @Override
-       public int getPreferredPosition() {
-               return 400;
-       }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/LoopContextualViewFactory.java
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/LoopContextualViewFactory.java
 
b/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/LoopContextualViewFactory.java
deleted file mode 100644
index d222849..0000000
--- 
a/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/LoopContextualViewFactory.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2008 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.loop;
-
-import java.util.Arrays;
-import java.util.List;
-
-import uk.org.taverna.scufl2.api.core.Processor;
-
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.file.FileManager;
-import net.sf.taverna.t2.workbench.ui.views.contextualviews.ContextualView;
-import 
net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory;
-
-public class LoopContextualViewFactory implements 
ContextualViewFactory<Processor> {
-
-       private EditManager editManager;
-       private FileManager fileManager;
-
-       public boolean canHandle(Object selection) {
-               return selection instanceof Processor;
-       }
-
-       public List<ContextualView> getViews(Processor selection) {
-               return Arrays.asList(new ContextualView[] {new 
LoopContextualView(selection, editManager, fileManager)});
-       }
-
-       public void setEditManager(EditManager editManager) {
-               this.editManager = editManager;
-       }
-
-       public void setFileManager(FileManager fileManager) {
-               this.fileManager = fileManager;
-       }
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/LoopRemoveMenuAction.java
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/LoopRemoveMenuAction.java
 
b/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/LoopRemoveMenuAction.java
deleted file mode 100644
index 12a9592..0000000
--- 
a/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/LoopRemoveMenuAction.java
+++ /dev/null
@@ -1,92 +0,0 @@
-/**********************************************************************
- * Copyright (C) 2007-2009 The University of Manchester
- *
- *  Modifications to the initial code base are copyright of their
- *  respective authors, or their employers as appropriate.
- *
- *  This program is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU Lesser General Public License
- *  as published by the Free Software Foundation; either version 2.1 of
- *  the License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful, but
- *  WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  Lesser General Public License for more details.
- *
- *  You should have received a copy of the GNU Lesser General Public
- *  License along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- **********************************************************************/
-package net.sf.taverna.t2.workbench.loop;
-
-import java.awt.event.ActionEvent;
-import java.net.URI;
-
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-
-import net.sf.taverna.t2.ui.menu.AbstractContextualMenuAction;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.file.FileManager;
-
-import org.apache.log4j.Logger;
-
-import uk.org.taverna.scufl2.api.core.Processor;
-
-public class LoopRemoveMenuAction extends AbstractContextualMenuAction {
-
-       private static Logger logger = Logger
-       .getLogger(LoopRemoveMenuAction.class);
-
-       public static final URI configureRunningSection = URI
-       .create("http://taverna.sf.net/2009/contextMenu/configureRunning";);
-
-       private static final URI LOOP_REMOVE_URI = URI
-       .create("http://taverna.sf.net/2008/t2workbench/loopRemove";);
-
-       private static final String LOOP_REMOVE = "Loop remove";
-
-       public LoopRemoveMenuAction() {
-               super(configureRunningSection, 25, LOOP_REMOVE_URI);
-       }
-
-       private EditManager editManager;
-       private FileManager fileManager;
-
-
-       @SuppressWarnings("serial")
-       @Override
-       protected Action createAction() {
-               return new AbstractAction("Disable looping") {
-                       public void actionPerformed(ActionEvent e) {
-                               Processor p = (Processor) 
getContextualSelection().getSelection();
-                                       Loop loopLayer = 
LoopConfigureMenuAction.getLoopLayer(p);
-                                       Edit<DispatchStack> deleteEdit = 
editManager.getEdits().getDeleteDispatchLayerEdit(
-                                                       p.getDispatchStack(), 
loopLayer);
-                                       // TODO: Should warn before removing 
"essential" layers
-                                       try {
-                                               
editManager.doDataflowEdit(fileManager.getCurrentDataflow(),
-                                                               deleteEdit);
-                                       } catch (EditException ex) {
-                                               logger.warn("Could not remove 
layer " + loopLayer, ex);
-                                       }
-
-                       }
-               };
-       }
-
-       public boolean isEnabled() {
-               Object selection = getContextualSelection().getSelection();
-               return (super.isEnabled() && (selection instanceof Processor) 
&& (LoopConfigureMenuAction.getLoopLayer((Processor)selection) != null));
-       }
-
-       public void setEditManager(EditManager editManager) {
-               this.editManager = editManager;
-       }
-
-       public void setFileManager(FileManager fileManager) {
-               this.fileManager = fileManager;
-       }
-
-}

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/comparisons/Comparison.java
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/comparisons/Comparison.java
 
b/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/comparisons/Comparison.java
deleted file mode 100644
index 608030c..0000000
--- 
a/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/comparisons/Comparison.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2008 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.loop.comparisons;
-
-import net.sf.taverna.t2.workbench.loop.LoopConfigurationPanel;
-
-/**
- * A comparison beanshell template for {@link LoopConfigurationPanel}.
- * <p>
- * A comparison is a template for generating a beanshell that can be used for
- * comparisons in say the {@link Loop} layer.
- * 
- * @author Stian Soiland-Reyes
- * 
- */
-public abstract class Comparison {
-
-       public String toString() {
-               return getName();
-       }
-
-       public abstract String getId();
-
-       public abstract String getName();
-
-       public abstract String getValueType();
-
-       public abstract String getScriptTemplate();
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/comparisons/EqualTo.java
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/comparisons/EqualTo.java
 
b/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/comparisons/EqualTo.java
deleted file mode 100644
index dbfb8f5..0000000
--- 
a/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/comparisons/EqualTo.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2008 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.loop.comparisons;
-
-public class EqualTo extends Comparison {
-
-       public String getId() {
-               return "EqualTo";
-       }
-
-       public String getName() {
-               return "is equal to";
-       }
-
-       public String getScriptTemplate() {
-               return "${loopPort} = \"\" + ! ${port}.equals(${value}); ";
-       }
-
-       public String getValueType() {
-               return "string";
-       }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/comparisons/IsGreaterThan.java
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/comparisons/IsGreaterThan.java
 
b/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/comparisons/IsGreaterThan.java
deleted file mode 100644
index fc6f56b..0000000
--- 
a/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/comparisons/IsGreaterThan.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2008 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.loop.comparisons;
-
-public class IsGreaterThan extends Comparison {
-
-       public String getId() {
-               return "IsGreaterThan";
-       }
-
-       public String getName() {
-               return "is greater than";
-       }
-
-       public String getScriptTemplate() {
-               return "${loopPort} = \"\" + (! (Double.parseDouble(${port}) > 
Double.parseDouble(${value})));";
-       }
-
-       public String getValueType() {
-               return "number";
-       }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/comparisons/IsLessThan.java
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/comparisons/IsLessThan.java
 
b/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/comparisons/IsLessThan.java
deleted file mode 100644
index d5fe38c..0000000
--- 
a/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/comparisons/IsLessThan.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2008 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.loop.comparisons;
-
-public class IsLessThan extends Comparison {
-
-       public String getId() {
-               return "IsLessThan";
-       }
-
-       public String getName() {
-               return "is less than";
-       }
-
-       public String getScriptTemplate() {
-               return "${loopPort} = \"\" + (! (Double.parseDouble(${port}) < 
Double.parseDouble(${value})));";
-       }
-
-       public String getValueType() {
-               return "number";
-       }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/comparisons/Matches.java
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/comparisons/Matches.java
 
b/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/comparisons/Matches.java
deleted file mode 100644
index fa84aeb..0000000
--- 
a/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/comparisons/Matches.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2008 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.loop.comparisons;
-
-public class Matches extends Comparison {
-
-       public String getId() {
-               return "Matches";
-       }
-
-       public String getName() {
-               return "matches";
-       }
-
-       public String getScriptTemplate() {
-               return "${loopPort} = \"\" + ! ${port}.matches(${value});";
-       }
-
-       public String getValueType() {
-               return "regular expression";
-       }
-}
\ No newline at end of file

http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/comparisons/NotEqualTo.java
----------------------------------------------------------------------
diff --git 
a/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/comparisons/NotEqualTo.java
 
b/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/comparisons/NotEqualTo.java
deleted file mode 100644
index 9c73835..0000000
--- 
a/taverna-workbench-loop-ui/src/main/java/net/sf/taverna/t2/workbench/loop/comparisons/NotEqualTo.java
+++ /dev/null
@@ -1,40 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2008 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.loop.comparisons;
-
-public class NotEqualTo extends Comparison {
-
-       public String getId() {
-               return "NotEqualTo";
-       }
-
-       public String getName() {
-               return "is not equal to";
-       }
-
-       public String getScriptTemplate() {
-               return "${loopPort} = \"\" + ${port}.equals(${value});";
-       }
-
-       public String getValueType() {
-               return "string";
-       }
-}
\ No newline at end of file

Reply via email to