Temporarily empty repository

.. as Software Grant is not formally on file yet
diff --git a/pom.xml b/pom.xml
deleted file mode 100644
index 0c60cf1..0000000
--- a/pom.xml
+++ /dev/null
@@ -1,42 +0,0 @@
-<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/xsd/maven-4.0.0.xsd">
-	<modelVersion>4.0.0</modelVersion>
-	<parent>
-		<groupId>org.apache.taverna</groupId>
-		<artifactId>taverna-parent</artifactId>
-		<version>1-incubating-SNAPSHOT</version>
-	</parent>
-	<groupId>org.apache.taverna.workbench.commonactivities</groupId>
-	<artifactId>taverna-workbench-commonactivities</artifactId>
-	<version>3.1.0-incubating-SNAPSHOT</version>
-	<packaging>pom</packaging>
-	<name>Apache Taverna Workbench Common Activities</name>
-  <description>User interface and Workbench integration for common activities</description>
-  <properties>
-    <taverna.language.version>0.15.0-incubating-SNAPSHOT</taverna.language.version>
-    <taverna.osgi.version>0.2.0-incubating-SNAPSHOT</taverna.osgi.version>
-    <taverna.engine.version>3.1.0-incubating-SNAPSHOT</taverna.engine.version>
-    <taverna.commonactivities.version>2.1.0-incubating-SNAPSHOT</taverna.commonactivities.version>
-    <taverna.workbench.version>3.1.0-incubating-SNAPSHOT</taverna.workbench.version>
-  </properties>
-	<modules>
-    <module>taverna-beanshell-activity-ui</module>
-    <module>taverna-external-tool-activity-ui</module>
-    <module>taverna-localworker-activity-ui</module>
-    <module>taverna-rest-activity-ui</module>
-    <module>taverna-spreadsheet-import-activity-ui</module>
-    <module>taverna-wsdl-activity-ui</module>
-    <module>taverna-xpath-activity-ui</module>
-  </modules>
-  <repositories>
-    <repository>
-      <id>taverna-incubating</id>
-      <name>Apache Taverna incubating Repository</name>
-        <url>http://repository.mygrid.org.uk/artifactory/incubator-snapshot-local/</url>
-      <releases>
-        <enabled>false</enabled>
-      </releases>
-      <snapshots />
-    </repository>
-  </repositories>
-</project>
diff --git a/taverna-beanshell-activity-ui/pom.xml b/taverna-beanshell-activity-ui/pom.xml
deleted file mode 100644
index 0afe9ef..0000000
--- a/taverna-beanshell-activity-ui/pom.xml
+++ /dev/null
@@ -1,100 +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</groupId>
-                <artifactId>taverna-parent</artifactId>
-                <version>3.0.1-SNAPSHOT</version>
-	</parent>
-	<groupId>net.sf.taverna.t2.ui-activities</groupId>
-	<artifactId>beanshell-activity-ui</artifactId>
-        <version>2.0-SNAPSHOT</version>
-	<packaging>bundle</packaging>
-	<name>Taverna 2 Beanshell Activity UI</name>
-	<dependencies>
-		<dependency>
-			<groupId>net.sf.taverna.t2.ui-api</groupId>
-			<artifactId>activity-icons-api</artifactId>
-			<version>${t2.ui.api.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>net.sf.taverna.t2.ui-api</groupId>
-			<artifactId>activity-palette-api</artifactId>
-			<version>${t2.ui.api.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>net.sf.taverna.t2.ui-api</groupId>
-			<artifactId>activity-tools</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>file-api</artifactId>
-			<version>${t2.ui.api.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>net.sf.taverna.t2.ui-api</groupId>
-			<artifactId>menu-api</artifactId>
-			<version>${t2.ui.api.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>net.sf.taverna.t2.ui-components</groupId>
-			<artifactId>workflow-view</artifactId>
-			<version>${t2.ui.components.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>net.sf.taverna.t2.lang</groupId>
-			<artifactId>ui</artifactId>
-			<version>${t2.lang.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>uk.org.taverna.configuration</groupId>
-			<artifactId>taverna-app-configuration-api</artifactId>
-			<version>${taverna.configuration.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>uk.org.taverna.commons</groupId>
-			<artifactId>taverna-services-api</artifactId>
-			<version>0.1.0-SNAPSHOT</version>
-		</dependency>
-		<dependency>
-			<groupId>uk.org.taverna.scufl2</groupId>
-			<artifactId>scufl2-api</artifactId>
-			<version>${scufl2.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>junit</groupId>
-			<artifactId>junit</artifactId>
-                        <version>${junit.version}</version>
-			<scope>test</scope>
-		</dependency>
-	</dependencies>
-	<repositories>
-		<repository>
-			<releases />
-			<snapshots>
-				<enabled>false</enabled>
-			</snapshots>
-			<id>mygrid-repository</id>
-			<name>myGrid Repository</name>
-			<url>http://www.mygrid.org.uk/maven/repository
-			</url>
-		</repository>
-		<repository>
-			<releases>
-				<enabled>false</enabled>
-			</releases>
-			<snapshots />
-			<id>mygrid-snapshot-repository</id>
-			<name>myGrid Snapshot Repository</name>
-			<url>http://www.mygrid.org.uk/maven/snapshot-repository</url>
-		</repository>
-	</repositories>
-</project>
-
diff --git a/taverna-beanshell-activity-ui/src/main/java/net/sf/taverna/t2/activities/beanshell/actions/BeanshellActivityConfigurationAction.java b/taverna-beanshell-activity-ui/src/main/java/net/sf/taverna/t2/activities/beanshell/actions/BeanshellActivityConfigurationAction.java
deleted file mode 100644
index fe6159c..0000000
--- a/taverna-beanshell-activity-ui/src/main/java/net/sf/taverna/t2/activities/beanshell/actions/BeanshellActivityConfigurationAction.java
+++ /dev/null
@@ -1,71 +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.activities.beanshell.actions;
-
-import java.awt.Frame;
-import java.awt.event.ActionEvent;
-
-import net.sf.taverna.t2.activities.beanshell.views.BeanshellConfigurationPanel;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.file.FileManager;
-import net.sf.taverna.t2.workbench.ui.actions.activity.ActivityConfigurationAction;
-import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ActivityConfigurationDialog;
-import uk.org.taverna.configuration.app.ApplicationConfiguration;
-import uk.org.taverna.scufl2.api.activity.Activity;
-
-@SuppressWarnings("serial")
-public class BeanshellActivityConfigurationAction extends ActivityConfigurationAction {
-
-	public static final String EDIT_BEANSHELL_SCRIPT = "Edit beanshell script";
-	private final EditManager editManager;
-	private final FileManager fileManager;
-	private final ApplicationConfiguration applicationConfiguration;
-
-	public BeanshellActivityConfigurationAction(Activity activity, Frame owner,
-			EditManager editManager, FileManager fileManager,
-			ActivityIconManager activityIconManager,
-			ServiceDescriptionRegistry serviceDescriptionRegistry,
-			ApplicationConfiguration applicationConfiguration) {
-		super(activity, activityIconManager, serviceDescriptionRegistry);
-		this.editManager = editManager;
-		this.fileManager = fileManager;
-		this.applicationConfiguration = applicationConfiguration;
-		putValue(NAME, EDIT_BEANSHELL_SCRIPT);
-	}
-
-	public void actionPerformed(ActionEvent e) {
-		ActivityConfigurationDialog currentDialog = ActivityConfigurationAction.getDialog(getActivity());
-		if (currentDialog != null) {
-			currentDialog.toFront();
-			return;
-		}
-		final BeanshellConfigurationPanel beanshellConfigView = new BeanshellConfigurationPanel(
-				getActivity(), applicationConfiguration);
-		final ActivityConfigurationDialog dialog = new ActivityConfigurationDialog(getActivity(),
-				beanshellConfigView, editManager);
-
-		ActivityConfigurationAction.setDialog(getActivity(), dialog, fileManager);
-
-	}
-
-}
diff --git a/taverna-beanshell-activity-ui/src/main/java/net/sf/taverna/t2/activities/beanshell/menu/AddBeanshellTemplateAction.java b/taverna-beanshell-activity-ui/src/main/java/net/sf/taverna/t2/activities/beanshell/menu/AddBeanshellTemplateAction.java
deleted file mode 100644
index 97eab18..0000000
--- a/taverna-beanshell-activity-ui/src/main/java/net/sf/taverna/t2/activities/beanshell/menu/AddBeanshellTemplateAction.java
+++ /dev/null
@@ -1,113 +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.activities.beanshell.menu;
-
-import java.awt.event.ActionEvent;
-import java.net.URI;
-
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-
-import net.sf.taverna.t2.activities.beanshell.servicedescriptions.BeanshellTemplateService;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;
-import net.sf.taverna.t2.ui.menu.AbstractContextualMenuAction;
-import net.sf.taverna.t2.ui.menu.MenuManager;
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.selection.SelectionManager;
-import net.sf.taverna.t2.workbench.ui.workflowview.WorkflowView;
-import uk.org.taverna.commons.services.ServiceRegistry;
-import uk.org.taverna.scufl2.api.core.Workflow;
-
-/**
- * An action to add a beanshell activity + a wrapping processor to the workflow.
- *
- * @author Alex Nenadic
- * @author David Withers
- */
-@SuppressWarnings("serial")
-public class AddBeanshellTemplateAction extends AbstractContextualMenuAction {
-
-	private static final String ADD_BEANSHELL = "Beanshell";
-
-	private static final URI insertSection = URI
-			.create("http://taverna.sf.net/2009/contextMenu/insert");
-
-	private EditManager editManager;
-	private MenuManager menuManager;
-	private SelectionManager selectionManager;
-	private ActivityIconManager activityIconManager;
-	private ServiceDescriptionRegistry serviceDescriptionRegistry;
-	private ServiceRegistry serviceRegistry;
-
-	public AddBeanshellTemplateAction() {
-		super(insertSection, 300);
-	}
-
-	@Override
-	public boolean isEnabled() {
-		return super.isEnabled() && getContextualSelection().getSelection() instanceof Workflow;
-	}
-
-	@Override
-	protected Action createAction() {
-
-		return new AddBeanshellAction();
-	}
-
-	protected class AddBeanshellAction extends AbstractAction {
-		AddBeanshellAction() {
-			super(ADD_BEANSHELL, activityIconManager
-					.iconForActivity(BeanshellTemplateService.ACTIVITY_TYPE));
-		}
-
-		public void actionPerformed(ActionEvent e) {
-			WorkflowView.importServiceDescription(serviceDescriptionRegistry
-					.getServiceDescription(BeanshellTemplateService.ACTIVITY_TYPE), false,
-					editManager, menuManager, selectionManager, serviceRegistry);
-		}
-	}
-
-	public void setEditManager(EditManager editManager) {
-		this.editManager = editManager;
-	}
-
-	public void setMenuManager(MenuManager menuManager) {
-		this.menuManager = menuManager;
-	}
-
-	public void setSelectionManager(SelectionManager selectionManager) {
-		this.selectionManager = selectionManager;
-	}
-
-	public void setActivityIconManager(ActivityIconManager activityIconManager) {
-		this.activityIconManager = activityIconManager;
-	}
-
-	public void setServiceDescriptionRegistry(ServiceDescriptionRegistry serviceDescriptionRegistry) {
-		this.serviceDescriptionRegistry = serviceDescriptionRegistry;
-	}
-
-	public void setServiceRegistry(ServiceRegistry serviceRegistry) {
-		this.serviceRegistry = serviceRegistry;
-	}
-
-}
diff --git a/taverna-beanshell-activity-ui/src/main/java/net/sf/taverna/t2/activities/beanshell/menu/AddBeanshellTemplateMenuAction.java b/taverna-beanshell-activity-ui/src/main/java/net/sf/taverna/t2/activities/beanshell/menu/AddBeanshellTemplateMenuAction.java
deleted file mode 100644
index 7933000..0000000
--- a/taverna-beanshell-activity-ui/src/main/java/net/sf/taverna/t2/activities/beanshell/menu/AddBeanshellTemplateMenuAction.java
+++ /dev/null
@@ -1,121 +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.activities.beanshell.menu;
-
-import java.awt.event.ActionEvent;
-import java.awt.event.InputEvent;
-import java.awt.event.KeyEvent;
-import java.net.URI;
-
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-import javax.swing.KeyStroke;
-
-import net.sf.taverna.t2.activities.beanshell.servicedescriptions.BeanshellTemplateService;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;
-import net.sf.taverna.t2.ui.menu.AbstractMenuAction;
-import net.sf.taverna.t2.ui.menu.DesignOnlyAction;
-import net.sf.taverna.t2.ui.menu.MenuManager;
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.selection.SelectionManager;
-import net.sf.taverna.t2.workbench.ui.workflowview.WorkflowView;
-import uk.org.taverna.commons.services.ServiceRegistry;
-
-/**
- * An action to add a beanshell activity + a wrapping processor to the workflow.
- *
- * @author Alex Nenadic
- * @author alanrw
- * @author David Withers
- */
-@SuppressWarnings("serial")
-public class AddBeanshellTemplateMenuAction extends AbstractMenuAction {
-
-	private static final String ADD_BEANSHELL = "Beanshell";
-
-	private static final URI INSERT = URI
-			.create("http://taverna.sf.net/2008/t2workbench/menu#insert");
-
-	private static final URI ADD_BEANSHELL_URI = URI
-			.create("http://taverna.sf.net/2008/t2workbench/menu#graphMenuAddBeanshell");
-
-	private EditManager editManager;
-	private MenuManager menuManager;
-	private SelectionManager selectionManager;
-	private ActivityIconManager activityIconManager;
-	private ServiceDescriptionRegistry serviceDescriptionRegistry;
-	private ServiceRegistry serviceRegistry;
-
-	public AddBeanshellTemplateMenuAction() {
-		super(INSERT, 300, ADD_BEANSHELL_URI);
-	}
-
-	@Override
-	protected Action createAction() {
-		return new AddBeanshellMenuAction();
-	}
-
-	protected class AddBeanshellMenuAction extends AbstractAction implements DesignOnlyAction {
-		AddBeanshellMenuAction() {
-			super();
-			putValue(SMALL_ICON,
-					activityIconManager.iconForActivity(BeanshellTemplateService.ACTIVITY_TYPE));
-			putValue(NAME, ADD_BEANSHELL);
-			putValue(SHORT_DESCRIPTION, "Beanshell service");
-			putValue(
-					Action.ACCELERATOR_KEY,
-					KeyStroke.getKeyStroke(KeyEvent.VK_B, InputEvent.SHIFT_DOWN_MASK
-							| InputEvent.ALT_DOWN_MASK));
-		}
-
-		public void actionPerformed(ActionEvent e) {
-			WorkflowView.importServiceDescription(serviceDescriptionRegistry
-					.getServiceDescription(BeanshellTemplateService.ACTIVITY_TYPE), false,
-					editManager, menuManager, selectionManager, serviceRegistry);
-		}
-	}
-
-	public void setEditManager(EditManager editManager) {
-		this.editManager = editManager;
-	}
-
-	public void setMenuManager(MenuManager menuManager) {
-		this.menuManager = menuManager;
-	}
-
-	public void setSelectionManager(SelectionManager selectionManager) {
-		this.selectionManager = selectionManager;
-	}
-
-	public void setActivityIconManager(ActivityIconManager activityIconManager) {
-		this.activityIconManager = activityIconManager;
-	}
-
-	public void setServiceDescriptionRegistry(ServiceDescriptionRegistry serviceDescriptionRegistry) {
-		this.serviceDescriptionRegistry = serviceDescriptionRegistry;
-	}
-
-	public void setServiceRegistry(ServiceRegistry serviceRegistry) {
-		this.serviceRegistry = serviceRegistry;
-	}
-
-}
diff --git a/taverna-beanshell-activity-ui/src/main/java/net/sf/taverna/t2/activities/beanshell/menu/ConfigureBeanshellMenuAction.java b/taverna-beanshell-activity-ui/src/main/java/net/sf/taverna/t2/activities/beanshell/menu/ConfigureBeanshellMenuAction.java
deleted file mode 100644
index 64ef0c8..0000000
--- a/taverna-beanshell-activity-ui/src/main/java/net/sf/taverna/t2/activities/beanshell/menu/ConfigureBeanshellMenuAction.java
+++ /dev/null
@@ -1,67 +0,0 @@
-package net.sf.taverna.t2.activities.beanshell.menu;
-
-import java.net.URI;
-
-import net.sf.taverna.t2.activities.beanshell.actions.BeanshellActivityConfigurationAction;
-import net.sf.taverna.t2.activities.beanshell.servicedescriptions.BeanshellTemplateService;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;
-import net.sf.taverna.t2.workbench.activitytools.AbstractConfigureActivityMenuAction;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.file.FileManager;
-
-import javax.swing.Action;
-
-import uk.org.taverna.configuration.app.ApplicationConfiguration;
-import uk.org.taverna.scufl2.api.activity.Activity;
-
-public class ConfigureBeanshellMenuAction extends AbstractConfigureActivityMenuAction {
-
-	public static final URI LOCALWORKER_ACTIVITY = URI
-			.create("http://ns.taverna.org.uk/2010/activity/localworker");
-
-	private EditManager editManager;
-	private FileManager fileManager;
-	private ActivityIconManager activityIconManager;
-	private ServiceDescriptionRegistry serviceDescriptionRegistry;
-	private ApplicationConfiguration applicationConfiguration;
-
-	public ConfigureBeanshellMenuAction() {
-		super(BeanshellTemplateService.ACTIVITY_TYPE);
-	}
-
-	@Override
-	protected Action createAction() {
-		Activity a = findActivity();
-		Action result = null;
-		if (!(a.getType().equals(LOCALWORKER_ACTIVITY))) {
-			result = new BeanshellActivityConfigurationAction(findActivity(), getParentFrame(),
-					editManager, fileManager, activityIconManager, serviceDescriptionRegistry,
-					applicationConfiguration);
-			result.putValue(Action.NAME, BeanshellActivityConfigurationAction.EDIT_BEANSHELL_SCRIPT);
-			addMenuDots(result);
-		}
-		return result;
-	}
-
-	public void setEditManager(EditManager editManager) {
-		this.editManager = editManager;
-	}
-
-	public void setFileManager(FileManager fileManager) {
-		this.fileManager = fileManager;
-	}
-
-	public void setActivityIconManager(ActivityIconManager activityIconManager) {
-		this.activityIconManager = activityIconManager;
-	}
-
-	public void setServiceDescriptionRegistry(ServiceDescriptionRegistry serviceDescriptionRegistry) {
-		this.serviceDescriptionRegistry = serviceDescriptionRegistry;
-	}
-
-	public void setApplicationConfiguration(ApplicationConfiguration applicationConfiguration) {
-		this.applicationConfiguration = applicationConfiguration;
-	}
-
-}
diff --git a/taverna-beanshell-activity-ui/src/main/java/net/sf/taverna/t2/activities/beanshell/servicedescriptions/BeanshellActivityIcon.java b/taverna-beanshell-activity-ui/src/main/java/net/sf/taverna/t2/activities/beanshell/servicedescriptions/BeanshellActivityIcon.java
deleted file mode 100644
index 055aa81..0000000
--- a/taverna-beanshell-activity-ui/src/main/java/net/sf/taverna/t2/activities/beanshell/servicedescriptions/BeanshellActivityIcon.java
+++ /dev/null
@@ -1,58 +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.activities.beanshell.servicedescriptions;
-
-import java.net.URI;
-
-import javax.swing.Icon;
-import javax.swing.ImageIcon;
-
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI;
-
-/**
- *
- * @author Alex Nenadic
- * @author David Withers
- */
-public class BeanshellActivityIcon implements ActivityIconSPI {
-
-	private static Icon icon = null;
-
-	@Override
-	public int canProvideIconScore(URI activityType) {
-		if (BeanshellTemplateService.ACTIVITY_TYPE.equals(activityType))
-			return DEFAULT_ICON + 1;
-		else
-			return NO_ICON;
-	}
-
-	@Override
-	public Icon getIcon(URI activityType) {
-		return getBeanshellIcon();
-	}
-
-	public static Icon getBeanshellIcon() {
-		if (icon == null) {
-			icon = new ImageIcon(BeanshellActivityIcon.class.getResource("/beanshell.png"));
-		}
-		return icon;
-	}
-}
diff --git a/taverna-beanshell-activity-ui/src/main/java/net/sf/taverna/t2/activities/beanshell/servicedescriptions/BeanshellTemplateService.java b/taverna-beanshell-activity-ui/src/main/java/net/sf/taverna/t2/activities/beanshell/servicedescriptions/BeanshellTemplateService.java
deleted file mode 100644
index c2cb38f..0000000
--- a/taverna-beanshell-activity-ui/src/main/java/net/sf/taverna/t2/activities/beanshell/servicedescriptions/BeanshellTemplateService.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package net.sf.taverna.t2.activities.beanshell.servicedescriptions;
-
-import java.net.URI;
-
-import javax.swing.Icon;
-
-import net.sf.taverna.t2.servicedescriptions.AbstractTemplateService;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescription;
-import uk.org.taverna.scufl2.api.configurations.Configuration;
-
-public class BeanshellTemplateService extends AbstractTemplateService {
-
-	public static final URI ACTIVITY_TYPE = URI.create("http://ns.taverna.org.uk/2010/activity/beanshell");
-
-	private static final String BEANSHELL = "Beanshell";
-
-	private static final URI providerId = URI
-	.create("http://taverna.sf.net/2010/service-provider/beanshell");
-
-	public String getName() {
-		return BEANSHELL;
-	}
-
-	@Override
-	public URI getActivityType() {
-		return ACTIVITY_TYPE;
-	}
-
-	@Override
-	public Configuration getActivityConfiguration() {
-		Configuration configuration = new Configuration();
-		configuration.setType(ACTIVITY_TYPE.resolve("#Config"));
-		configuration.getJsonAsObjectNode().put("script", "");
-		configuration.getJsonAsObjectNode().put("classLoaderSharing", "workflow");
-		return configuration;
-	}
-
-	@Override
-	public Icon getIcon() {
-		return BeanshellActivityIcon.getBeanshellIcon();
-	}
-
-	@Override
-	public String getDescription() {
-		return "A service that allows Beanshell scripts, with dependencies on libraries";
-	}
-
-	public static ServiceDescription getServiceDescription() {
-		BeanshellTemplateService bts = new BeanshellTemplateService();
-		return bts.templateService;
-	}
-
-	public String getId() {
-		return providerId.toString();
-	}
-
-}
diff --git a/taverna-beanshell-activity-ui/src/main/java/net/sf/taverna/t2/activities/beanshell/views/BeanshellActivityViewFactory.java b/taverna-beanshell-activity-ui/src/main/java/net/sf/taverna/t2/activities/beanshell/views/BeanshellActivityViewFactory.java
deleted file mode 100644
index 5c83730..0000000
--- a/taverna-beanshell-activity-ui/src/main/java/net/sf/taverna/t2/activities/beanshell/views/BeanshellActivityViewFactory.java
+++ /dev/null
@@ -1,84 +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.activities.beanshell.views;
-
-import java.net.URI;
-import java.util.Arrays;
-import java.util.List;
-
-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;
-import net.sf.taverna.t2.workbench.configuration.colour.ColourManager;
-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;
-import uk.org.taverna.configuration.app.ApplicationConfiguration;
-import uk.org.taverna.scufl2.api.activity.Activity;
-
-public class BeanshellActivityViewFactory implements ContextualViewFactory<Activity> {
-
-	private static final URI ACTIVITY_TYPE = URI
-			.create("http://ns.taverna.org.uk/2010/activity/beanshell");
-
-	private EditManager editManager;
-	private FileManager fileManager;
-	private ActivityIconManager activityIconManager;
-	private ColourManager colourManager;
-	private ServiceDescriptionRegistry serviceDescriptionRegistry;
-
-	private ApplicationConfiguration applicationConfiguration;
-
-	public boolean canHandle(Object object) {
-		return object instanceof Activity && ((Activity) object).getType().equals(ACTIVITY_TYPE);
-	}
-
-	public List<ContextualView> getViews(Activity activity) {
-		return Arrays.asList(new ContextualView[] { new BeanshellContextualView(activity,
-				editManager, fileManager, activityIconManager, colourManager,
-				serviceDescriptionRegistry, applicationConfiguration) });
-	}
-
-	public void setEditManager(EditManager editManager) {
-		this.editManager = editManager;
-	}
-
-	public void setFileManager(FileManager fileManager) {
-		this.fileManager = fileManager;
-	}
-
-	public void setActivityIconManager(ActivityIconManager activityIconManager) {
-		this.activityIconManager = activityIconManager;
-	}
-
-	public void setColourManager(ColourManager colourManager) {
-		this.colourManager = colourManager;
-	}
-
-	public void setServiceDescriptionRegistry(ServiceDescriptionRegistry serviceDescriptionRegistry) {
-		this.serviceDescriptionRegistry = serviceDescriptionRegistry;
-	}
-
-	public void setApplicationConfiguration(ApplicationConfiguration applicationConfiguration) {
-		this.applicationConfiguration = applicationConfiguration;
-	}
-
-}
diff --git a/taverna-beanshell-activity-ui/src/main/java/net/sf/taverna/t2/activities/beanshell/views/BeanshellConfigurationPanel.java b/taverna-beanshell-activity-ui/src/main/java/net/sf/taverna/t2/activities/beanshell/views/BeanshellConfigurationPanel.java
deleted file mode 100644
index 8489d7a..0000000
--- a/taverna-beanshell-activity-ui/src/main/java/net/sf/taverna/t2/activities/beanshell/views/BeanshellConfigurationPanel.java
+++ /dev/null
@@ -1,231 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2012 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.activities.beanshell.views;
-
-import java.awt.Component;
-import java.awt.Dimension;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.io.File;
-import java.util.ArrayList;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JSpinner;
-import javax.swing.SpinnerNumberModel;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-import javax.swing.event.DocumentEvent;
-import javax.swing.event.DocumentListener;
-
-import net.sf.taverna.t2.lang.ui.EditorKeySetUtil;
-import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ActivityPortConfiguration;
-import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.DependencyConfigurationPanel;
-import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ListConfigurationComponent;
-import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.MultiPageActivityConfigurationPanel;
-import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ScriptConfigurationComponent;
-import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ValidatingTextField;
-import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ValidatingTextGroup;
-import uk.org.taverna.configuration.app.ApplicationConfiguration;
-import uk.org.taverna.scufl2.api.activity.Activity;
-import uk.org.taverna.scufl2.api.port.InputActivityPort;
-import uk.org.taverna.scufl2.api.port.OutputActivityPort;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-
-/**
- * Component for configuring a Beanshell activity.
- *
- * @author David Withers
- */
-@SuppressWarnings("serial")
-public class BeanshellConfigurationPanel extends MultiPageActivityConfigurationPanel {
-
-	private ScriptConfigurationComponent scriptConfigurationComponent;
-	private ValidatingTextGroup inputTextGroup, outputTextGroup;
-	private DependencyConfigurationPanel dependencyConfigurationPanel;
-	private File libDir;
-
-	public BeanshellConfigurationPanel(Activity activity,
-			ApplicationConfiguration applicationConfiguration) {
-		super(activity);
-		libDir = new File(applicationConfiguration.getApplicationHomeDir(), "lib");
-		if (!libDir.exists()) {
-			libDir.mkdir();
-		}
-		initialise();
-	}
-
-	@Override
-	protected void initialise() {
-		super.initialise();
-		removeAllPages();
-		addPage("Script", createScriptEditPanel());
-		addPage("Input ports", createInputPanel());
-		addPage("Output ports", createOutputPanel());
-		addPage("Dependencies", createDependenciesPanel());
-		setPreferredSize(new Dimension(600, 500));
-	}
-
-	@Override
-	public void noteConfiguration() {
-		setProperty("script", scriptConfigurationComponent.getScript());
-		setProperty("classLoaderSharing", dependencyConfigurationPanel.getClassLoaderSharing());
-		List<String> localDependencies = dependencyConfigurationPanel.getLocalDependencies();
-		if (localDependencies == null || localDependencies.isEmpty()) {
-			getJson().remove("localDependency");
-		} else {
-			ArrayNode localDependenciesArray = getJson().arrayNode();
-			for (String localDependency : localDependencies) {
-				localDependenciesArray.add(localDependency);
-			}
-			getJson().put("localDependency", localDependenciesArray);
-		}
-	}
-
-	@Override
-	public boolean checkValues() {
-		return true;
-	}
-
-	private Component createScriptEditPanel() {
-		Set<String> keywords = EditorKeySetUtil.loadKeySet(getClass().getResourceAsStream(
-				"keys.txt"));
-		Set<String> ports = new HashSet<>();
-		for (InputActivityPort ip : getActivity().getInputPorts()) {
-			ports.add(ip.getName());
-		}
-		for (OutputActivityPort op : getActivity().getOutputPorts()) {
-			ports.add(op.getName());
-		}
-		scriptConfigurationComponent = new ScriptConfigurationComponent(getProperty("script"),
-				keywords, ports, "Beanshell", ".bsh");
-		return scriptConfigurationComponent;
-	}
-
-	private Component createInputPanel() {
-		inputTextGroup = new ValidatingTextGroup();
-		ListConfigurationComponent<ActivityPortConfiguration> inputPanel = new ListConfigurationComponent<ActivityPortConfiguration>(
-				"Input Port", getInputPorts()) {
-			@Override
-			protected Component createItemComponent(ActivityPortConfiguration port) {
-				return new PortComponent(port, inputTextGroup);
-			}
-
-			@Override
-			protected ActivityPortConfiguration createDefaultItem() {
-				return new ActivityPortConfiguration("in", 0);
-			}
-		};
-		return inputPanel;
-	}
-
-	private Component createOutputPanel() {
-		outputTextGroup = new ValidatingTextGroup();
-		ListConfigurationComponent<ActivityPortConfiguration> inputPanel = new ListConfigurationComponent<ActivityPortConfiguration>(
-				"Output Port", getOutputPorts()) {
-			@Override
-			protected Component createItemComponent(ActivityPortConfiguration port) {
-				return new PortComponent(port, outputTextGroup);
-			}
-
-			@Override
-			protected ActivityPortConfiguration createDefaultItem() {
-				return new ActivityPortConfiguration("out", 0);
-			}
-		};
-		return inputPanel;
-	}
-
-	private Component createDependenciesPanel() {
-		String classLoaderSharing = getProperty("classLoaderSharing");
-		List<String> localDependencies = new ArrayList<>();
-		if (getJson().has("localDependency")) {
-			for (JsonNode localDependency : getJson().get("localDependency")) {
-				localDependencies.add(localDependency.textValue());
-			}
-		}
-		dependencyConfigurationPanel = new DependencyConfigurationPanel(classLoaderSharing,
-				localDependencies, libDir);
-		return dependencyConfigurationPanel;
-	}
-
-	class PortComponent extends JPanel {
-
-		private ValidatingTextField nameField;
-		private SpinnerNumberModel depthModel;
-		private final ValidatingTextGroup validatingTextGroup;
-
-		public PortComponent(final ActivityPortConfiguration portConfiguration,
-				ValidatingTextGroup validatingTextGroup) {
-			this.validatingTextGroup = validatingTextGroup;
-
-			nameField = new ValidatingTextField(portConfiguration.getName());
-			nameField.getDocument().addDocumentListener(new DocumentListener() {
-				@Override
-				public void removeUpdate(DocumentEvent e) {
-					portConfiguration.setName(nameField.getText());
-				}
-
-				@Override
-				public void insertUpdate(DocumentEvent e) {
-					portConfiguration.setName(nameField.getText());
-				}
-
-				@Override
-				public void changedUpdate(DocumentEvent e) {
-					portConfiguration.setName(nameField.getText());
-				}
-			});
-			validatingTextGroup.addValidTextComponent(nameField);
-			depthModel = new SpinnerNumberModel(portConfiguration.getDepth(), 0, 100, 1);
-			depthModel.addChangeListener(new ChangeListener() {
-				@Override
-				public void stateChanged(ChangeEvent e) {
-					portConfiguration.setDepth(depthModel.getNumber().intValue());
-				}
-			});
-
-			setLayout(new GridBagLayout());
-			GridBagConstraints c = new GridBagConstraints();
-			c.anchor = GridBagConstraints.WEST;
-			add(new JLabel("Name"), c);
-			c.fill = GridBagConstraints.HORIZONTAL;
-			c.weightx = 1;
-			add(nameField, c);
-			c.fill = GridBagConstraints.NONE;
-			c.weightx = 0;
-			add(new JLabel("Depth"), c);
-			add(new JSpinner(depthModel), c);
-
-		}
-
-		public void removeNotify() {
-			validatingTextGroup.removeTextComponent(nameField);
-		}
-
-	}
-
-}
diff --git a/taverna-beanshell-activity-ui/src/main/java/net/sf/taverna/t2/activities/beanshell/views/BeanshellContextualView.java b/taverna-beanshell-activity-ui/src/main/java/net/sf/taverna/t2/activities/beanshell/views/BeanshellContextualView.java
deleted file mode 100644
index e738e38..0000000
--- a/taverna-beanshell-activity-ui/src/main/java/net/sf/taverna/t2/activities/beanshell/views/BeanshellContextualView.java
+++ /dev/null
@@ -1,104 +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.activities.beanshell.views;
-
-import java.awt.Frame;
-
-import javax.swing.Action;
-
-import net.sf.taverna.t2.activities.beanshell.actions.BeanshellActivityConfigurationAction;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;
-import net.sf.taverna.t2.workbench.configuration.colour.ColourManager;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.file.FileManager;
-import net.sf.taverna.t2.workbench.ui.actions.activity.HTMLBasedActivityContextualView;
-import uk.org.taverna.configuration.app.ApplicationConfiguration;
-import uk.org.taverna.scufl2.api.activity.Activity;
-import uk.org.taverna.scufl2.api.port.InputActivityPort;
-import uk.org.taverna.scufl2.api.port.OutputActivityPort;
-
-/**
- * A simple non editable HTML table view over a {@link BeanshellActivity}.
- * Clicking on the configure button shows the editable {@link BeanshellConfigView}
- *
- * @author Ian Dunlop
- * @author Stuart Owen
- * @author David Withers
- */
-@SuppressWarnings("serial")
-public class BeanshellContextualView extends HTMLBasedActivityContextualView {
-
-	private EditManager editManager;
-	private FileManager fileManager;
-	private final ActivityIconManager activityIconManager;
-	private final ServiceDescriptionRegistry serviceDescriptionRegistry;
-	private final ApplicationConfiguration applicationConfiguration;
-
-	public BeanshellContextualView(Activity activity, EditManager editManager,
-			FileManager fileManager, ActivityIconManager activityIconManager,
-			ColourManager colourManager, ServiceDescriptionRegistry serviceDescriptionRegistry,
-			ApplicationConfiguration applicationConfiguration) {
-		super(activity, colourManager);
-		this.editManager = editManager;
-		this.fileManager = fileManager;
-		this.activityIconManager = activityIconManager;
-		this.serviceDescriptionRegistry = serviceDescriptionRegistry;
-		this.applicationConfiguration = applicationConfiguration;
-		init();
-	}
-
-	private void init() {
-	}
-
-	@Override
-	protected String getRawTableRowsHtml() {
-		StringBuilder html = new StringBuilder();
-		html.append("<tr><th>Input Port Name</th><th>Depth</th></tr>");
-		for (InputActivityPort inputActivityPort : getActivity().getInputPorts()) {
-			html.append("<tr><td>" + inputActivityPort.getName() + "</td><td>");
-			html.append(inputActivityPort.getDepth() + "</td></tr>");
-		}
-		html.append("<tr><th>Output Port Name</th><th>Depth</th></tr>");
-		for (OutputActivityPort outputActivityPort : getActivity().getOutputPorts()) {
-			html.append("<tr><td>" + outputActivityPort.getName() + "</td><td>");
-			html.append(outputActivityPort.getDepth() + "</td></tr>");
-		}
-		return html.toString();
-	}
-
-	@Override
-	public String getViewTitle() {
-		return "Beanshell service";
-	}
-
-	@Override
-	public Action getConfigureAction(Frame owner) {
-		return new BeanshellActivityConfigurationAction(getActivity(), owner, editManager,
-				fileManager, activityIconManager, serviceDescriptionRegistry, applicationConfiguration);
-	}
-
-	@Override
-	public int getPreferredPosition() {
-		return 100;
-	}
-
-}
diff --git a/taverna-beanshell-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider b/taverna-beanshell-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider
deleted file mode 100644
index a77db8d..0000000
--- a/taverna-beanshell-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider
+++ /dev/null
@@ -1 +0,0 @@
-net.sf.taverna.t2.activities.beanshell.servicedescriptions.BeanshellTemplateService
diff --git a/taverna-beanshell-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent b/taverna-beanshell-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent
deleted file mode 100644
index a3c71cd..0000000
--- a/taverna-beanshell-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent
+++ /dev/null
@@ -1,3 +0,0 @@
-net.sf.taverna.t2.activities.beanshell.menu.AddBeanshellTemplateAction
-net.sf.taverna.t2.activities.beanshell.menu.AddBeanshellTemplateMenuAction
-net.sf.taverna.t2.activities.beanshell.menu.ConfigureBeanshellMenuAction
diff --git a/taverna-beanshell-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI b/taverna-beanshell-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI
deleted file mode 100644
index a268bf1..0000000
--- a/taverna-beanshell-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI
+++ /dev/null
@@ -1 +0,0 @@
-net.sf.taverna.t2.activities.beanshell.servicedescriptions.BeanshellActivityIcon
\ No newline at end of file
diff --git a/taverna-beanshell-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory b/taverna-beanshell-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory
deleted file mode 100644
index dcdf598..0000000
--- a/taverna-beanshell-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory
+++ /dev/null
@@ -1 +0,0 @@
-net.sf.taverna.t2.activities.beanshell.views.BeanshellActivityViewFactory
\ No newline at end of file
diff --git a/taverna-beanshell-activity-ui/src/main/resources/META-INF/spring/beanshell-activity-ui-context-osgi.xml b/taverna-beanshell-activity-ui/src/main/resources/META-INF/spring/beanshell-activity-ui-context-osgi.xml
deleted file mode 100644
index 58a3e18..0000000
--- a/taverna-beanshell-activity-ui/src/main/resources/META-INF/spring/beanshell-activity-ui-context-osgi.xml
+++ /dev/null
@@ -1,29 +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="BeanshellActivityIcon" interface="net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI" />
-
-	<service ref="BeanshellTemplateService" interface="net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider" />
-
-	<service ref="AddBeanshellTemplateAction" auto-export="interfaces" />
-	<service ref="AddBeanshellTemplateMenuAction" auto-export="interfaces" />
-	<service ref="ConfigureBeanshellMenuAction" auto-export="interfaces" />
-
-	<service ref="BeanshellActivityViewFactory" 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" />
-	<reference id="menuManager" interface="net.sf.taverna.t2.ui.menu.MenuManager" />
-	<reference id="selectionManager" interface="net.sf.taverna.t2.workbench.selection.SelectionManager" />
-	<reference id="activityIconManager" interface="net.sf.taverna.t2.workbench.activityicons.ActivityIconManager" />
-	<reference id="colourManager" interface="net.sf.taverna.t2.workbench.configuration.colour.ColourManager" />
-	<reference id="serviceDescriptionRegistry" interface="net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry" />
-	<reference id="serviceRegistry" interface="uk.org.taverna.commons.services.ServiceRegistry" />
-	<reference id="applicationConfiguration" interface="uk.org.taverna.configuration.app.ApplicationConfiguration" />
-
-</beans:beans>
diff --git a/taverna-beanshell-activity-ui/src/main/resources/META-INF/spring/beanshell-activity-ui-context.xml b/taverna-beanshell-activity-ui/src/main/resources/META-INF/spring/beanshell-activity-ui-context.xml
deleted file mode 100644
index fc6d5d4..0000000
--- a/taverna-beanshell-activity-ui/src/main/resources/META-INF/spring/beanshell-activity-ui-context.xml
+++ /dev/null
@@ -1,43 +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="BeanshellActivityIcon" class="net.sf.taverna.t2.activities.beanshell.servicedescriptions.BeanshellActivityIcon" />
-
-	<bean id="BeanshellTemplateService" class="net.sf.taverna.t2.activities.beanshell.servicedescriptions.BeanshellTemplateService" />
-
-	<bean id="AddBeanshellTemplateAction" class="net.sf.taverna.t2.activities.beanshell.menu.AddBeanshellTemplateAction">
-			<property name="editManager" ref="editManager" />
-			<property name="menuManager" ref="menuManager" />
-			<property name="selectionManager" ref="selectionManager" />
-			<property name="activityIconManager" ref="activityIconManager" />
-			<property name="serviceDescriptionRegistry" ref="serviceDescriptionRegistry" />
-			<property name="serviceRegistry" ref="serviceRegistry" />
-	</bean>
-	<bean id="AddBeanshellTemplateMenuAction" class="net.sf.taverna.t2.activities.beanshell.menu.AddBeanshellTemplateMenuAction">
-			<property name="editManager" ref="editManager" />
-			<property name="menuManager" ref="menuManager" />
-			<property name="selectionManager" ref="selectionManager" />
-			<property name="activityIconManager" ref="activityIconManager" />
-			<property name="serviceDescriptionRegistry" ref="serviceDescriptionRegistry" />
-			<property name="serviceRegistry" ref="serviceRegistry" />
-	</bean>
-	<bean id="ConfigureBeanshellMenuAction" class="net.sf.taverna.t2.activities.beanshell.menu.ConfigureBeanshellMenuAction">
-			<property name="editManager" ref="editManager" />
-			<property name="fileManager" ref="fileManager" />
-			<property name="activityIconManager" ref="activityIconManager" />
-			<property name="serviceDescriptionRegistry" ref="serviceDescriptionRegistry" />
-			<property name="applicationConfiguration" ref="applicationConfiguration" />
-	</bean>
-
-	<bean id="BeanshellActivityViewFactory" class="net.sf.taverna.t2.activities.beanshell.views.BeanshellActivityViewFactory">
-			<property name="editManager" ref="editManager" />
-			<property name="fileManager" ref="fileManager" />
-			<property name="activityIconManager" ref="activityIconManager" />
-			<property name="colourManager" ref="colourManager" />
-			<property name="serviceDescriptionRegistry" ref="serviceDescriptionRegistry" />
-			<property name="applicationConfiguration" ref="applicationConfiguration" />
-	</bean>
-
-</beans>
diff --git a/taverna-beanshell-activity-ui/src/main/resources/beanshell.png b/taverna-beanshell-activity-ui/src/main/resources/beanshell.png
deleted file mode 100644
index 8f6edfb..0000000
--- a/taverna-beanshell-activity-ui/src/main/resources/beanshell.png
+++ /dev/null
Binary files differ
diff --git a/taverna-beanshell-activity-ui/src/main/resources/net/sf/taverna/t2/activities/beanshell/views/keys.txt b/taverna-beanshell-activity-ui/src/main/resources/net/sf/taverna/t2/activities/beanshell/views/keys.txt
deleted file mode 100644
index 15cb51b..0000000
--- a/taverna-beanshell-activity-ui/src/main/resources/net/sf/taverna/t2/activities/beanshell/views/keys.txt
+++ /dev/null
@@ -1,90 +0,0 @@
-++
---
-+
--
-~
-!
-*
-/
-%
-<<
->>
->>>
-<
->
-<=
->=
-==
-!=
-&
-^
-|
-&&
-||
-:
-=
-+=
--=
-*=
-/=
-%=
-&=
-^=
-|=
-<<=
->>=
->>>=
-=
-abstract
-assert
-boolean
-break
-byte
-case
-catch
-char
-class
-const
-continue
-default
-do
-double
-else
-enum
-extends
-false
-final
-finally
-float
-for
-goto
-if
-implements
-import
-instanceof
-int
-interface
-long
-native
-new
-null
-package
-private
-protected
-public
-return
-short
-static
-strictfp
-super
-switch
-synchronized
-this
-throw
-throws
-transient
-true
-try
-void
-volatile
-while 
\ No newline at end of file
diff --git a/taverna-external-tool-activity-ui/pom.xml b/taverna-external-tool-activity-ui/pom.xml
deleted file mode 100644
index 376cd5c..0000000
--- a/taverna-external-tool-activity-ui/pom.xml
+++ /dev/null
@@ -1,108 +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</groupId>
-    <artifactId>taverna-parent</artifactId>
-    <version>3.0.1-SNAPSHOT</version>
-  </parent>
-	<groupId>net.sf.taverna.t2.ui-activities</groupId>
-	<artifactId>external-tool-activity-ui</artifactId>
-	<name>Taverna 2 ExternalTool Activity UI</name>
-	<dependencies>
-		<dependency>
-			<groupId>net.sf.taverna.t2.ui-api</groupId>
-			<artifactId>menu-api</artifactId>
-			<version>${t2.ui.api.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>net.sf.taverna.t2.ui-components</groupId>
-			<artifactId>graph-view</artifactId>
-			<version>${t2.ui.components.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>net.sf.taverna.t2.ui-api</groupId>
-			<artifactId>activity-icons-api</artifactId>
-			<version>${t2.ui.api.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>net.sf.taverna.t2.ui-api</groupId>
-			<artifactId>activity-palette-api</artifactId>
-			<version>${t2.ui.api.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>net.sf.taverna.t2.activities</groupId>
-			<artifactId>wsdl-activity</artifactId>
-			<version>${t2.activities.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>net.sf.taverna.t2.ui-impl</groupId>
-			<artifactId>contextual-views-impl</artifactId>
-			<version>${t2.ui.impl.version}</version>
-		</dependency>
-		<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-components</groupId>
-			<artifactId>workflow-view</artifactId>
-			<version>${t2.ui.components.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>net.sf.taverna.t2.ui-api</groupId>
-			<artifactId>activity-tools</artifactId>
-			<version>${t2.ui.api.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>net.sf.taverna.t2.ui-impl</groupId>
-			<artifactId>renderers-impl</artifactId>
-			<version>${t2.ui.impl.version}</version>
-		</dependency>
-
-		<!--  testing dependencies -->
-		<dependency>
-			<groupId>junit</groupId>
-			<artifactId>junit</artifactId>
-                        <version>${junit.version}</version>
-			<scope>test</scope>
-		</dependency>
-		<dependency>
-			<groupId>net.sf.taverna.t2.ui-impl</groupId>
-			<artifactId>activity-palette-impl</artifactId>
-			<version>${t2.ui.impl.version}</version>
-			<scope>test</scope>
-		</dependency>
-
-		<!-- function dependencies for invocation -->
-		<dependency>
-			<groupId>net.sf.taverna.t2.activities</groupId>
-			<artifactId>external-tool-activity</artifactId>
-			<version>${t2.activities.version}</version>
-		</dependency>
-
-	</dependencies>
-        <repositories>
-                <repository>
-                        <releases />
-                        <snapshots>
-                                <enabled>false</enabled>
-                        </snapshots>
-                        <id>mygrid-repository</id>
-                        <name>myGrid Repository</name>
-                        <url>http://www.mygrid.org.uk/maven/repository</url>
-                </repository>
-                <repository>
-                        <releases>
-                                <enabled>false</enabled>
-                        </releases>
-                        <snapshots />
-                        <id>mygrid-snapshot-repository</id>
-                        <name>myGrid Snapshot Repository</name>
-                        <url>http://www.mygrid.org.uk/maven/snapshot-repository</url>
-                </repository>
-        </repositories>
-</project>
-
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/actions/ExternalToolActivityConfigureAction.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/actions/ExternalToolActivityConfigureAction.java
deleted file mode 100644
index 398ee7c..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/actions/ExternalToolActivityConfigureAction.java
+++ /dev/null
@@ -1,83 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2009 Hajo Nils Krabbenhoeft, INB, University of Luebeck
- * modified 2010 Hajo Nils Krabbenhoeft, spratpix GmbH & Co. KG
- *
- *  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.activities.externaltool.actions;
-
-import java.awt.Frame;
-import java.awt.event.ActionEvent;
-
-import javax.swing.Action;
-
-import net.sf.taverna.t2.activities.externaltool.ExternalToolActivity;
-import net.sf.taverna.t2.activities.externaltool.ExternalToolActivityConfigurationBean;
-import net.sf.taverna.t2.activities.externaltool.views.ExternalToolConfigView;
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.file.FileManager;
-import net.sf.taverna.t2.workbench.ui.actions.activity.ActivityConfigurationAction;
-import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ActivityConfigurationDialog;
-
-/**
- * This class implements an ActivityConfigurationAction to configure the ExternalToolActivity
- * plugin. The configuration action is called "Configure UseCase invocation" and is implemented in
- * the KnowARCConfigurationDialog inside the knowarc-usecases maven artifact.
- *
- * @author Hajo Nils Krabbenhoeft
- */
-@SuppressWarnings("serial")
-public class ExternalToolActivityConfigureAction extends
-		ActivityConfigurationAction<ExternalToolActivity, ExternalToolActivityConfigurationBean> {
-
-	private final Frame owner;
-	private final EditManager editManager;
-	private final FileManager fileManager;
-
-	public ExternalToolActivityConfigureAction(ExternalToolActivity activity, Frame owner,
-			EditManager editManager, FileManager fileManager, ActivityIconManager activityIconManager) {
-		super(activity, activityIconManager);
-		this.editManager = editManager;
-		this.fileManager = fileManager;
-		putValue(Action.NAME, "Configure tool invocation");
-		this.owner = owner;
-	}
-
-	public void actionPerformed(ActionEvent e) {
-		/*
-		 * if (getActivity().getConfiguration() instanceof
-		 * RegisteredExternalToolActivityConfigurationBean) { new KnowARCConfigurationDialog(owner,
-		 * false, KnowARCConfigurationFactory.getConfiguration()).setVisible(true); } else
-		 */{
-			ActivityConfigurationDialog currentDialog = ActivityConfigurationAction
-					.getDialog(getActivity());
-			if (currentDialog != null) {
-				currentDialog.toFront();
-				return;
-			}
-			final ExternalToolConfigView externalToolConfigView = new ExternalToolConfigView(
-					(ExternalToolActivity) getActivity());
-			final ActivityConfigurationDialog<ExternalToolActivity, ExternalToolActivityConfigurationBean> dialog = new ActivityConfigurationDialog<ExternalToolActivity, ExternalToolActivityConfigurationBean>(
-					getActivity(), externalToolConfigView, editManager, fileManager);
-
-			ActivityConfigurationAction.setDialog(getActivity(), dialog, fileManager);
-		}
-	}
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/configuration/ToolInvocationConfiguration.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/configuration/ToolInvocationConfiguration.java
deleted file mode 100644
index 0877045..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/configuration/ToolInvocationConfiguration.java
+++ /dev/null
@@ -1,57 +0,0 @@
-/**
- *
- */
-package net.sf.taverna.t2.activities.externaltool.configuration;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import uk.org.taverna.configuration.AbstractConfigurable;
-
-
-/**
- * @author alanrw
- *
- */
-public class ToolInvocationConfiguration extends AbstractConfigurable {
-
-	private static ToolInvocationConfiguration instance;
-
-	private Map<String, String> defaultPropertyMap;
-
-	public static ToolInvocationConfiguration getInstance() {
-		if (instance == null) {
-			instance = new ToolInvocationConfiguration();
-		}
-		return instance;
-	}
-
-	@Override
-	public String getCategory() {
-		return "general";
-	}
-
-	@Override
-	public Map<String, String> getDefaultPropertyMap() {
-		if (defaultPropertyMap == null) {
-			defaultPropertyMap = new HashMap<String, String>();
-		}
-		return defaultPropertyMap;
-	}
-
-	@Override
-	public String getDisplayName() {
-		return "Tool invocation";
-	}
-
-	@Override
-	public String getFilePrefix() {
-		return "ToolInvocation";
-	}
-
-	@Override
-	public String getUUID() {
-		return "B611F5C2-EB49-479E-B01A-7F3F56E6918A";
-	}
-
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/GroupPanel.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/GroupPanel.java
deleted file mode 100644
index 8f62787..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/GroupPanel.java
+++ /dev/null
@@ -1,113 +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.activities.externaltool.manager;
-
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.Insets;
-
-import javax.swing.JComboBox;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JTextField;
-import javax.swing.border.EmptyBorder;
-
-import net.sf.taverna.t2.activities.externaltool.manager.impl.InvocationGroupManagerImpl;
-
-/**
- * UI for creating/editing dataflow input ports.
- *
- * @author David Withers
- */
-public class GroupPanel extends JPanel {
-
-	private static final long serialVersionUID = 1L;
-
-	private JTextField groupNameField;
-
-	private JComboBox mechanismComboBox;
-
-	private static InvocationGroupManager manager = InvocationGroupManagerImpl.getInstance();
-
-	public GroupPanel(Object[] mechanisms) {
-		super(new GridBagLayout());
-
-		groupNameField = new JTextField();
-
-
-		setBorder(new EmptyBorder(10, 10, 10, 10));
-
-		GridBagConstraints constraints = new GridBagConstraints();
-
-		constraints.anchor = GridBagConstraints.WEST;
-		constraints.gridx = 0;
-		constraints.gridy = 0;
-		constraints.ipadx = 10;
-		add(new JLabel("Name:"), constraints);
-
-		constraints.gridx = 1;
-		constraints.gridwidth = 2;
-		constraints.ipadx = 0;
-		constraints.weightx = 1d;
-		constraints.fill = GridBagConstraints.HORIZONTAL;
-		add(groupNameField, constraints);
-
-		constraints.gridx = 0;
-		constraints.gridy = 1;
-		constraints.gridwidth = 1;
-		constraints.weightx = 0d;
-		constraints.fill = GridBagConstraints.NONE;
-		constraints.ipadx = 10;
-		constraints.insets = new Insets(10, 0, 0, 0);
-		add(new JLabel("Explicit location:"), constraints);
-
-		mechanismComboBox = new JComboBox(mechanisms);
-		mechanismComboBox.setSelectedItem(manager.getDefaultMechanism());
-
-		constraints.gridx = 1;
-		constraints.gridwidth = 2;
-		constraints.ipadx = 0;
-		add(mechanismComboBox, constraints);
-	}
-
-	/**
-	 * Returns the portNameField.
-	 *
-	 * @return the portNameField
-	 */
-	public JTextField getGroupNameField() {
-		return groupNameField;
-	}
-
-	/**
-	 * Returns the group name.
-	 *
-	 * @return the group name
-	 */
-	public String getGroupName() {
-		return groupNameField.getText();
-	}
-
-	public InvocationMechanism getSelectedMechanism() {
-		return (InvocationMechanism) mechanismComboBox.getSelectedItem();
-	}
-
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationGroupManagerShutdownHook.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationGroupManagerShutdownHook.java
deleted file mode 100644
index 3d54b26..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationGroupManagerShutdownHook.java
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * 
- */
-package net.sf.taverna.t2.activities.externaltool.manager;
-
-import net.sf.taverna.t2.activities.externaltool.manager.impl.InvocationGroupManagerImpl;
-import net.sf.taverna.t2.workbench.ShutdownSPI;
-
-/**
- * @author alanrw
- *
- */
-public class InvocationGroupManagerShutdownHook implements ShutdownSPI {
-
-	/* (non-Javadoc)
-	 * @see net.sf.taverna.t2.workbench.ShutdownSPI#positionHint()
-	 */
-	@Override
-	public int positionHint() {
-		return 710;
-	}
-
-	/* (non-Javadoc)
-	 * @see net.sf.taverna.t2.workbench.ShutdownSPI#shutdown()
-	 */
-	@Override
-	public boolean shutdown() {
-		InvocationGroupManager manager = InvocationGroupManagerImpl.getInstance();
-		manager.saveConfiguration();
-		manager.persistInvocations();
-		return true;
-	}
-
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationGroupManagerStartupHook.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationGroupManagerStartupHook.java
deleted file mode 100644
index 43cf4df..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationGroupManagerStartupHook.java
+++ /dev/null
@@ -1,47 +0,0 @@
-/*******************************************************************************

- * Copyright (C) 2010 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.activities.externaltool.manager;

-

-import net.sf.taverna.t2.activities.externaltool.manager.impl.InvocationGroupManagerImpl;

-import net.sf.taverna.t2.workbench.StartupSPI;

-

-/**

- * Load previously saved workflow ids that were scheduled to be deleted before

- * previous Taverna shutdown, and initiate deletion of them now.

- * 

- * @see StoreRunIdsToDeleteLaterShutdownHook

- * @see DatabaseCleanup

- * 

- * @author Stian Soiland-Reyes

- * 

- */

-public class InvocationGroupManagerStartupHook implements StartupSPI {

-

-	public int positionHint() {

-		return 900;

-	}

-

-	public boolean startup() {

-		InvocationGroupManagerImpl.getInstance().loadInvocations();

-		return true;

-	}

-

-}

diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationMechanismEditor.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationMechanismEditor.java
deleted file mode 100644
index 495d22b..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/InvocationMechanismEditor.java
+++ /dev/null
@@ -1,28 +0,0 @@
-/**
- *
- */
-package net.sf.taverna.t2.activities.externaltool.manager;
-
-import javax.swing.JPanel;
-
-/**
- * @author alanrw
- *
- */
-public abstract class InvocationMechanismEditor<T extends InvocationMechanism> extends JPanel {
-
-	public abstract String getName();
-
-	public abstract boolean canShow(Class<?> c);
-
-	public abstract void show(T invocationMechanism);
-
-	public abstract T updateInvocationMechanism();
-
-	public abstract InvocationMechanism createMechanism(String mechanismName);
-
-	public boolean isSingleton() {
-		return false;
-	}
-
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/MechanismPanel.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/MechanismPanel.java
deleted file mode 100644
index c068d56..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/MechanismPanel.java
+++ /dev/null
@@ -1,121 +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.activities.externaltool.manager;
-
-import java.awt.Component;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.Insets;
-import java.util.List;
-
-import javax.swing.JComboBox;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JTextField;
-import javax.swing.border.EmptyBorder;
-
-/**
- * UI for creating/editing dataflow input ports.
- *
- * @author David Withers
- */
-public class MechanismPanel extends JPanel {
-
-	private static final long serialVersionUID = 1L;
-
-	private JTextField mechanismNameField;
-
-	private JComboBox mechanismTypeSelector;
-
-	public MechanismPanel(List<InvocationMechanismEditor<?>> invocationMechanismEditors) {
-		super(new GridBagLayout());
-
-		mechanismNameField = new JTextField();
-
-
-		setBorder(new EmptyBorder(10, 10, 10, 10));
-
-		GridBagConstraints constraints = new GridBagConstraints();
-
-		constraints.anchor = GridBagConstraints.WEST;
-		constraints.gridx = 0;
-		constraints.gridy = 0;
-		constraints.ipadx = 10;
-		add(new JLabel("Name:"), constraints);
-
-		constraints.gridx = 1;
-		constraints.gridwidth = 2;
-		constraints.ipadx = 0;
-		constraints.weightx = 1d;
-		constraints.fill = GridBagConstraints.HORIZONTAL;
-		add(mechanismNameField, constraints);
-
-		constraints.gridx = 0;
-		constraints.gridy = 1;
-		constraints.gridwidth = 1;
-		constraints.weightx = 0d;
-		constraints.fill = GridBagConstraints.NONE;
-		constraints.ipadx = 10;
-		constraints.insets = new Insets(10, 0, 0, 0);
-		add(new JLabel("Type:"), constraints);
-
-		mechanismTypeSelector = new JComboBox();
-		for (InvocationMechanismEditor<?> ime : invocationMechanismEditors) {
-			if (!ime.isSingleton()) {
-				mechanismTypeSelector.addItem(ime.getName());
-			}
-		}
-		constraints.gridx = 1;
-		constraints.gridwidth = 2;
-		constraints.ipadx = 0;
-		add(mechanismTypeSelector, constraints);
-
-
-	}
-
-	/**
-	 * Returns the portNameField.
-	 *
-	 * @return the portNameField
-	 */
-	public JTextField getMechanismNameField() {
-		return mechanismNameField;
-	}
-
-	/**
-	 * Returns the port name.
-	 *
-	 * @return the port name
-	 */
-	public String getMechanismName() {
-		return mechanismNameField.getText();
-	}
-
-	public String getMechanismTypeName() {
-		return (String) mechanismTypeSelector.getSelectedItem();
-	}
-
-	public Component getMechanismTypeSelector() {
-		return mechanismTypeSelector;
-	}
-
-
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/ToolInvocationConfigurationPanel.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/ToolInvocationConfigurationPanel.java
deleted file mode 100644
index 22500cd..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/ToolInvocationConfigurationPanel.java
+++ /dev/null
@@ -1,379 +0,0 @@
-/**
- *
- */
-package net.sf.taverna.t2.activities.externaltool.manager;
-
-import java.awt.BorderLayout;
-import java.awt.Component;
-import java.awt.Dimension;
-import java.awt.FlowLayout;
-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.Comparator;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-
-import javax.swing.AbstractAction;
-import javax.swing.DefaultListCellRenderer;
-import javax.swing.DefaultListModel;
-import javax.swing.JButton;
-import javax.swing.JComboBox;
-import javax.swing.JLabel;
-import javax.swing.JList;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JTextArea;
-import javax.swing.ListSelectionModel;
-import javax.swing.SwingUtilities;
-import javax.swing.border.EmptyBorder;
-
-import net.sf.taverna.t2.activities.externaltool.manager.impl.InvocationGroupManagerImpl;
-import net.sf.taverna.t2.lang.observer.Observable;
-import net.sf.taverna.t2.lang.observer.Observer;
-import net.sf.taverna.t2.lang.ui.DeselectingButton;
-import net.sf.taverna.t2.lang.ui.ValidatingUserInputDialog;
-import net.sf.taverna.t2.workbench.helper.Helper;
-
-/**
- * @author alanrw
- *
- */
-public class ToolInvocationConfigurationPanel extends JPanel implements
-		Observer<InvocationManagerEvent> {
-
-	public static final String HEADER_TEXT = "A tool can be set to run at an explicit location (e.g. on a specificic machine or one of a set of machines). Alternatively, it can be set to run at a symbolic location, which means the tool will then be run at the explicit location pointed to by the symbolic location.";
-
-	private static InvocationGroupManagerImpl manager = InvocationGroupManagerImpl.getInstance();
-
-	private final List<InvocationMechanismEditor<?>> invocationMechanismEditors;
-
-	private JTextArea headerText;
-
-	private static String EXPLICIT_LOCATIONS = "explicit locations";
-	private static String SYMBOLIC_LOCATIONS = "symbolic locations";
-
-	private List<MechanismCreator> mechanismCreators;
-
-	JList locationList = new JList();
-
-	DefaultListModel groupListModel = new DefaultListModel();
-	DefaultListModel mechanismListModel = new DefaultListModel();
-	JComboBox locationTypeCombo = new JComboBox(new String[] { EXPLICIT_LOCATIONS,
-			SYMBOLIC_LOCATIONS });
-
-	public ToolInvocationConfigurationPanel(List<MechanismCreator> mechanismCreators,
-			List<InvocationMechanismEditor<?>> invocationMechanismEditors) {
-		super();
-		this.mechanismCreators = mechanismCreators;
-		this.invocationMechanismEditors = invocationMechanismEditors;
-		manager.addObserver(this);
-
-		this.setLayout(new GridBagLayout());
-		GridBagConstraints gbc = new GridBagConstraints();
-
-		headerText = new JTextArea(HEADER_TEXT);
-		headerText.setLineWrap(true);
-		headerText.setWrapStyleWord(true);
-		headerText.setEditable(false);
-		headerText.setFocusable(false);
-		headerText.setBorder(new EmptyBorder(10, 10, 10, 10));
-
-		gbc.anchor = GridBagConstraints.WEST;
-		gbc.insets = new Insets(0, 0, 10, 0);
-		gbc.gridx = 0;
-		gbc.gridy = 0;
-		gbc.gridwidth = 1;
-		gbc.weightx = 1.0;
-		gbc.weighty = 0.0;
-		gbc.fill = GridBagConstraints.HORIZONTAL;
-		add(headerText, gbc);
-
-		JPanel locationPanel = new JPanel(new BorderLayout());
-		JPanel subPanel = new JPanel(new FlowLayout());
-		JLabel modify = new JLabel("Modify:");
-
-		locationTypeCombo.setSelectedItem(EXPLICIT_LOCATIONS);
-		locationTypeCombo.addActionListener(new ActionListener() {
-
-			@Override
-			public void actionPerformed(ActionEvent e) {
-				switchList();
-			}
-		});
-		subPanel.add(modify);
-		subPanel.add(locationTypeCombo);
-
-		populateLists();
-		switchList();
-		locationList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);
-		locationList.setCellRenderer(new DefaultListCellRenderer() {
-			public Component getListCellRendererComponent(JList list, Object value, int index,
-					boolean isSelected, boolean cellHasFocus) {
-				Object toShow = value;
-				if (value instanceof InvocationGroup) {
-					InvocationGroup invocationGroup = (InvocationGroup) value;
-					toShow = invocationGroup.getName() + "  -->  "
-							+ invocationGroup.getMechanismName();
-				}
-				return super.getListCellRendererComponent(list, toShow, index, isSelected,
-						cellHasFocus);
-			}
-		});
-		locationPanel.add(new JScrollPane(locationList), BorderLayout.CENTER);
-		locationPanel.add(subPanel, BorderLayout.NORTH);
-
-		JPanel buttonPanel = new JPanel(new FlowLayout());
-		JButton helpButton = new DeselectingButton("Help", new AbstractAction() {
-
-			public void actionPerformed(ActionEvent e) {
-				Helper.showHelp(ToolInvocationConfigurationPanel.this);
-			}
-		});
-
-		buttonPanel.add(helpButton);
-
-		buttonPanel.add(addLocationButton());
-		buttonPanel.add(removeLocationButton());
-		buttonPanel.add(editLocationButton());
-		locationPanel.add(buttonPanel, BorderLayout.SOUTH);
-
-		gbc.gridy++;
-		gbc.weighty = 1;
-
-		gbc.fill = GridBagConstraints.BOTH;
-		gbc.anchor = GridBagConstraints.SOUTH;
-		gbc.insets = new Insets(10, 0, 0, 0);
-		this.add(locationPanel, gbc);
-	}
-
-	private void switchList() {
-		if (isShowingGroups()) {
-			locationList.setModel(groupListModel);
-		} else {
-			locationList.setModel(mechanismListModel);
-		}
-	}
-
-	private void populateLists() {
-		poopulateGroupList();
-		populateMechanismList();
-	}
-
-	private void populateMechanismList() {
-		Object currentSelection = locationList.getSelectedValue();
-		ArrayList<InvocationMechanism> mechanisms = new ArrayList<InvocationMechanism>();
-		mechanisms.addAll(manager.getMechanisms());
-		Collections.sort(mechanisms, new Comparator<InvocationMechanism>() {
-
-			@Override
-			public int compare(InvocationMechanism o1, InvocationMechanism o2) {
-				return o1.getName().compareTo(o2.getName());
-			}
-		});
-		mechanismListModel.clear();
-		for (InvocationMechanism m : mechanisms) {
-			mechanismListModel.addElement(m);
-		}
-		if ((currentSelection != null) && !isShowingGroups()) {
-			locationList.setSelectedValue(currentSelection, true);
-		}
-	}
-
-	private void poopulateGroupList() {
-		Object currentSelection = locationList.getSelectedValue();
-		ArrayList<InvocationGroup> groups = new ArrayList<InvocationGroup>();
-		groups.addAll(manager.getInvocationGroups());
-		Collections.sort(groups, new Comparator<InvocationGroup>() {
-
-			@Override
-			public int compare(InvocationGroup o1, InvocationGroup o2) {
-				return o1.getName().compareTo(o2.getName());
-			}
-		});
-		groupListModel.clear();
-		for (InvocationGroup g : groups) {
-			groupListModel.addElement(g);
-		}
-		if ((currentSelection != null) && isShowingGroups()) {
-			locationList.setSelectedValue(currentSelection, true);
-		}
-	}
-
-	private boolean isShowingGroups() {
-		return (locationTypeCombo.getSelectedItem().equals(SYMBOLIC_LOCATIONS));
-	}
-
-	private JButton addLocationButton() {
-		final JButton result = new DeselectingButton("Add", new AbstractAction() {
-
-			@Override
-			public void actionPerformed(ActionEvent e) {
-				if (isShowingGroups()) {
-					Set<String> usedGroupNames = new HashSet<String>();
-					for (InvocationGroup g : manager.getInvocationGroups()) {
-						usedGroupNames.add(g.getName());
-					}
-
-					GroupPanel inputPanel = new GroupPanel(mechanismListModel.toArray());
-
-					ValidatingUserInputDialog vuid = new ValidatingUserInputDialog(
-							"Add symbolic location", inputPanel);
-					vuid.addTextComponentValidation(inputPanel.getGroupNameField(),
-							"Set the symbolic location name.", usedGroupNames,
-							"Duplicate symbolic location name.", "[\\p{L}\\p{Digit}_.]+",
-							"Invalid symbolic location name.");
-					vuid.setSize(new Dimension(400, 250));
-
-					if (vuid.show(ToolInvocationConfigurationPanel.this)) {
-						String groupName = inputPanel.getGroupName();
-						InvocationGroup newGroup = new InvocationGroup(mechanismCreators);
-						newGroup.setName(groupName);
-						newGroup.setMechanism(inputPanel.getSelectedMechanism());
-						manager.addInvocationGroup(newGroup);
-						locationList.setSelectedValue(newGroup, true);
-					}
-				} else {
-					Set<String> usedNames = new HashSet<String>();
-					for (InvocationMechanism m : manager.getMechanisms()) {
-						usedNames.add(m.getName());
-					}
-
-					MechanismPanel inputPanel = new MechanismPanel(invocationMechanismEditors);
-
-					ValidatingUserInputDialog vuid = new ValidatingUserInputDialog(
-							"Add explicit location", inputPanel);
-					vuid.addTextComponentValidation(inputPanel.getMechanismNameField(),
-							"Set the explicit location name.", usedNames,
-							"Duplicate explicit location name.", "[\\p{L}\\p{Digit}_.]+",
-							"Invalid explicit location name.");
-					vuid.addMessageComponent(inputPanel.getMechanismTypeSelector(),
-							"Set the location name and type.");
-					vuid.setSize(new Dimension(400, 250));
-
-					if (vuid.show(ToolInvocationConfigurationPanel.this)) {
-						String mechanismName = inputPanel.getMechanismName();
-						String mechanismTypeName = inputPanel.getMechanismTypeName();
-						InvocationMechanismEditor ime = findEditor(mechanismTypeName);
-						InvocationMechanism newMechanism = ime.createMechanism(mechanismName);
-						manager.addMechanism(newMechanism);
-						ime.show(newMechanism);
-						ime.setPreferredSize(new Dimension(550, 500));
-						int answer = JOptionPane.showConfirmDialog(
-								ToolInvocationConfigurationPanel.this, ime,
-								"New explicit location", JOptionPane.OK_CANCEL_OPTION,
-								JOptionPane.PLAIN_MESSAGE, null);
-						if (answer == JOptionPane.OK_OPTION) {
-							ime.updateInvocationMechanism();
-							InvocationGroupManagerImpl.getInstance().mechanismChanged(newMechanism);
-						}
-						locationList.setSelectedValue(newMechanism, true);
-					}
-				}
-			}
-		});
-		return result;
-	}
-
-	private JButton removeLocationButton() {
-		JButton result = new DeselectingButton("Remove", new AbstractAction() {
-
-			@Override
-			public void actionPerformed(ActionEvent e) {
-				if (isShowingGroups()) {
-					InvocationGroup toRemove = (InvocationGroup) locationList.getSelectedValue();
-					if ((toRemove != null) && !toRemove.equals(manager.getDefaultGroup())) {
-						manager.removeInvocationGroup(toRemove);
-					}
-					locationList.setSelectedValue(manager.getDefaultGroup(), true);
-				} else {
-					InvocationMechanism toRemove = (InvocationMechanism) locationList
-							.getSelectedValue();
-					if ((toRemove != null) && !toRemove.equals(manager.getDefaultMechanism())) {
-						manager.removeMechanism(toRemove);
-						locationList.setSelectedValue(manager.getDefaultMechanism(), true);
-					}
-				}
-			}
-		});
-		return result;
-	}
-
-	private JButton editLocationButton() {
-		final JButton result = new DeselectingButton("Edit", new AbstractAction() {
-
-			@Override
-			public void actionPerformed(ActionEvent e) {
-				if (isShowingGroups()) {
-					InvocationGroup toEdit = (InvocationGroup) locationList.getSelectedValue();
-					if (toEdit != null) {
-						InvocationMechanism chosenMechanism = (InvocationMechanism) JOptionPane
-								.showInputDialog(ToolInvocationConfigurationPanel.this,
-										"Select an explicit location", "Edit symbolic location",
-										JOptionPane.PLAIN_MESSAGE, null,
-										mechanismListModel.toArray(), toEdit.getMechanism());
-						if (chosenMechanism != null) {
-							toEdit.setMechanism(chosenMechanism);
-							manager.groupChanged(toEdit);
-						}
-					}
-				} else {
-					InvocationMechanism toEdit = (InvocationMechanism) locationList
-							.getSelectedValue();
-					if (toEdit != null) {
-						InvocationMechanismEditor ime = findEditor(toEdit.getClass());
-						ime.show(toEdit);
-						ime.setPreferredSize(new Dimension(550, 500));
-						int answer = JOptionPane.showConfirmDialog(
-								ToolInvocationConfigurationPanel.this, ime,
-								"Edit explicit location", JOptionPane.OK_CANCEL_OPTION,
-								JOptionPane.PLAIN_MESSAGE, null);
-						if (answer == JOptionPane.OK_OPTION) {
-							ime.updateInvocationMechanism();
-							InvocationGroupManagerImpl.getInstance().mechanismChanged(toEdit);
-						}
-					}
-				}
-			}
-		});
-		return result;
-	}
-
-	protected InvocationMechanismEditor findEditor(String name) {
-		for (InvocationMechanismEditor ime : invocationMechanismEditors) {
-			if (ime.getName().equalsIgnoreCase(name)) {
-				return ime;
-			}
-		}
-		return null;
-	}
-
-	protected InvocationMechanismEditor findEditor(Class c) {
-		for (InvocationMechanismEditor ime : invocationMechanismEditors) {
-			if (ime.canShow(c)) {
-				return ime;
-			}
-		}
-		return null;
-	}
-
-	@Override
-	public void notify(Observable<InvocationManagerEvent> arg0, InvocationManagerEvent arg1)
-			throws Exception {
-		if (SwingUtilities.isEventDispatchThread()) {
-			populateLists();
-		} else {
-			SwingUtilities.invokeLater(new Runnable() {
-				public void run() {
-					populateLists();
-				}
-			});
-		}
-	}
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/ToolInvocationConfigurationUIFactory.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/ToolInvocationConfigurationUIFactory.java
deleted file mode 100644
index 82dd443..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/ToolInvocationConfigurationUIFactory.java
+++ /dev/null
@@ -1,54 +0,0 @@
-/**
- *
- */
-package net.sf.taverna.t2.activities.externaltool.manager;
-
-import java.util.List;
-
-import javax.swing.JPanel;
-
-import uk.org.taverna.configuration.Configurable;
-import uk.org.taverna.configuration.ConfigurationUIFactory;
-
-import net.sf.taverna.t2.activities.externaltool.configuration.ToolInvocationConfiguration;
-
-/**
- * @author alanrw
- *
- */
-public class ToolInvocationConfigurationUIFactory implements ConfigurationUIFactory {
-
-	private List<MechanismCreator> mechanismCreators;
-	private List<InvocationMechanismEditor<?>> invocationMechanismEditors;
-
-	private ToolInvocationConfigurationPanel configPanel;
-
-	@Override
-	public boolean canHandle(String uuid) {
-		return uuid.equals(getConfigurable().getUUID());
-	}
-
-	@Override
-	public Configurable getConfigurable() {
-		return ToolInvocationConfiguration.getInstance();
-	}
-
-	@Override
-	public JPanel getConfigurationPanel() {
-		if (configPanel == null) {
-			configPanel = new ToolInvocationConfigurationPanel(mechanismCreators,
-					invocationMechanismEditors);
-		}
-		return configPanel;
-	}
-
-	public void setMechanismCreators(List<MechanismCreator> mechanismCreators) {
-		this.mechanismCreators = mechanismCreators;
-	}
-
-	public void setInvocationMechanismEditors(
-			List<InvocationMechanismEditor<?>> invocationMechanismEditors) {
-		this.invocationMechanismEditors = invocationMechanismEditors;
-	}
-
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/local/LocalInvocationMechanismEditor.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/local/LocalInvocationMechanismEditor.java
deleted file mode 100644
index 64fcc36..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/local/LocalInvocationMechanismEditor.java
+++ /dev/null
@@ -1,122 +0,0 @@
-/**
- * 
- */
-package net.sf.taverna.t2.activities.externaltool.manager.local;
-
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-
-import javax.swing.JCheckBox;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JTextField;
-
-import net.sf.taverna.t2.activities.externaltool.local.ExternalToolLocalInvocationMechanism;
-import net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanism;
-import net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanismEditor;
-
-/**
- * @author alanrw
- *
- */
-public final class LocalInvocationMechanismEditor extends
-		InvocationMechanismEditor<ExternalToolLocalInvocationMechanism> {
-
-	private ExternalToolLocalInvocationMechanism invocationMechanism;
-	
-	private JTextField directoryField = new JTextField(30);
-	
-	private JTextField shellPrefixField = new JTextField(30);
-	
-	private JTextField linkCommandField = new JTextField(30);
-	
-	private JCheckBox retrieveDataField = new JCheckBox();
-	
-
-	@Override
-	public boolean canShow(Class<?> c) {
-		return ExternalToolLocalInvocationMechanism.class.isAssignableFrom(c);
-	}
-
-	@Override
-	public String getName() {
-		return ("Local");
-	}
-
-	@Override
-	public void show(ExternalToolLocalInvocationMechanism invocationMechanism) {
-		this.invocationMechanism = invocationMechanism;
-		this.removeAll();
-		final JPanel innerPanel = new JPanel(new GridBagLayout());
-		final GridBagConstraints inputConstraint = new GridBagConstraints();
-//		inputConstraint.insets = new Insets(5,5,5,5);
-		inputConstraint.anchor = GridBagConstraints.FIRST_LINE_START;
-		inputConstraint.gridx = 0;
-		inputConstraint.gridy = 0;
-		inputConstraint.weightx = 0.1;
-		inputConstraint.fill = GridBagConstraints.BOTH;
-		innerPanel.add(new JLabel("Working directory: "), inputConstraint);
-		inputConstraint.gridx++;
-		directoryField.setText(invocationMechanism.getDirectory());
-		innerPanel.add(directoryField, inputConstraint);
-		inputConstraint.gridx = 0;
-		inputConstraint.gridy++;
-		innerPanel.add(new JLabel("Shell: "), inputConstraint);
-		inputConstraint.gridx++;
-		shellPrefixField.setText(invocationMechanism.getShellPrefix());
-		innerPanel.add(shellPrefixField, inputConstraint);
-		
-		inputConstraint.gridx = 0;
-		inputConstraint.gridy++;
-		innerPanel.add(new JLabel("Link command: "), inputConstraint);
-		inputConstraint.gridx++;
-		linkCommandField.setText(invocationMechanism.getLinkCommand());
-		innerPanel.add(linkCommandField, inputConstraint);
-		
-		inputConstraint.gridx = 0;
-		inputConstraint.gridy++;
-		innerPanel.add(new JLabel("Fetch data: "), inputConstraint);
-		inputConstraint.gridx++;
-		retrieveDataField.setSelected(invocationMechanism.isRetrieveData());
-		innerPanel.add(retrieveDataField, inputConstraint);
-		
-		this.add(innerPanel);
-	}
-
-	@Override
-	public ExternalToolLocalInvocationMechanism updateInvocationMechanism() {
-		if ((directoryField.getText() == null) || (directoryField.getText().length() == 0)) {
-			invocationMechanism.setDirectory(null);
-		} else {
-			invocationMechanism.setDirectory(directoryField.getText());
-		}
-		if ((shellPrefixField.getText() == null) || (shellPrefixField.getText().length() == 0)) {
-			invocationMechanism.setShellPrefix(null);
-		} else {
-			invocationMechanism.setShellPrefix(shellPrefixField.getText());
-		}
-		if ((shellPrefixField.getText() == null) || (shellPrefixField.getText().length() == 0)) {
-			invocationMechanism.setShellPrefix(null);
-		} else {
-			invocationMechanism.setShellPrefix(shellPrefixField.getText());
-		}
-		if ((linkCommandField.getText() == null) || (linkCommandField.getText().length() == 0)) {
-			invocationMechanism.setLinkCommand(null);
-		} else {
-			invocationMechanism.setLinkCommand(linkCommandField.getText());
-		}
-		invocationMechanism.setRetrieveData(retrieveDataField.isSelected());
-		return invocationMechanism;
-	}
-
-	@Override
-	public InvocationMechanism createMechanism(String mechanismName) {
-		ExternalToolLocalInvocationMechanism result = new ExternalToolLocalInvocationMechanism();
-		result.setName(mechanismName);
-		return(result);
-	}
-
-	public boolean isSingleton() {
-		return true;
-	}
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/ssh/ExternalToolSshNodeViewer.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/ssh/ExternalToolSshNodeViewer.java
deleted file mode 100644
index fb837c5..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/ssh/ExternalToolSshNodeViewer.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/**
- * 
- */
-package net.sf.taverna.t2.activities.externaltool.manager.ssh;
-
-import javax.swing.JCheckBox;
-import javax.swing.JTextField;
-
-import net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanism;
-
-import de.uni_luebeck.inb.knowarc.usecases.invocation.ssh.SshNode;
-
-
-
-/**
- * @author alanrw
- *
- */
-public class ExternalToolSshNodeViewer {
-	
-	private JTextField hostnameField;
-	private JTextField portField;
-	private JTextField directoryField;
-	private JTextField linkCommandField;
-	private JTextField copyCommandField;
-	private JCheckBox retrieveDataField;
-
-	public ExternalToolSshNodeViewer(SshNode node) {
-		this();
-		hostnameField.setText(node.getHost());
-		portField.setText(Integer.toString(node.getPort()));
-		if (node.getDirectory() != null) {
-			directoryField.setText(node.getDirectory());
-		} else {
-			directoryField.setText("");
-		}
-		if (node.getLinkCommand() != null) {
-			linkCommandField.setText(node.getLinkCommand());
-		} else {
-			linkCommandField.setText("");
-		}
-		if (node.getCopyCommand() != null) {
-			copyCommandField.setText(node.getCopyCommand());
-		} else {
-			copyCommandField.setText("");
-		}
-		retrieveDataField.setSelected(node.isRetrieveData());
-	}
-
-	public ExternalToolSshNodeViewer() {
-		hostnameField = new JTextField(30);
-		hostnameField.setText(SshNode.DEFAULT_HOST);
-		portField = new JTextField(3);
-		portField.setText("" + SshNode.DEFAULT_PORT);
-		directoryField = new JTextField(30);
-		directoryField.setText(SshNode.DEFAULT_DIRECTORY);
-		linkCommandField = new JTextField(30);
-		linkCommandField.setText(InvocationMechanism.UNIX_LINK);
-		copyCommandField = new JTextField(30);
-		copyCommandField.setText(InvocationMechanism.UNIX_COPY);
-		retrieveDataField = new JCheckBox();
-	}
-
-	public JTextField getHostnameField() {
-		return hostnameField;
-	}
-
-	public JTextField getPortField() {
-		return portField;
-	}
-	
-	public JTextField getDirectoryField() {
-		return directoryField;
-	}
-
-	public JTextField getLinkCommandField() {
-		return linkCommandField;
-	}
-
-	public JTextField getCopyCommandField() {
-		return copyCommandField;
-	}
-
-	public String getHostname() {
-		return hostnameField.getText();
-	}
-
-	public int getPort() {
-		return Integer.parseInt(portField.getText());
-	}
-	
-	public String getDirectory() {
-		return directoryField.getText();
-	}
-	
-	public String getLinkCommand() {
-		return linkCommandField.getText();
-	}
-	
-	public String getCopyCommand() {
-		return copyCommandField.getText();
-	}
-
-	/**
-	 * @return the retrieveDataField
-	 */
-	public JCheckBox getRetrieveDataField() {
-		return retrieveDataField;
-	}
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/ssh/SshInvocationMechanismEditor.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/ssh/SshInvocationMechanismEditor.java
deleted file mode 100644
index e8291ed..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/manager/ssh/SshInvocationMechanismEditor.java
+++ /dev/null
@@ -1,234 +0,0 @@
-/**
- * 
- */
-package net.sf.taverna.t2.activities.externaltool.manager.ssh;
-
-import java.awt.Color;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.Insets;
-import java.awt.event.ActionEvent;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.swing.AbstractAction;
-import javax.swing.BorderFactory;
-import javax.swing.JButton;
-import javax.swing.JCheckBox;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JTextField;
-import javax.swing.border.CompoundBorder;
-
-import net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanism;
-import net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanismEditor;
-import net.sf.taverna.t2.activities.externaltool.ssh.ExternalToolSshInvocationMechanism;
-import net.sf.taverna.t2.lang.ui.DeselectingButton;
-import de.uni_luebeck.inb.knowarc.usecases.invocation.ssh.SshNode;
-import de.uni_luebeck.inb.knowarc.usecases.invocation.ssh.SshNodeFactory;
-
-/**
- * @author alanrw
- *
- */
-public final class SshInvocationMechanismEditor extends
-		InvocationMechanismEditor<ExternalToolSshInvocationMechanism> {
-	
-	private ArrayList<ExternalToolSshNodeViewer> nodeViewers = new ArrayList<ExternalToolSshNodeViewer>();
-	private int inputGridy = 0;
-	
-	private ExternalToolSshInvocationMechanism mechanism = null;
-	
-	private static Insets insets = new Insets(1,5,1,5);
-	
-	private static CompoundBorder border = BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(5,5,5,5), BorderFactory.createLineBorder(Color.BLACK, 1));
-
-	@Override
-	public boolean canShow(Class<?> c) {
-		return ExternalToolSshInvocationMechanism.class.isAssignableFrom(c);
-	}
-
-	@Override
-	public void show(ExternalToolSshInvocationMechanism invocationMechanism) {
-		mechanism = invocationMechanism;
-		this.removeAll();
-		inputGridy = 1;
-		final JPanel innerPanel = new JPanel(new GridBagLayout());
-
-		final GridBagConstraints inputConstraint = new GridBagConstraints();
-		inputConstraint.anchor = GridBagConstraints.FIRST_LINE_START;
-		inputConstraint.gridx = 0;
-		inputConstraint.gridy = 0;
-		inputConstraint.weightx = 0.1;
-		inputConstraint.fill = GridBagConstraints.BOTH;
-
-		inputConstraint.gridx = 0;
-			nodeViewers.clear();
-			for (SshNode node : invocationMechanism.getNodes()) {
-				ExternalToolSshNodeViewer nodeViewer = new ExternalToolSshNodeViewer(node);
-				addNodeViewer(this, innerPanel, nodeViewer);
-			}
-
-		this.setLayout(new GridBagLayout());
-		GridBagConstraints outerPanelConstraint = new GridBagConstraints();
-		outerPanelConstraint.gridx = 0;
-		outerPanelConstraint.gridy = 0;
-		outerPanelConstraint.weightx = 0.1;
-		outerPanelConstraint.weighty = 0.1;
-		outerPanelConstraint.fill = GridBagConstraints.BOTH;
-		this.add(new JScrollPane(innerPanel),
-				outerPanelConstraint);
-		outerPanelConstraint.weighty = 0;
-		final JButton addHostButton = new DeselectingButton("Add host",
-				new AbstractAction() {
-			public void actionPerformed(ActionEvent e) {
-
-				ExternalToolSshNodeViewer newViewer = new ExternalToolSshNodeViewer();
-
-					addNodeViewer(SshInvocationMechanismEditor.this, innerPanel, newViewer);
-					innerPanel.revalidate();
-					innerPanel.repaint();
-			}
-
-		});
-		JPanel buttonPanel = new JPanel();
-		buttonPanel.setLayout(new GridBagLayout());
-
-		JPanel filler = new JPanel();
-		outerPanelConstraint.weightx = 0.1;
-		outerPanelConstraint.weighty = 0;
-		outerPanelConstraint.gridx = 0;
-		outerPanelConstraint.gridy = 0;
-
-		buttonPanel.add(filler, outerPanelConstraint);
-
-		outerPanelConstraint.weightx = 0;
-		outerPanelConstraint.weighty = 0;
-		outerPanelConstraint.gridx = 1;
-		outerPanelConstraint.gridy = 0;
-
-		buttonPanel.add(addHostButton, outerPanelConstraint);
-
-		outerPanelConstraint.weightx = 0;
-		outerPanelConstraint.weighty = 0;
-		outerPanelConstraint.gridx = 0;
-		outerPanelConstraint.gridy = 1;
-		outerPanelConstraint.fill = GridBagConstraints.BOTH;
-		this.add(buttonPanel, outerPanelConstraint);
-	}
-
-	protected void addNodeViewer(final JPanel result, final JPanel innerPanel,
-			ExternalToolSshNodeViewer viewer) {
-		final JPanel subPanel = new JPanel();
-		subPanel.setLayout(new GridBagLayout());
-		subPanel.setBorder(border);
-		final GridBagConstraints inputConstraint = new GridBagConstraints();
-		inputConstraint.insets = insets;
-		inputConstraint.anchor = GridBagConstraints.FIRST_LINE_START;
-		inputConstraint.weightx = 0.1;
-		inputConstraint.fill = GridBagConstraints.BOTH;
-
-		inputConstraint.gridy = 0 ;
-		inputConstraint.gridx = 0;
-		
-		subPanel.add(new JLabel("Host: "), inputConstraint);
-		final JTextField hostnameField = viewer.getHostnameField();
-		inputConstraint.gridx++;
-		subPanel.add(hostnameField, inputConstraint);
-
-		inputConstraint.gridy++ ;
-		inputConstraint.gridx = 0;
-		subPanel.add(new JLabel("Port: "), inputConstraint);
-		final JTextField portField = viewer.getPortField();
-		inputConstraint.gridx++;
-		subPanel.add(portField ,inputConstraint);
-		
-		inputConstraint.gridy++ ;
-		inputConstraint.gridx = 0;
-		subPanel.add(new JLabel("Working directory: "), inputConstraint);
-		final JTextField directoryField = viewer.getDirectoryField();
-		inputConstraint.gridx++;
-		subPanel.add(directoryField ,inputConstraint);
-		
-		inputConstraint.gridy++ ;
-		inputConstraint.gridx = 0;
-		subPanel.add(new JLabel("Link command: "), inputConstraint);
-		final JTextField linkCommandField = viewer.getLinkCommandField();
-		inputConstraint.gridx++;
-		subPanel.add(linkCommandField ,inputConstraint);
-
-		inputConstraint.gridy++ ;
-		inputConstraint.gridx = 0;
-		subPanel.add(new JLabel("Copy command: "), inputConstraint);
-		final JTextField copyCommandField = viewer.getCopyCommandField();
-		inputConstraint.gridx++;
-		subPanel.add(copyCommandField ,inputConstraint);
-
-		inputConstraint.gridy++ ;
-		inputConstraint.gridx = 0;
-		subPanel.add(new JLabel("Fetch data: "), inputConstraint);
-		inputConstraint.gridx++;
-		final JCheckBox retrieveDataField = viewer.getRetrieveDataField();
-		subPanel.add(retrieveDataField ,inputConstraint);
-
-		inputConstraint.gridy++ ;
-		inputConstraint.gridx = 1;
-		inputConstraint.fill = GridBagConstraints.NONE;
-		inputConstraint.anchor = GridBagConstraints.EAST;
-		final ExternalToolSshNodeViewer v = viewer;
-		final JButton removeButton = new DeselectingButton("Remove",
-				new AbstractAction() {
-
-			public void actionPerformed(ActionEvent e) {
-				synchronized(nodeViewers) {
-					nodeViewers.remove(v);
-				}
-				innerPanel.remove(subPanel);
-				innerPanel.revalidate();
-				innerPanel.repaint();
-				result.revalidate();
-				result.repaint();
-			}
-
-		});
-		subPanel.add(removeButton, inputConstraint);
-		
-		inputConstraint.gridy = ++inputGridy;
-		innerPanel.add(subPanel, inputConstraint);
-
-		nodeViewers.add(viewer);
-		inputGridy++;		
-	}
-
-	private List<SshNode> getNodeList() {
-		List<SshNode> result = new ArrayList<SshNode>();
-		for (ExternalToolSshNodeViewer viewer : nodeViewers) {
-			SshNode node = SshNodeFactory.getInstance().getSshNode(viewer.getHostname(), viewer.getPort(), viewer.getDirectory());
-			node.setLinkCommand(viewer.getLinkCommand());
-			node.setCopyCommand(viewer.getCopyCommand());
-			node.setRetrieveData(viewer.getRetrieveDataField().isSelected());
-			result.add(node);
-		}
-		return result;
-	}
-
-	@Override
-	public ExternalToolSshInvocationMechanism updateInvocationMechanism() {
-		mechanism.setNodes(getNodeList());
-		return mechanism;
-	}
-
-	@Override
-	public InvocationMechanism createMechanism(String mechanismName) {
-		ExternalToolSshInvocationMechanism result = new ExternalToolSshInvocationMechanism();
-		result.setName(mechanismName);
-		return result;
-	}
-
-	@Override
-	public String getName() {
-		return ("SSH");
-	}
-
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/menu/AddExternalToolContextualMenuAction.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/menu/AddExternalToolContextualMenuAction.java
deleted file mode 100644
index 505546d..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/menu/AddExternalToolContextualMenuAction.java
+++ /dev/null
@@ -1,111 +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.activities.externaltool.menu;

-

-import java.awt.event.ActionEvent;

-import java.net.URI;

-

-import javax.swing.AbstractAction;

-import javax.swing.Action;

-

-import net.sf.taverna.t2.activities.externaltool.ExternalToolActivity;

-import net.sf.taverna.t2.activities.externaltool.servicedescriptions.ExternalToolTemplateServiceDescription;

-import net.sf.taverna.t2.ui.menu.AbstractContextualMenuAction;

-import net.sf.taverna.t2.ui.menu.MenuManager;

-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;

-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.workflowview.WorkflowView;

-import net.sf.taverna.t2.workflowmodel.Dataflow;

-

-import org.apache.log4j.Logger;

-

-/**

- * An action to add an external tool + a wrapping processor to the workflow.

- *

- * @author Alex Nenadic

- * @author Alan Williamns

- *

- */

-@SuppressWarnings("serial")

-public class AddExternalToolContextualMenuAction extends AbstractContextualMenuAction {

-

-	private static final String ADD_EXTERNAL_TOOL = "Tool";

-

-	private static final URI insertSection = URI

-			.create("http://taverna.sf.net/2009/contextMenu/insert");

-

-	private static Logger logger = Logger.getLogger(AddExternalToolMenuAction.class);

-

-	private EditManager editManager;

-

-	private MenuManager menuManager;

-

-	private SelectionManager selectionManager;

-

-	private ActivityIconManager activityIconManager;

-

-	public AddExternalToolContextualMenuAction() {

-		super(insertSection, 900);

-	}

-

-	@Override

-	public boolean isEnabled() {

-		return super.isEnabled() && getContextualSelection().getSelection() instanceof Dataflow;

-	}

-

-	@Override

-	protected Action createAction() {

-

-		return new AddExternalToolAction();

-	}

-

-	protected class AddExternalToolAction extends AbstractAction {

-		AddExternalToolAction() {

-			super(ADD_EXTERNAL_TOOL, activityIconManager.iconForActivity(

-					new ExternalToolActivity()));

-		}

-

-		public void actionPerformed(ActionEvent e) {

-			WorkflowView.importServiceDescription(

-					ExternalToolTemplateServiceDescription.getServiceDescription(), false,

-					editManager, menuManager, selectionManager);

-		}

-	}

-

-	public void setEditManager(EditManager editManager) {

-		this.editManager = editManager;

-	}

-

-	public void setMenuManager(MenuManager menuManager) {

-		this.menuManager = menuManager;

-	}

-

-	public void setSelectionManager(SelectionManager selectionManager) {

-		this.selectionManager = selectionManager;

-	}

-

-	public void setActivityIconManager(ActivityIconManager activityIconManager) {

-		this.activityIconManager = activityIconManager;

-	}

-

-}

diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/menu/AddExternalToolMenuAction.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/menu/AddExternalToolMenuAction.java
deleted file mode 100644
index ff1f11e..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/menu/AddExternalToolMenuAction.java
+++ /dev/null
@@ -1,111 +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.activities.externaltool.menu;

-

-import java.awt.event.ActionEvent;

-import java.awt.event.InputEvent;

-import java.awt.event.KeyEvent;

-import java.net.URI;

-

-import javax.swing.Action;

-import javax.swing.KeyStroke;

-

-import net.sf.taverna.t2.activities.externaltool.ExternalToolActivity;

-import net.sf.taverna.t2.activities.externaltool.servicedescriptions.ExternalToolTemplateServiceDescription;

-import net.sf.taverna.t2.ui.menu.AbstractMenuAction;

-import net.sf.taverna.t2.ui.menu.DesignOnlyAction;

-import net.sf.taverna.t2.ui.menu.MenuManager;

-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;

-import net.sf.taverna.t2.workbench.edits.EditManager;

-import net.sf.taverna.t2.workbench.selection.SelectionManager;

-import net.sf.taverna.t2.workbench.ui.workflowview.WorkflowView;

-import net.sf.taverna.t2.workbench.views.graph.menu.InsertMenu;

-

-import org.apache.log4j.Logger;

-

-/**

- * An action to add a externaltool activity + a wrapping processor to the workflow.

- *

- * @author Alex Nenadic

- * @author alanrw

- *

- */

-@SuppressWarnings("serial")

-public class AddExternalToolMenuAction extends AbstractMenuAction {

-

-	private static final String ADD_EXTERNAL_TOOL = "Tool";

-

-	private static final URI ADD_EXTERNAL_TOOL_URI = URI

-	.create("http://taverna.sf.net/2008/t2workbench/menu#graphMenuAddExternalTool");

-

-	private static Logger logger = Logger

-			.getLogger(AddExternalToolMenuAction.class);

-

-	private EditManager editManager;

-	private MenuManager menuManager;

-	private SelectionManager selectionManager;

-

-	private ActivityIconManager activityIconManager;

-

-	public AddExternalToolMenuAction() {

-		super(InsertMenu.INSERT, 900, ADD_EXTERNAL_TOOL_URI);

-	}

-

-	@Override

-	protected Action createAction() {

-

-		return new AddExternalToolAction();

-	}

-

-	protected class AddExternalToolAction extends DesignOnlyAction {

-		AddExternalToolAction () {

-			super ();

-			putValue(SMALL_ICON, activityIconManager.iconForActivity(

-					new ExternalToolActivity()));

-			putValue(NAME, ADD_EXTERNAL_TOOL);

-			putValue(SHORT_DESCRIPTION, "Tool");

-			putValue(Action.ACCELERATOR_KEY,

-					KeyStroke.getKeyStroke(KeyEvent.VK_T, InputEvent.SHIFT_DOWN_MASK | InputEvent.ALT_DOWN_MASK));

-		}

-

-		public void actionPerformed(ActionEvent e) {

-			WorkflowView.importServiceDescription(ExternalToolTemplateServiceDescription.getServiceDescription(),

-			false, editManager, menuManager, selectionManager);

-		}

-	}

-

-	public void setEditManager(EditManager editManager) {

-		this.editManager = editManager;

-	}

-

-	public void setMenuManager(MenuManager menuManager) {

-		this.menuManager = menuManager;

-	}

-

-	public void setSelectionManager(SelectionManager selectionManager) {

-		this.selectionManager = selectionManager;

-	}

-

-	public void setActivityIconManager(ActivityIconManager activityIconManager) {

-		this.activityIconManager = activityIconManager;

-	}

-

-}

diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/menu/ConfigureExternalToolMenuAction.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/menu/ConfigureExternalToolMenuAction.java
deleted file mode 100644
index f57b25c..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/menu/ConfigureExternalToolMenuAction.java
+++ /dev/null
@@ -1,69 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2010 Hajo Nils Krabbenhoeft, spratpix GmbH & Co. KG
- *
- *  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.activities.externaltool.menu;
-
-import javax.swing.Action;
-
-import net.sf.taverna.t2.activities.externaltool.ExternalToolActivity;
-import net.sf.taverna.t2.activities.externaltool.actions.ExternalToolActivityConfigureAction;
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;
-import net.sf.taverna.t2.workbench.activitytools.AbstractConfigureActivityMenuAction;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.file.FileManager;
-
-/**
- * This class adds the plugin configuration action to the context menu of every use case activity.
- *
- * @author Hajo Nils Krabbenhoeft
- */
-public class ConfigureExternalToolMenuAction extends
-		AbstractConfigureActivityMenuAction<ExternalToolActivity> {
-
-	private EditManager editManager;
-	private FileManager fileManager;
-	private ActivityIconManager activityIconManager;
-
-	public ConfigureExternalToolMenuAction() {
-		super(ExternalToolActivity.class);
-	}
-
-	@Override
-	protected Action createAction() {
-		ExternalToolActivityConfigureAction configAction = new ExternalToolActivityConfigureAction(
-				findActivity(), getParentFrame(), editManager, fileManager, activityIconManager);
-		addMenuDots(configAction);
-		return configAction;
-	}
-
-	public void setEditManager(EditManager editManager) {
-		this.editManager = editManager;
-	}
-
-	public void setFileManager(FileManager fileManager) {
-		this.fileManager = fileManager;
-	}
-
-	public void setActivityIconManager(ActivityIconManager activityIconManager) {
-		this.activityIconManager = activityIconManager;
-	}
-
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/menu/FeedbackMenuAction.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/menu/FeedbackMenuAction.java
deleted file mode 100644
index 8c7a284..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/menu/FeedbackMenuAction.java
+++ /dev/null
@@ -1,82 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2010 Hajo Nils Krabbenhoeft, spratpix GmbH & Co. KG
- *
- *  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.activities.externaltool.menu;
-
-import java.awt.Desktop;
-import java.awt.event.ActionEvent;
-import java.io.IOException;
-import java.net.URI;
-
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-import javax.swing.Icon;
-import javax.swing.JOptionPane;
-
-import net.sf.taverna.t2.ui.menu.AbstractMenuAction;
-
-import org.apache.log4j.Logger;
-
-/**
- * This class adds the feedback item to the context menu of every use case
- * activity.
- *
- * @author Hajo Nils Krabbenhoeft
- */
-public class FeedbackMenuAction extends AbstractMenuAction {
-
-	private static Logger logger = Logger.getLogger(FeedbackMenuAction.class);
-
-
-	private static final URI feedbackSection = URI.create("http://taverna.sf.net/2009/contextMenu/configure");
-
-	public FeedbackMenuAction() {
-		super(feedbackSection, 51);
-	}
-
-	protected Action createAction() {
-	    // final ImageIcon icon = KnowARCConfigurationFactory.getConfiguration().getIcon();
-		return new SendFeedbackAction("Send Feedback...", null);
-	}
-
-	private final class SendFeedbackAction extends AbstractAction {
-		private static final long serialVersionUID = 1L;
-
-		private static final String errTitle = "Could not open web browser for feedback:";
-		private static final String feedbackUrl = "http://www.taverna.org.uk/about/contact-us/feedback?product=ExternalToolService";
-
-		private SendFeedbackAction(String name, Icon icon) {
-			super(name, icon);
-		}
-
-		public void actionPerformed(ActionEvent e) {
-			if (Desktop.isDesktopSupported()) {
-				try {
-					Desktop.getDesktop().browse(URI.create(feedbackUrl));
-				} catch (IOException e1) {
-					JOptionPane.showMessageDialog(null, feedbackUrl + "\n" + e1.getLocalizedMessage(), errTitle, JOptionPane.ERROR_MESSAGE);
-				}
-			} else {
-				JOptionPane.showMessageDialog(null, "Go to " + feedbackUrl, errTitle, JOptionPane.ERROR_MESSAGE);
-			}
-		}
-	}
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/servicedescriptions/AddExternalToolServiceDialog.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/servicedescriptions/AddExternalToolServiceDialog.java
deleted file mode 100644
index 86b0882..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/servicedescriptions/AddExternalToolServiceDialog.java
+++ /dev/null
@@ -1,189 +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.activities.externaltool.servicedescriptions;
-
-import java.awt.BorderLayout;
-import java.awt.FlowLayout;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.Insets;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.KeyEvent;
-import java.io.IOException;
-import java.net.URL;
-import java.net.URLConnection;
-
-import javax.swing.JButton;
-import javax.swing.JDialog;
-import javax.swing.JLabel;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JTextField;
-import javax.swing.border.EmptyBorder;
-
-import net.sf.taverna.t2.workbench.MainWindow;
-import net.sf.taverna.t2.workbench.helper.HelpEnabledDialog;
-
-import org.apache.log4j.Logger;
-
-/**
- * Dialog that lets user specify a URL of a Tool service they want 
- * to add to the Service Panel. In the case the Tool URL is behind
- * HTTPS or service's endpoints require HTTPS it will ask user to confirm
- * if they want to trust it. 
- * 
- * @author Alex Nenadic
- *
- */
-@SuppressWarnings("serial")
-public abstract class AddExternalToolServiceDialog extends HelpEnabledDialog {
-
-	private JTextField toolLocationField;
-	private Logger logger = Logger.getLogger(AddExternalToolServiceDialog.class);
-
-	public AddExternalToolServiceDialog()  {
-		super(MainWindow.getMainWindow(), "Add tool service", true, null); // create a non-modal dialog
-		initComponents();
-		setLocationRelativeTo(getParent());
-	}
-
-	private void initComponents() {
-		JPanel mainPanel = new JPanel(new GridBagLayout());
-		mainPanel.setBorder(new EmptyBorder(10,10,10,10));
-		
-		JLabel toolLocatitionLabel = new JLabel("Tool registry location",ExternalToolActivityIcon.getExternalToolIcon(), JLabel.LEFT);		
-		GridBagConstraints gbc = new GridBagConstraints();
-		gbc.weighty = 0.0;
-		
-		gbc.weightx = 0.0;
-		gbc.gridx = 0;
-		gbc.gridy = 0;
-		gbc.fill = GridBagConstraints.NONE;
-		gbc.anchor = GridBagConstraints.WEST;
-		gbc.insets = new Insets(5, 10, 0, 0);
-		mainPanel.add(toolLocatitionLabel, gbc);
-        
-		toolLocationField = new JTextField("http://taverna.nordugrid.org/sharedRepository/xml.php");
-		gbc.weightx = 1.0;
-		gbc.gridx = 1;
-		gbc.gridy = 0;
-		gbc.fill = GridBagConstraints.HORIZONTAL;
-		gbc.anchor = GridBagConstraints.WEST;
-		gbc.insets = new Insets(5, 10, 0, 5);		
-		mainPanel.add(toolLocationField, gbc);
-		
-	    final JButton addServiceButton = new JButton("Add");
-	    addServiceButton.addActionListener(new ActionListener()
-	        {
-	            public void actionPerformed(ActionEvent evt)
-	            {
-	                addPressed();
-	            }
-	        });
-	    
-	    // When user presses "Return" key fire the action on the "Add" button
-	    addServiceButton.addKeyListener(new java.awt.event.KeyAdapter() {
-			public void keyPressed(java.awt.event.KeyEvent evt) {
-				if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
-					addPressed();
-				}
-			}
-		});
-		getRootPane().setDefaultButton(addServiceButton);
-	    
-        JPanel buttonsPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
-        buttonsPanel.add(addServiceButton);
-        
-        getContentPane().setLayout(new BorderLayout());
-        getContentPane().add(mainPanel, BorderLayout.CENTER);
-        getContentPane().add(buttonsPanel, BorderLayout.SOUTH);
-        
-		setSize(getPreferredSize());
-        pack();
-	}
-	
-    /**
-     * 'Add service' button pressed or otherwise activated.
-     */
-    private void addPressed()
-    {
-		final String toolURLString = toolLocationField.getText().trim();
-		new Thread("Adding tool " + toolURLString) {
-			public void run() {
-				// Only add the service provider for this service if service URL
-				// starts with 'http'
-				// or if it starts with 'https' and user explicitly said they
-				// wanted to trust this service.
-				/*
-				 * if (shouldTrust(toolURLString)){ addRegistry(toolURLString);
-				 * }
-				 */
-				try {
-					URL url = new URL(toolURLString);
-					URLConnection connection = url.openConnection();
-					try {
-						// If the url starts with 'https' - security hook for
-						// https connection's trust manager
-						// will be engaged and user will be asked automatically
-						// if they want
-						// to trust the connection (if it is not already
-						// trusted). If the urls starts with 'http' -
-						// this will not have any effect apart from checking if
-						// we can open a connection.
-						connection.connect(); // if this does not fail - add the
-						// tool
-						// service provider for this service to
-						// the registry
-					} finally {
-						try {
-							connection.getInputStream().close();
-						} catch (IOException ex) {
-						}
-					}
-					addRegistry(toolURLString);
-				} catch (Exception ex) { // anything failed
-					JOptionPane.showMessageDialog(null,
-							"Could not read the tool descriptions from "
-									+ toolURLString + ":\n" + ex,
-							"Could not add tool service",
-							JOptionPane.ERROR_MESSAGE);
-
-					logger.error(
-							"Failed to add tool description provider for service: "
-									+ toolURLString, ex);
-
-				}
-			};
-		}.start();
-		closeDialog();
-    }
-
-	protected abstract void addRegistry(String tool);	
-	
-	/**
-	 * Closes the dialog.
-	 */
-	private void closeDialog() {
-		setVisible(false);
-		dispose();
-	}
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/servicedescriptions/ExternalToolActivityIcon.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/servicedescriptions/ExternalToolActivityIcon.java
deleted file mode 100644
index f91755f..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/servicedescriptions/ExternalToolActivityIcon.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2009 Hajo Nils Krabbenhoeft, INB, University of Luebeck
- *
- *  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.activities.externaltool.servicedescriptions;
-
-import java.awt.Color;
-
-import javax.swing.Icon;
-import javax.swing.ImageIcon;
-
-import net.sf.taverna.t2.activities.externaltool.ExternalToolActivity;
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI;
-import net.sf.taverna.t2.workbench.configuration.colour.ColourManager;
-import net.sf.taverna.t2.workflowmodel.processor.activity.Activity;
-
-/**
- * This class provides an icon for the use case activity.
- *
- * @author Hajo Nils Krabbenhoeft
- */
-public class ExternalToolActivityIcon implements ActivityIconSPI {
-
-	private static final String PROCESSOR_COLOUR_STRING = "#F28C55";
-
-	private static Icon icon;
-
-	public int canProvideIconScore(Activity<?> activity) {
-		if (activity.getClass().getName().equals(ExternalToolActivity.class.getName()))
-			return DEFAULT_ICON + 1;
-		else
-			return NO_ICON;
-	}
-
-	public Icon getIcon(Activity<?> activity) {
-		return getExternalToolIcon();
-	}
-
-	public static Icon getExternalToolIcon() {
-		if (icon == null) {
-			icon = new ImageIcon(ExternalToolActivityIcon.class.getResource("/externaltool.png"));
-		}
-		return icon;
-	}
-
-	public static String getColourString() {
-		return PROCESSOR_COLOUR_STRING;
-	}
-
-	public void setColourManager(ColourManager colourManager) {
-		// set colour for XPath processors in the workflow diagram
-		colourManager.setPreferredColour(ExternalToolActivity.class.getCanonicalName(),
-				Color.decode(PROCESSOR_COLOUR_STRING));
-	}
-
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/servicedescriptions/ExternalToolServiceDescription.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/servicedescriptions/ExternalToolServiceDescription.java
deleted file mode 100644
index 02c2bf6..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/servicedescriptions/ExternalToolServiceDescription.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2009 Hajo Nils Krabbenhoeft, INB, University of Luebeck   
- * 
- *  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.activities.externaltool.servicedescriptions;
-
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import javax.swing.Icon;
-import javax.swing.ImageIcon;
-
-import org.apache.log4j.Logger;
-
-import net.sf.taverna.t2.activities.externaltool.ExternalToolActivity;
-import net.sf.taverna.t2.activities.externaltool.ExternalToolActivityConfigurationBean;
-import net.sf.taverna.t2.activities.externaltool.manager.InvocationGroupManager;
-import net.sf.taverna.t2.activities.externaltool.manager.impl.InvocationGroupManagerImpl;
-import net.sf.taverna.t2.activities.externaltool.views.ExternalToolConfigView;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescription;
-import net.sf.taverna.t2.workflowmodel.processor.activity.Activity;
-import de.uni_luebeck.inb.knowarc.usecases.UseCaseDescription;
-
-/**
- * ExternalToolServiceDescription stores the repository URL and the use case id so
- * that it can create an ExternalToolActivityConfigurationBean
- * 
- * @author Hajo Nils Krabbenhoeft
- */
-public class ExternalToolServiceDescription extends ServiceDescription<ExternalToolActivityConfigurationBean> {
-	
-	private static Logger logger = Logger
-	.getLogger(ExternalToolServiceDescription.class);
-
-	
-	private static InvocationGroupManager manager = InvocationGroupManagerImpl.getInstance();
-
-	private String repositoryUrl;
-	private String externaltoolid;
-	private UseCaseDescription useCaseDescription;
-
-	public String getRepositoryUrl() {
-		return repositoryUrl;
-	}
-
-	public void setRepositoryUrl(String repositoryUrl) {
-		this.repositoryUrl = repositoryUrl;
-	}
-
-	public String getExternaltoolid() {
-		return externaltoolid;
-	}
-
-	public void setExternaltoolid(String externaltoolid) {
-		this.externaltoolid = externaltoolid;
-	}
-
-	public Icon getIcon() {
-		if (useCaseDescription != null) {
-			String icon_url = useCaseDescription.getIcon_url();
-			if ((icon_url != null) && !icon_url.isEmpty() && !icon_url.endsWith(".ico"))
-				try {
-					ImageIcon result = new ImageIcon(new URL(icon_url));
-					if ((result != null) && (result.getIconHeight() != 0) && (result.getIconWidth() != 0)){
-						return result;
-					}
-				} catch (MalformedURLException e) {
-					logger.error("Problematic URL" + icon_url, e);
-				}
-		}
-		return ExternalToolActivityIcon.getExternalToolIcon();
-	}
-
-	public Class<? extends Activity<ExternalToolActivityConfigurationBean>> getActivityClass() {
-		return ExternalToolActivity.class;
-	}
-
-	public ExternalToolActivityConfigurationBean getActivityConfiguration() {
-		ExternalToolActivityConfigurationBean bean = new ExternalToolActivityConfigurationBean();
-		bean.setRepositoryUrl(repositoryUrl);
-		bean.setExternaltoolid(externaltoolid);
-		bean.setUseCaseDescription(useCaseDescription);
-		bean.setMechanism(manager.getDefaultMechanism());
-
-		return bean;
-	}
-
-	public String getName() {
-		return externaltoolid;
-	}
-
-	@SuppressWarnings("unchecked")
-	public List<? extends Comparable> getPath() {
-		List<String> result = new ArrayList<String>();
-		result.add("Tools decribed @ " + repositoryUrl);
-		String group = useCaseDescription.getGroup();
-		if ((group != null) && !group.isEmpty()) {
-			String[] groups = group.split(":");
-			for (String g : groups) {
-				result.add(g);
-			}
-		}
-		return result;
-	}
-
-	protected List<Object> getIdentifyingData() {
-		// we require use cases inside one XML file to have unique IDs, which
-		// means every externaltool is uniquely identified by its repository URL and
-		// its use case ID.
-		return Arrays.<Object> asList(repositoryUrl, externaltoolid);
-	}
-	
-	public String getDescription() {
-		if (useCaseDescription != null) {
-			String description = useCaseDescription.getDescription();
-			if (description == null) {
-				return "";
-			}
-			return description;
-		}
-		return "";
-	}
-
-	public void setUseCaseDescription(UseCaseDescription usecase) {
-		this.useCaseDescription = usecase;
-	}
-
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/servicedescriptions/ExternalToolServiceProvider.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/servicedescriptions/ExternalToolServiceProvider.java
deleted file mode 100644
index 4f3cbf2..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/servicedescriptions/ExternalToolServiceProvider.java
+++ /dev/null
@@ -1,132 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2009 Hajo Nils Krabbenhoeft, INB, University of Luebeck   
- * 
- *  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.activities.externaltool.servicedescriptions;
-
-import java.io.IOException;
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import javax.swing.Icon;
-
-import net.sf.taverna.t2.servicedescriptions.AbstractConfigurableServiceProvider;
-import net.sf.taverna.t2.servicedescriptions.CustomizedConfigurePanelProvider;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;
-import de.uni_luebeck.inb.knowarc.usecases.UseCaseDescription;
-import de.uni_luebeck.inb.knowarc.usecases.UseCaseEnumeration;
-
-/**
- * ExternalToolServiceProvider searches an use case repository XML for use case
- * descriptions.
- * 
- * @author Hajo Nils Krabbenhoeft
- */
-public class ExternalToolServiceProvider extends AbstractConfigurableServiceProvider<ExternalToolServiceProviderConfig>  implements
-CustomizedConfigurePanelProvider<ExternalToolServiceProviderConfig>{
-
-	private static final URI providerId = URI
-	.create("http://taverna.sf.net/2010/service-provider/externaltool");
-	
-	public ExternalToolServiceProvider() {
-		super(new ExternalToolServiceProviderConfig("http://taverna.nordugrid.org/sharedRepository/xml.php"));
-	}
-
-	public String getName() {
-		return "Tool service";
-	}
-
-	public List<ExternalToolServiceProviderConfig> getDefaultConfigurations() {
-		List<ExternalToolServiceProviderConfig> defaults = new ArrayList<ExternalToolServiceProviderConfig>();
-		// Disabled until sensible set
-//		defaults.add(new ExternalToolServiceProviderConfig("http://taverna.nordugrid.org/sharedRepository/xml.php"));
-		return defaults;
-	}
-
-	public void findServiceDescriptionsAsync(FindServiceDescriptionsCallBack callBack) {
-		String repositoryUrl = serviceProviderConfig.getRepositoryUrl();
-		callBack.status("Parsing use case repository:" + repositoryUrl);
-			// prepare a list of all use case descriptions which are stored in
-			// the given repository URL
-			List<UseCaseDescription> usecases = new ArrayList<UseCaseDescription> ();
-			try {
-				usecases = UseCaseEnumeration.readDescriptionsFromUrl(
-						repositoryUrl);
-			} catch (IOException e) {
-				callBack.fail("Unable to read tool descriptions", e);
-			}
-			callBack.status("Found " + usecases.size() + " use cases:" + repositoryUrl);
-			// convert all the UseCaseDescriptions in the XML file into
-			// ExternalToolServiceDescription items
-			List<ExternalToolServiceDescription> items = new ArrayList<ExternalToolServiceDescription>();
-			for (UseCaseDescription usecase : usecases) {
-				ExternalToolServiceDescription item = new ExternalToolServiceDescription();
-				item.setRepositoryUrl(repositoryUrl);
-				item.setExternaltoolid(usecase.getUsecaseid());
-				item.setUseCaseDescription(usecase);
-				items.add(item);
-			}
-			// we dont have streaming data loading or partial results, so return
-			// results and finish
-			callBack.partialResults(items);
-			callBack.finished();
-	}
-
-	@Override
-	public String toString() {
-		return getName() + " " + getConfiguration().getRepositoryUrl();
-	}
-
-	public Icon getIcon() {
-	    return ExternalToolActivityIcon.getExternalToolIcon();
-	}
-
-	@Override
-	protected List<? extends Object> getIdentifyingData() {
-		List<String> result;
-		// one can fully identify an use case repository by its URL
-		result = Arrays.asList(getConfiguration().getRepositoryUrl());
-		return result;
-	}
-
-	public void setServiceDescriptionRegistry(ServiceDescriptionRegistry registry) {
-	}
-	
-	@SuppressWarnings("serial")
-	public void createCustomizedConfigurePanel(final CustomizedConfigureCallBack<ExternalToolServiceProviderConfig> callBack) {
-			
-		AddExternalToolServiceDialog addWSDLServiceDialog = new AddExternalToolServiceDialog() {
-				@Override
-				protected void addRegistry(String externalToolURL) {
-					
-					ExternalToolServiceProviderConfig providerConfig = new ExternalToolServiceProviderConfig(externalToolURL);					
-					callBack.newProviderConfiguration(providerConfig);
-				}
-			};
-			addWSDLServiceDialog.setVisible(true);		
-	}
-
-
-	public String getId() {
-		return providerId.toString();
-	}
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/servicedescriptions/ExternalToolServiceProviderConfig.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/servicedescriptions/ExternalToolServiceProviderConfig.java
deleted file mode 100644
index 0967a6e..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/servicedescriptions/ExternalToolServiceProviderConfig.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2009 Hajo Nils Krabbenhoeft, INB, University of Luebeck   
- * 
- *  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.activities.externaltool.servicedescriptions;
-
-import net.sf.taverna.t2.lang.beans.PropertyAnnotated;
-import net.sf.taverna.t2.lang.beans.PropertyAnnotation;
-
-/**
- * ExternalToolServiceProviderConfig stores the URL of the use case repository XML file
- * 
- * @author Hajo Nils Krabbenhoeft
- */
-public class ExternalToolServiceProviderConfig extends PropertyAnnotated {
-	private String repositoryUrl;
-
-	public ExternalToolServiceProviderConfig() {
-	}
-
-	public ExternalToolServiceProviderConfig(String repositoryUrl) {
-		this.repositoryUrl = repositoryUrl;
-	}
-
-	@PropertyAnnotation(displayName = "Tool registry location", preferred = true)
-	public String getRepositoryUrl() {
-		return repositoryUrl;
-	}
-
-	public void setRepositoryUrl(String repositoryUrl) {
-		this.repositoryUrl = repositoryUrl;
-	}
-
-	@Override
-	public String toString() {
-		return repositoryUrl;
-	}
-
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/servicedescriptions/ExternalToolTemplateServiceDescription.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/servicedescriptions/ExternalToolTemplateServiceDescription.java
deleted file mode 100644
index 30ae3eb..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/servicedescriptions/ExternalToolTemplateServiceDescription.java
+++ /dev/null
@@ -1,77 +0,0 @@
-/**
- * 
- */
-package net.sf.taverna.t2.activities.externaltool.servicedescriptions;
-
-import java.net.URI;
-import java.util.UUID;
-
-import javax.swing.Icon;
-
-import de.uni_luebeck.inb.knowarc.usecases.UseCaseDescription;
-
-import net.sf.taverna.t2.activities.externaltool.ExternalToolActivity;
-import net.sf.taverna.t2.activities.externaltool.ExternalToolActivityConfigurationBean;
-import net.sf.taverna.t2.activities.externaltool.manager.InvocationGroupManager;
-import net.sf.taverna.t2.activities.externaltool.manager.impl.InvocationGroupManagerImpl;
-import net.sf.taverna.t2.servicedescriptions.AbstractTemplateService;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescription;
-import net.sf.taverna.t2.workflowmodel.processor.activity.Activity;
-
-/**
- * @author alanrw
- *
- */
-public class ExternalToolTemplateServiceDescription extends
-		AbstractTemplateService<ExternalToolActivityConfigurationBean> {
-	
-	private static final URI providerId = URI
-	.create("http://taverna.sf.net/2010/service-provider/external-tool");
-	
-	private static final String EXTERNAL_TOOL = "Tool";
-	
-	private static InvocationGroupManager manager = InvocationGroupManagerImpl.getInstance();
-
-	@Override
-	public Class<? extends Activity<ExternalToolActivityConfigurationBean>> getActivityClass() {
-		return ExternalToolActivity.class;
-	}
-
-	@Override
-	public ExternalToolActivityConfigurationBean getActivityConfiguration() {
-		ExternalToolActivityConfigurationBean result = new ExternalToolActivityConfigurationBean();
-		result.setExternaltoolid(UUID.randomUUID().toString());
-		result.setUseCaseDescription(new UseCaseDescription(""));
-		result.setMechanism(manager.getDefaultMechanism());
-		return result;
-	}
-
-	@Override
-	public Icon getIcon() {
-		return ExternalToolActivityIcon.getExternalToolIcon();
-	}
-	
-	@Override
-	public String getDescription() {
-		return "A service that allows tools to be used as services";	
-	}
-	
-	@SuppressWarnings("unchecked")
-	public static ServiceDescription getServiceDescription() {
-		ExternalToolTemplateServiceDescription bts = new ExternalToolTemplateServiceDescription();
-		return bts.templateService;
-	}
-
-
-
-	@Override
-	public String getId() {
-		return providerId.toString();
-	}
-
-	@Override
-	public String getName() {
-		return EXTERNAL_TOOL;
-	}
-
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/utils/Tools.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/utils/Tools.java
deleted file mode 100644
index 55cda5c..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/utils/Tools.java
+++ /dev/null
@@ -1,129 +0,0 @@
-/**
- * 
- */
-package net.sf.taverna.t2.activities.externaltool.utils;
-
-import java.awt.Color;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.Insets;
-import java.awt.event.ActionEvent;
-import java.util.List;
-import java.util.Map;
-
-import javax.swing.AbstractAction;
-import javax.swing.BorderFactory;
-import javax.swing.JButton;
-import javax.swing.JComponent;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.border.CompoundBorder;
-
-import de.uni_luebeck.inb.knowarc.usecases.ScriptInput;
-import de.uni_luebeck.inb.knowarc.usecases.ScriptInputUser;
-
-import net.sf.taverna.t2.lang.ui.DeselectingButton;
-
-/**
- * @author alanrw
- *
- */
-public class Tools {
-	
-	private static CompoundBorder border = BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(5,5,5,5), BorderFactory.createLineBorder(Color.BLACK, 1));
-	
-	private static Insets insets = new Insets(5,5,5,5);
-	
-	public static void addViewer(final JPanel innerPanel, String[] labels, JComponent[] elements,
-			final List viewerList, final Object viewer, final JPanel outerPanel) {
-		final JPanel subPanel = new JPanel();
-		subPanel.setLayout(new GridBagLayout());
-		subPanel.setBorder(border);
-		
-		final GridBagConstraints labelConstraint = new GridBagConstraints();
-		labelConstraint.insets = insets;
-		labelConstraint.anchor = GridBagConstraints.FIRST_LINE_START;
-		labelConstraint.fill = GridBagConstraints.BOTH;
-		labelConstraint.gridy = 0;
-		labelConstraint.gridx = 0;
-		labelConstraint.weightx = 0;
-
-		final GridBagConstraints elementConstraint = new GridBagConstraints();
-		elementConstraint.insets = insets;
-		elementConstraint.anchor = GridBagConstraints.FIRST_LINE_START;
-		elementConstraint.fill = GridBagConstraints.BOTH;
-		elementConstraint.gridy = 0;
-		elementConstraint.gridx = 1;
-		elementConstraint.weightx = 1.0;
-		
-		final GridBagConstraints removeConstraint = new GridBagConstraints();
-		removeConstraint.insets = insets;
-		removeConstraint.anchor = GridBagConstraints.FIRST_LINE_START;
-		removeConstraint.fill = GridBagConstraints.BOTH;
-		removeConstraint.gridx = 1;
-		removeConstraint.weightx = 0;
-		removeConstraint.fill = GridBagConstraints.NONE;
-		removeConstraint.anchor = GridBagConstraints.EAST;
-		
-		final GridBagConstraints subPanelConstraint = new GridBagConstraints();
-		subPanelConstraint.insets = insets;
-		subPanelConstraint.anchor = GridBagConstraints.FIRST_LINE_START;
-		subPanelConstraint.fill = GridBagConstraints.BOTH;
-		subPanelConstraint.gridx = 1;
-//		subPanelConstraint.gridy = ++stringReplacementGridy;
-		subPanelConstraint.weightx = 1.00;
-		subPanelConstraint.fill = GridBagConstraints.HORIZONTAL;
-		subPanelConstraint.anchor = GridBagConstraints.WEST;		
-		
-		for (int i = 0; i < labels.length; i++) {
-			subPanel.add(new JLabel(labels[i] + ":"), labelConstraint);
-			subPanel.add(elements[i], elementConstraint);
-			labelConstraint.gridy++;
-			elementConstraint.gridy++;
-		}
-		
-		removeConstraint.gridy = labelConstraint.gridy + 1;
-		final JButton removeButton = new DeselectingButton("Remove",
-				new AbstractAction() {
-
-			public void actionPerformed(ActionEvent e) {
-				synchronized (viewerList) {
-					viewerList.remove(viewer);
-				}
-				innerPanel.remove(subPanel);
-				innerPanel.revalidate();
-				innerPanel.repaint();
-				outerPanel.revalidate();
-				outerPanel.repaint();
-			}
-
-		});
-		subPanel.add(removeButton, removeConstraint);
-		innerPanel.add(subPanel, subPanelConstraint);
-	}
-	
-	public static boolean isStringReplacement(ScriptInputUser si) {
-		return !si.isList() && !si.isFile() && !si.isTempFile();
-	}
-	
-	public static boolean isInputFile(ScriptInputUser si) {
-		return !si.isList() && si.isFile();
-	}
-
-	public static boolean isFileList(ScriptInputUser si) {
-		return si.isList() && si.isFile();
-	}
-	
-	public static boolean isUnderstood(ScriptInputUser si) {
-		return isStringReplacement(si) || isInputFile(si) || isFileList(si);
-	}
-	
-	public static boolean areAllUnderstood(Map<String, ScriptInput> inputs) {
-		for (ScriptInput si : inputs.values()) {
-			if ((si instanceof ScriptInputUser) && !isUnderstood((ScriptInputUser) si)) {
-				return false;
-			}
-		}
-		return true;
-	}
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/AnnotationPanel.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/AnnotationPanel.java
deleted file mode 100644
index 83e75e8..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/AnnotationPanel.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/**
- * 
- */
-package net.sf.taverna.t2.activities.externaltool.views;
-
-import java.awt.BorderLayout;
-import java.awt.Component;
-import java.awt.FlowLayout;
-
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-
-/**
- * @author alanrw
- *
- */
-public class AnnotationPanel extends JPanel {
-	
-	public AnnotationPanel(Component nameField, Component descriptionArea, Component groupField) {
-		super();
-		this.setLayout(new BorderLayout());
-		JPanel subPanel = new JPanel(new BorderLayout());
-		JPanel namePanel = new JPanel();
-		namePanel.setLayout(new FlowLayout(FlowLayout.LEFT));
-		namePanel.add(new JLabel("Name: "));
-		namePanel.add(nameField);
-		subPanel.add(namePanel, BorderLayout.NORTH);
-		JPanel groupPanel = new JPanel();
-		groupPanel.setLayout(new FlowLayout(FlowLayout.LEFT));
-		groupPanel.add(new JLabel("Group: "));
-		groupPanel.add(groupField);
-		subPanel.add(groupPanel, BorderLayout.SOUTH);
-		this.add(subPanel, BorderLayout.NORTH);
-		JPanel descriptionPanel = new JPanel();
-		descriptionPanel.setLayout(new BorderLayout());
-		descriptionPanel.add(new JLabel("Description:"), BorderLayout.NORTH);
-		descriptionPanel.add(descriptionArea, BorderLayout.CENTER);
-		this.add(descriptionPanel, BorderLayout.CENTER);
-	}
-
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/EditablePanel.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/EditablePanel.java
deleted file mode 100644
index b395983..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/EditablePanel.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/**
- * 
- */
-package net.sf.taverna.t2.activities.externaltool.views;
-
-import java.awt.FlowLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.swing.AbstractAction;
-import javax.swing.JButton;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-
-import de.uni_luebeck.inb.knowarc.usecases.UseCaseDescription;
-import de.uni_luebeck.inb.knowarc.usecases.UseCaseEnumeration;
-
-import net.sf.taverna.t2.activities.externaltool.ExternalToolActivityConfigurationBean;
-import net.sf.taverna.t2.activities.externaltool.servicedescriptions.ExternalToolServiceDescription;
-import net.sf.taverna.t2.activities.externaltool.utils.Tools;
-import net.sf.taverna.t2.lang.ui.DeselectingButton;
-
-/**
- * @author alanrw
- *
- */
-public class EditablePanel extends JPanel {
-	public EditablePanel(final ExternalToolConfigView view) {
-		super(new FlowLayout());
-		
-		JButton update = new DeselectingButton("Update tool description",
-				new AbstractAction() {
-
-			@Override
-			public void actionPerformed(ActionEvent e) {
-				ExternalToolActivityConfigurationBean bean = view.getConfiguration();
-				String repositoryUrl = bean.getRepositoryUrl();
-				String id = bean.getExternaltoolid();
-				UseCaseDescription usecase = null;
-				try {
-					usecase = UseCaseEnumeration.readDescriptionFromUrl(
-						repositoryUrl, id);
-				}
-				catch (IOException ex) {
-					// Already logged
-				}
-				if (usecase != null) {
-					bean.setUseCaseDescription(usecase);
-					view.refreshConfiguration(bean);
-				} else {
-					JOptionPane.showMessageDialog(view, "Unable to find tool description " + id, "Missing tool description", JOptionPane.ERROR_MESSAGE);
-				}
-			}});
-		this.add(update);
-		
-		JButton makeEditable = new DeselectingButton("Edit tool description",
-				new AbstractAction() {
-
-			@Override
-			public void actionPerformed(ActionEvent arg0) {
-				ExternalToolActivityConfigurationBean config = view.makeConfiguration();
-				view.setEditable(true, config);
-				
-			}
-		});
-		makeEditable.setToolTipText("Edit the tool description");
-		if (Tools.areAllUnderstood(view.getConfiguration().getUseCaseDescription().getInputs())) {
-		this.add(makeEditable);
-		}
-		
-	}
-
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/ExternalToolActivityContextualView.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/ExternalToolActivityContextualView.java
deleted file mode 100644
index 46c14be..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/ExternalToolActivityContextualView.java
+++ /dev/null
@@ -1,181 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2010 Hajo Nils Krabbenhoeft, INB, University of Luebeck
- *
- *  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.activities.externaltool.views;
-
-import java.awt.Frame;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.TreeMap;
-
-import javax.swing.Action;
-
-import net.sf.taverna.t2.activities.externaltool.ExternalToolActivity;
-import net.sf.taverna.t2.activities.externaltool.ExternalToolActivityConfigurationBean;
-import net.sf.taverna.t2.activities.externaltool.actions.ExternalToolActivityConfigureAction;
-import net.sf.taverna.t2.activities.externaltool.servicedescriptions.ExternalToolActivityIcon;
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;
-import net.sf.taverna.t2.workbench.configuration.colour.ColourManager;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.file.FileManager;
-import net.sf.taverna.t2.workbench.ui.actions.activity.HTMLBasedActivityContextualView;
-import net.sf.taverna.t2.workflowmodel.processor.activity.Activity;
-import de.uni_luebeck.inb.knowarc.usecases.ScriptInput;
-import de.uni_luebeck.inb.knowarc.usecases.ScriptInputStatic;
-import de.uni_luebeck.inb.knowarc.usecases.ScriptOutput;
-import de.uni_luebeck.inb.knowarc.usecases.UseCaseDescription;
-
-/**
- * ExternalToolActivityContextualView displays the use case information in a HTML table. Currently,
- * this is only the use case ID.
- *
- * @author Hajo Nils Krabbenhoeft
- */
-public class ExternalToolActivityContextualView extends
-		HTMLBasedActivityContextualView<ExternalToolActivityConfigurationBean> {
-	private static final long serialVersionUID = 1L;
-	private final EditManager editManager;
-	private final FileManager fileManager;
-	private final ActivityIconManager activityIconManager;
-
-	public ExternalToolActivityContextualView(Activity<?> activity, EditManager editManager,
-			FileManager fileManager, ColourManager colourManager, ActivityIconManager activityIconManager) {
-		super(activity, colourManager);
-		this.editManager = editManager;
-		this.fileManager = fileManager;
-		this.activityIconManager = activityIconManager;
-	}
-
-	@Override
-	protected String getRawTableRowsHtml() {
-		String html = "";
-		ExternalToolActivityConfigurationBean bean = getConfigBean();
-		String repositoryUrl = bean.getRepositoryUrl();
-		if ((repositoryUrl == null) || repositoryUrl.isEmpty()) {
-			repositoryUrl = "<b>Not specified</b>";
-		}
-		html += "<tr><td>Repository URL</td><td>" + repositoryUrl + "</td></tr>";
-
-		String id = bean.getExternaltoolid();
-		if ((id == null) || id.isEmpty()) {
-			id = "<b>Not specified</b>";
-		}
-		html += "<tr><td>Id</td><td>" + id + "</td></tr>";
-
-		UseCaseDescription useCaseDescription = bean.getUseCaseDescription();
-		String name = useCaseDescription.getUsecaseid();
-		if ((name == null) || name.isEmpty()) {
-			name = "<b>Not specified</b>";
-		}
-		html += "<tr><td>Name</td><td>" + name + "</td></tr>";
-
-		Map<String, ScriptInput> stringReplacements = new TreeMap<String, ScriptInput>();
-		Map<String, ScriptInput> fileInputs = new TreeMap<String, ScriptInput>();
-
-		for (Entry<String, ScriptInput> entry : useCaseDescription.getInputs().entrySet()) {
-			String key = entry.getKey();
-			ScriptInput value = entry.getValue();
-			if (value.isFile()) {
-				fileInputs.put(key, value);
-			} else if (value.isTempFile()) {
-				// Nothing
-			} else {
-				stringReplacements.put(key, value);
-			}
-		}
-
-		if (!stringReplacements.isEmpty()) {
-			html += "<tr><td colspan=2 align=center><b>String replacements</b></td></tr>";
-			html += "<tr><td><b>Port name</b></td><td><b>Replaces</b></td></tr>";
-			for (String siName : stringReplacements.keySet()) {
-				html += "<tr><td>" + siName + "</td>";
-				ScriptInput si = stringReplacements.get(siName);
-				html += "<td>%%" + si.getTag() + "%%</td>";
-
-				html += "</tr>";
-			}
-		}
-
-		if (!fileInputs.isEmpty()) {
-			html += "<tr><td colspan=2 align=center><b>File inputs</b></td></tr>";
-			html += "<tr><td><b>Port name</b></td><td><b>To file</b></td></tr>";
-			for (String siName : fileInputs.keySet()) {
-				html += "<tr><td>" + siName + "</td>";
-				ScriptInput si = fileInputs.get(siName);
-				html += "<td>" + si.getTag() + "</td>";
-
-				html += "</tr>";
-			}
-		}
-
-		List<ScriptInputStatic> staticInputs = useCaseDescription.getStatic_inputs();
-		if (!staticInputs.isEmpty()) {
-			html += "<tr><td colspan=2 align=center><b>Static inputs</b></td></tr>";
-			html += "<tr><td><b>Type</b></td><td><b>To file</b></td></tr>";
-			for (ScriptInputStatic si : staticInputs) {
-				if (si.getUrl() != null) {
-					html += "<td><b>URL</b></td>";
-				} else {
-					html += "<td><b>Explicit content</b></td>";
-				}
-				if (si.isFile()) {
-					html += "<td>" + si.getTag() + "</td>";
-				}
-				html += "</tr>";
-			}
-		}
-		Map<String, ScriptOutput> outputs = useCaseDescription.getOutputs();
-		if (!outputs.isEmpty()) {
-			html += "<tr><td colspan=2 align=center><b>File outputs</b></td></tr>";
-			html += "<tr><td><b>Port name</b></td><td><b>From file</b></td></tr>";
-			for (String soName : outputs.keySet()) {
-				html += "<tr><td>" + soName + "</td>";
-				ScriptOutput so = outputs.get(soName);
-				html += "<td>" + so.getPath() + "</td>";
-				html += "</tr>";
-			}
-		}
-		return html;
-	}
-
-	@Override
-	public String getViewTitle() {
-		return "Tool service";
-	}
-
-	@Override
-	public Action getConfigureAction(final Frame owner) {
-		return new ExternalToolActivityConfigureAction((ExternalToolActivity) getActivity(), owner,
-				editManager, fileManager, activityIconManager);
-	}
-
-	public String getBackgroundColour() {
-
-		return ExternalToolActivityIcon.getColourString();
-	}
-
-	@Override
-	public int getPreferredPosition() {
-		return 100;
-	}
-
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/ExternalToolActivityViewFactory.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/ExternalToolActivityViewFactory.java
deleted file mode 100644
index 902c736..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/ExternalToolActivityViewFactory.java
+++ /dev/null
@@ -1,76 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2010 Hajo Nils Krabbenhoeft, INB, University of Luebeck
- *
- *  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.activities.externaltool.views;
-
-import java.util.Arrays;
-import java.util.List;
-
-import net.sf.taverna.t2.activities.externaltool.ExternalToolActivity;
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;
-import net.sf.taverna.t2.workbench.configuration.colour.ColourManager;
-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;
-
-/**
- * ExternalToolActivityViewFactory produces an ExternalToolActivityContextualView to show
- * information for a use case activity.
- *
- * @author Hajo Nils Krabbenhoeft
- */
-public class ExternalToolActivityViewFactory implements ContextualViewFactory<ExternalToolActivity> {
-
-	private EditManager editManager;
-	private FileManager fileManager;
-	private ActivityIconManager activityIconManager;
-	private ColourManager colourManager;
-
-	public boolean canHandle(Object object) {
-		if (object instanceof ExternalToolActivity) {
-			return true;
-		}
-		return false;
-	}
-
-	public List<ContextualView> getViews(ExternalToolActivity selection) {
-		return Arrays.asList(new ContextualView[] { new ExternalToolActivityContextualView(
-				selection, editManager, fileManager, colourManager, activityIconManager) });
-	}
-
-	public void setEditManager(EditManager editManager) {
-		this.editManager = editManager;
-	}
-
-	public void setFileManager(FileManager fileManager) {
-		this.fileManager = fileManager;
-	}
-
-	public void setActivityIconManager(ActivityIconManager activityIconManager) {
-		this.activityIconManager = activityIconManager;
-	}
-
-	public void setColourManager(ColourManager colourManager) {
-		this.colourManager = colourManager;
-	}
-
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/ExternalToolConfigView.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/ExternalToolConfigView.java
deleted file mode 100644
index 4723a78..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/ExternalToolConfigView.java
+++ /dev/null
@@ -1,868 +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.activities.externaltool.views;
-
-import java.awt.Color;
-import java.awt.Dimension;
-import java.awt.Font;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.Comparator;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Set;
-import java.util.Map.Entry;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.help.CSH;
-import javax.swing.JButton;
-import javax.swing.JCheckBox;
-import javax.swing.JEditorPane;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JTabbedPane;
-import javax.swing.JTextArea;
-import javax.swing.JTextField;
-import javax.swing.JTextPane;
-import javax.swing.event.ChangeEvent;
-import javax.swing.event.ChangeListener;
-
-import net.sf.taverna.t2.activities.externaltool.ExternalToolActivity;
-import net.sf.taverna.t2.activities.externaltool.ExternalToolActivityConfigurationBean;
-import net.sf.taverna.t2.activities.externaltool.ExternalToolActivityHealthChecker;
-import net.sf.taverna.t2.activities.externaltool.utils.Tools;
-import net.sf.taverna.t2.lang.ui.KeywordDocument;
-import net.sf.taverna.t2.lang.ui.LinePainter;
-import net.sf.taverna.t2.lang.ui.NoWrapEditorKit;
-import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ActivityConfigurationPanel;
-
-import org.apache.log4j.Logger;
-
-import de.uni_luebeck.inb.knowarc.usecases.ScriptInput;
-import de.uni_luebeck.inb.knowarc.usecases.ScriptInputStatic;
-import de.uni_luebeck.inb.knowarc.usecases.ScriptInputUser;
-import de.uni_luebeck.inb.knowarc.usecases.ScriptOutput;
-import de.uni_luebeck.inb.knowarc.usecases.UseCaseDescription;
-
-/**
- * Provides the configurable view for a {@link ExternalToolActivity} through
- * it's {@link ExternalToolActivityConfigurationBean}. Has 3 main tabs - Script,
- * Ports & Dependencies. The {@link #inputViewList} contains the
- * {@link ExternalToolInputViewer}s describing the input ports and
- * {@link #outputViewList} has the {@link ExternalToolFileViewer}s
- * 
- * @author Ian Dunlop
- * @author Alex Nenadic
- * @author Alan R Williams
- * 
- */
-@SuppressWarnings("serial")
-public class ExternalToolConfigView
-		extends
-		ActivityConfigurationPanel<ExternalToolActivity, ExternalToolActivityConfigurationBean> {
-	
-	private static final Color LINE_COLOR = new Color(225,225,225);
-
-	private static final String FILE_INPUT_DESCRIPTION = "You can use a file input to feed data into " +
-			"the service via an input port and have that data written to the specified file.";
-
-	private static final String FILE_OUTPUT_DESCRIPTION = "You can use a file output to take the " +
-			"content of a file produced by the tool and send it to an output port of the service.";
-
-	private static final String FILE_LIST_DESCRIPTION = "If you feed a list of data into a file list " +
-			"input, then each data item is written to a temporary file. A file is produced containing " +
-			"the names of those temporary file. That index file can then be used as part of the tool " +
-			"command.";
-
-	private static final String VALID_NAME_REGEX = "[\\p{L}\\p{Digit}_]+";
-
-	private static Logger logger = Logger
-			.getLogger(ExternalToolConfigView.class);
-
-	/** The activity which this view describes */
-	protected ExternalToolActivity activity;
-
-	/** The configuration bean used to configure the activity */
-	private ExternalToolActivityConfigurationBean configuration;
-
-	private JTabbedPane tabbedPane = null;
-	private JPanel advancedPanel = null;
-	private JTabbedPane advancedTab = null;
-	private AnnotationPanel annotationPanel = null;
-	
-	private int stringReplacementGridy = 1;
-	private List<ExternalToolStringReplacementViewer> stringReplacementViewList = new ArrayList<ExternalToolStringReplacementViewer>();
-
-	private List<ExternalToolFileViewer> inputFileViewList = new ArrayList<ExternalToolFileViewer>();
-
-	private List<ExternalToolFileViewer> fileListViewList = new ArrayList<ExternalToolFileViewer>();
-
-	private int inputGridy = 1;
-
-	private int outputGridy = 1;
-	private List<ExternalToolFileViewer> outputViewList = new ArrayList<ExternalToolFileViewer>();
-
-	private int staticGridy = 1;
-	private List<ExternalToolStaticUrlViewer> staticUrlViewList = new ArrayList<ExternalToolStaticUrlViewer>();
-
-	private List<ExternalToolStaticStringViewer> staticStringViewList = new ArrayList<ExternalToolStaticStringViewer>();
-
-/*	private List<ExternalToolRuntimeEnvironmentViewer> runtimeEnvironmentViewList = new ArrayList<ExternalToolRuntimeEnvironmentViewer>();
-*/
-
-	private JTextField nameField = new JTextField(20);
-	private JTextField groupField = new JTextField(20);
-	private JTextArea descriptionArea = new JTextArea(6, 40);
-
-	private JEditorPane scriptTextArea;
-
-	private InvocationPanel invocationPanel;
-
-	private JCheckBox stdInCheckBox = new JCheckBox("Show STDIN");
-	private JCheckBox stdOutCheckBox = new JCheckBox("Show STDOUT");
-	private JCheckBox stdErrCheckBox = new JCheckBox("Show STDERR");
-	
-	private JTextField returnCodesField = new JTextField(20);
-
-	/**
-	 * Stores the {@link ExternalToolActivity}, gets its
-	 * {@link ExternalToolActivityConfigurationBean}, sets the layout and calls
-	 * {@link #initialise()} to get the view going
-	 * 
-	 * @param activity
-	 *            the {@link ExternalToolActivity} that the view is over
-	 */
-	public ExternalToolConfigView(ExternalToolActivity activity) {
-		this.activity = activity;
-		ExternalToolActivityHealthChecker.updateLocation(activity.getConfiguration());
-		configuration = (ExternalToolActivityConfigurationBean) cloneBean(activity
-				.getConfiguration());
-		setLayout(new GridBagLayout());
-		initialise(configuration);
-	}
-
-	public void noteConfiguration() {
-		configuration = makeConfiguration();
-	}
-
-	public ExternalToolActivityConfigurationBean makeConfiguration() {
-		ExternalToolActivityConfigurationBean newConfiguration = (ExternalToolActivityConfigurationBean) cloneBean(configuration);
-		ExternalToolActivityHealthChecker.updateLocation(newConfiguration);
-		
-
-		if (!isFromRepository()) {
-			UseCaseDescription ucd = newConfiguration.getUseCaseDescription();
-
-			ucd.setUsecaseid(nameField.getText());
-			if (groupField.getText().isEmpty()) {
-				ucd.setGroup(null);
-			} else {
-				ucd.setGroup(groupField.getText());
-			}
-			ucd.setDescription(descriptionArea.getText());
-			ucd.setCommand(scriptTextArea.getText());
-			ucd.setReturnCodesAsText(returnCodesField.getText());
-			ucd.setIncludeStdIn(stdInCheckBox.isSelected());
-			ucd.setIncludeStdOut(stdOutCheckBox.isSelected());
-			ucd.setIncludeStdErr(stdErrCheckBox.isSelected());
-
-			ucd.getInputs().clear();
-			ucd.getTags().clear();
-			synchronized (fileListViewList) {
-				for (ExternalToolFileViewer viewer : fileListViewList) {
-					ScriptInputUser si = new ScriptInputUser();
-					si.setBinary(viewer.isBinary());
-					si.setList(true);
-					si.setTag(viewer.getValue());
-					si.setTempFile(false);
-					si.setFile(true);
-					ucd.getInputs().put(viewer.getName(), si);
-				}
-			}
-
-			synchronized (stringReplacementViewList) {
-				for (ExternalToolStringReplacementViewer viewer : stringReplacementViewList) {
-					ScriptInputUser si = new ScriptInputUser();
-					si.setBinary(false);
-					si.setList(false);
-					si.setTag(viewer.getValue());
-					si.setTempFile(false);
-					si.setFile(false);
-					ucd.getTags().add(si.getTag());
-					ucd.getInputs().put(viewer.getName(), si);
-				}
-			}
-
-			synchronized (inputFileViewList) {
-				for (ExternalToolFileViewer viewer : inputFileViewList) {
-					ScriptInputUser si = new ScriptInputUser();
-					si.setBinary(viewer.isBinary());
-					si.setList(false);
-					si.setTag(viewer.getValue());
-					si.setTempFile(false);
-					si.setFile(true);
-					ucd.getInputs().put(viewer.getName(), si);
-				}
-			}
-
-			synchronized (outputViewList) {
-				ucd.getOutputs().clear();
-				for (ExternalToolFileViewer viewer : outputViewList) {
-					ScriptOutput so = new ScriptOutput();
-					so.setBinary(viewer.isBinary());
-					so.setPath(viewer.getValue());
-					ucd.getOutputs().put(viewer.getName(), so);
-				}
-			}
-			ucd.getStatic_inputs().clear();
-			synchronized (staticStringViewList) {
-				for (ExternalToolStaticStringViewer viewer : staticStringViewList) {
-					ScriptInputStatic sis = new ScriptInputStatic();
-					sis.setContent(viewer.getContent());
-					sis.setTag(viewer.getValue());
-					sis.setTempFile(false);
-					sis.setFile(true);
-					ucd.getStatic_inputs().add(sis);
-				}
-			}
-			synchronized (staticUrlViewList) {
-				for (ExternalToolStaticUrlViewer viewer : staticUrlViewList) {
-					ScriptInputStatic sis = new ScriptInputStatic();
-					sis.setUrl(viewer.getContent());
-					sis.setTag(viewer.getValue());
-					sis.setTempFile(false);
-					sis.setFile(true);
-					ucd.getStatic_inputs().add(sis);
-				}
-			}
-
-/*			synchronized (runtimeEnvironmentViewList) {
-				ucd.getREs().clear();
-				for (ExternalToolRuntimeEnvironmentViewer viewer : runtimeEnvironmentViewList) {
-					RuntimeEnvironmentConstraint newConstraint = new RuntimeEnvironmentConstraint(
-							viewer.getId(), viewer.getRelation());
-					ucd.getREs().add(newConstraint);
-				}
-			}*/
-		}
-		invocationPanel.fillInConfiguration(newConfiguration);
-
-		return newConfiguration;
-	}
-
-	public boolean isConfigurationChanged() {
-		String configurationString = convertBeanToString(activity
-				.getConfiguration());
-		return (!convertBeanToString(makeConfiguration()).equals(
-				configurationString));
-	}
-
-	/**
-	 * Adds a {@link JButton} which handles the reconfiguring of the
-	 * {@link ExternalToolActivity} through the altered
-	 * {@link ExternalToolActivityConfigurationBean}. Sets up the initial tabs -
-	 * Script (also sets the initial value), Ports & Dependencies and their
-	 * initial values through {@link #setDependencies()},
-	 * {@link #getPortPanel()}
-	 */
-	private void initialise(ExternalToolActivityConfigurationBean configuration) {
-		CSH.setHelpIDString(
-				this,
-				"net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ExternalToolConfigView");
-		this.configuration = configuration;
-		setBorder(javax.swing.BorderFactory.createTitledBorder(null, null,
-				javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION,
-				javax.swing.border.TitledBorder.DEFAULT_POSITION,
-				new java.awt.Font("Lucida Grande", 1, 12)));
-
-		tabbedPane = new JTabbedPane();
-		
-		if (invocationPanel != null) {
-			invocationPanel.stopObserving();
-		}
-
-		if (!isFromRepository()) {
-			UseCaseDescription useCaseDescription = configuration
-					.getUseCaseDescription();
-
-			nameField.setText(useCaseDescription.getUsecaseid());
-			if (useCaseDescription.getGroup() != null) {
-				groupField.setText(useCaseDescription.getGroup());
-			}
-			descriptionArea.setText(useCaseDescription.getDescription());
-			stringReplacementViewList = new ArrayList<ExternalToolStringReplacementViewer>();
-			inputFileViewList = new ArrayList<ExternalToolFileViewer>();
-			fileListViewList = new ArrayList<ExternalToolFileViewer>();
-			outputViewList = new ArrayList<ExternalToolFileViewer>();
-			staticUrlViewList = new ArrayList<ExternalToolStaticUrlViewer>();
-			staticStringViewList = new ArrayList<ExternalToolStaticStringViewer>();
-/*			runtimeEnvironmentViewList = new ArrayList<ExternalToolRuntimeEnvironmentViewer>();*/
-
-			for (Entry<String, ScriptInput> entry : useCaseDescription
-					.getInputs().entrySet()) {
-				String name = entry.getKey();
-				ScriptInputUser si = (ScriptInputUser) entry.getValue();
-				if (Tools.isStringReplacement(si)) {
-					final ExternalToolStringReplacementViewer inputView = new ExternalToolStringReplacementViewer(
-							name, si);
-					stringReplacementViewList.add(inputView);
-				}
-
-			}
-			Collections.sort(stringReplacementViewList,
-					new Comparator<ExternalToolStringReplacementViewer>() {
-
-						@Override
-						public int compare(
-								ExternalToolStringReplacementViewer o1,
-								ExternalToolStringReplacementViewer o2) {
-							return o1.getName().compareTo(o2.getName());
-						}
-					});
-
-			for (Entry<String, ScriptInput> entry : useCaseDescription
-					.getInputs().entrySet()) {
-				String name = entry.getKey();
-				ScriptInputUser si = (ScriptInputUser) entry.getValue();
-				if (Tools.isInputFile(si)) {
-					final ExternalToolFileViewer inputView = new ExternalToolFileViewer(
-							name, si.getTag(), si.isBinary());
-					inputFileViewList.add(inputView);
-				}
-
-			}
-			Collections.sort(inputFileViewList,
-					new Comparator<ExternalToolFileViewer>() {
-
-						@Override
-						public int compare(ExternalToolFileViewer o1,
-								ExternalToolFileViewer o2) {
-							return o1.getName().compareTo(o2.getName());
-						}
-					});
-
-			for (Entry<String, ScriptInput> entry : useCaseDescription
-					.getInputs().entrySet()) {
-				String name = entry.getKey();
-				ScriptInputUser si = (ScriptInputUser) entry.getValue();
-				if (Tools.isFileList(si)) {
-					final ExternalToolFileViewer inputView = new ExternalToolFileViewer(
-							name, si.getTag(), si.isBinary());
-					fileListViewList.add(inputView);
-				}
-
-			}
-			Collections.sort(fileListViewList,
-					new Comparator<ExternalToolFileViewer>() {
-
-						@Override
-						public int compare(ExternalToolFileViewer o1,
-								ExternalToolFileViewer o2) {
-							return o1.getName().compareTo(o2.getName());
-						}
-					});
-
-			for (Entry<String, ScriptOutput> entry : useCaseDescription
-					.getOutputs().entrySet()) {
-				ScriptOutput so = entry.getValue();
-				final ExternalToolFileViewer outputView = new ExternalToolFileViewer(
-						entry.getKey(), so.getPath(), so.isBinary());
-				outputViewList.add(outputView);
-			}
-			Collections.sort(outputViewList,
-					new Comparator<ExternalToolFileViewer>() {
-
-						@Override
-						public int compare(ExternalToolFileViewer o1,
-								ExternalToolFileViewer o2) {
-							return o1.getName().compareTo(o2.getName());
-						}
-					});
-
-			for (ScriptInputStatic siss : useCaseDescription.getStatic_inputs()) {
-				if ((siss.getUrl() == null) && siss.isFile()) {
-					final ExternalToolStaticStringViewer staticView = new ExternalToolStaticStringViewer(
-							siss);
-					staticStringViewList.add(staticView);
-				}
-			}
-			Collections.sort(staticStringViewList,
-					new Comparator<ExternalToolStaticStringViewer>() {
-
-						@Override
-						public int compare(ExternalToolStaticStringViewer o1,
-								ExternalToolStaticStringViewer o2) {
-							return o1.getContent().compareTo(o2.getContent());
-						}
-					});
-
-			for (ScriptInputStatic sis : useCaseDescription.getStatic_inputs()) {
-				if ((sis.getUrl() != null) && sis.isFile()) {
-					final ExternalToolStaticUrlViewer staticView = new ExternalToolStaticUrlViewer(
-							sis);
-					staticUrlViewList.add(staticView);
-				}
-			}
-			Collections.sort(staticUrlViewList,
-					new Comparator<ExternalToolStaticUrlViewer>() {
-
-						@Override
-						public int compare(ExternalToolStaticUrlViewer o1,
-								ExternalToolStaticUrlViewer o2) {
-							return o1.getContent().compareTo(o2.getContent());
-						}
-					});
-
-/*			for (RuntimeEnvironmentConstraint rec : useCaseDescription.getREs()) {
-				final ExternalToolRuntimeEnvironmentViewer newView = new ExternalToolRuntimeEnvironmentViewer(
-						rec.getID(), rec.getRelation());
-				runtimeEnvironmentViewList.add(newView);
-			}
-			Collections.sort(runtimeEnvironmentViewList,
-					new Comparator<ExternalToolRuntimeEnvironmentViewer>() {
-
-						@Override
-						public int compare(
-								ExternalToolRuntimeEnvironmentViewer o1,
-								ExternalToolRuntimeEnvironmentViewer o2) {
-							return o1.getId().compareTo(o2.getId());
-						}
-					});*/
-
-			scriptTextArea = new JTextPane();
-			new LinePainter(scriptTextArea, LINE_COLOR);
-
-			final KeywordDocument doc = new KeywordDocument(
-					new HashSet<String>());
-			// NOTE: Due to T2-1145 - always set editor kit BEFORE setDocument
-			scriptTextArea.setEditorKit(new NoWrapEditorKit());
-			scriptTextArea.setFont(new Font("Monospaced", Font.PLAIN, 14));
-			scriptTextArea.setDocument(doc);
-			scriptTextArea.setText(useCaseDescription.getCommand());
-			scriptTextArea.setCaretPosition(0);
-			scriptTextArea.setPreferredSize(new Dimension(200, 100));
-
-			tabbedPane.addTab("Command", new ScriptPanel(this, scriptTextArea, stdInCheckBox, stdOutCheckBox, stdErrCheckBox, returnCodesField));
-			tabbedPane.addTab("String replacements",
-					new StringReplacementPanel(this, stringReplacementViewList));
-			tabbedPane.addTab(
-					"File inputs",
-					new FilePanel(this, inputFileViewList, "To file", "File type",
-							"in", FILE_INPUT_DESCRIPTION, "Add file input"));
-			tabbedPane.addTab(
-					"File outputs",
-					new FilePanel(this, outputViewList, "From file", "File type",
-							"out", FILE_OUTPUT_DESCRIPTION, "Add file output"));
-			advancedPanel = new JPanel();
-			advancedPanel.setLayout(new GridBagLayout());
-			GridBagConstraints advancedConstraint = new GridBagConstraints();
-			advancedConstraint.anchor = GridBagConstraints.FIRST_LINE_START;
-			advancedConstraint.gridx = 0;
-			advancedConstraint.gridy = 0;
-
-			advancedConstraint.fill = GridBagConstraints.BOTH;
-			advancedConstraint.weighty = 0.1;
-			advancedConstraint.weightx = 0.1;
-			advancedTab = new JTabbedPane();
-			advancedTab.addTab("Strings", new StaticStringPanel(staticStringViewList));
-			advancedTab.addTab("URLs", new StaticUrlPanel(staticUrlViewList));
-			advancedTab.addTab(
-					"File lists",
-					new FilePanel(this, fileListViewList,
-							"To file containing list", "Individual file type",
-							"in", FILE_LIST_DESCRIPTION, "Add file list"));
-			annotationPanel = new AnnotationPanel(nameField, descriptionArea, groupField);
-			advancedTab.addTab("Annotation", annotationPanel);
-			final ToolXMLPanel toolXMLPanel = new ToolXMLPanel(configuration.getUseCaseDescription());
-			advancedTab.addTab("XML", toolXMLPanel);
-			advancedTab.addChangeListener(new ChangeListener() {
-
-				@Override
-				public void stateChanged(ChangeEvent e) {
-					if (advancedTab.getSelectedComponent() == toolXMLPanel) {
-						toolXMLPanel.regenerateTree(makeConfiguration().getUseCaseDescription());
-					}
-				}});
-			tabbedPane.addChangeListener(new ChangeListener() {
-
-				@Override
-				public void stateChanged(ChangeEvent e) {
-					if ((tabbedPane.getSelectedComponent() == advancedPanel) &&
-							(advancedTab.getSelectedComponent() == toolXMLPanel)) {
-						toolXMLPanel.regenerateTree(makeConfiguration().getUseCaseDescription());						
-					}
-				}
-				
-			});
-/*			advancedTab.addTab("Runtime environments",
-					createRuntimeEnvironmentPanel(runtimeEnvironmentViewList));*/
-			advancedPanel.add(advancedTab, advancedConstraint);
-			tabbedPane.addTab("Advanced", advancedPanel);
-		}
-		invocationPanel = new InvocationPanel(configuration);
-		
-		tabbedPane.addTab("Location", invocationPanel);
-		if (isFromRepository()) {
-			tabbedPane.addTab("Edit", new EditablePanel(this));
-		}
-		GridBagConstraints outerConstraint = new GridBagConstraints();
-		outerConstraint.anchor = GridBagConstraints.FIRST_LINE_START;
-		outerConstraint.gridx = 0;
-		outerConstraint.gridy = 0;
-
-		outerConstraint.fill = GridBagConstraints.BOTH;
-		outerConstraint.weighty = 0.1;
-		outerConstraint.weightx = 0.1;
-		add(tabbedPane, outerConstraint);
-
-		setPreferredSize(new Dimension(700, 500));
-		this.validate();
-	}
-
-	public void whenOpened() {
-		if (scriptTextArea != null) {
-			scriptTextArea.requestFocus();
-		}
-	}
-
-	private boolean isFromRepository() {
-		return (!this.configuration.isEdited() && isOriginallyFromRepository());
-	}
-	
-	public boolean isOriginallyFromRepository() {
-		String repositoryUrl = this.configuration.getRepositoryUrl();
-		return ((repositoryUrl != null) && !repositoryUrl
-				.isEmpty());
-		
-	}
-
-
-	@Override
-	public ExternalToolActivityConfigurationBean getConfiguration() {
-		return configuration;
-	}
-
-	public void refreshConfiguration(
-			ExternalToolActivityConfigurationBean config) {
-		int visibleTab = -1;
-		int secondaryTab = -1;
-		if (tabbedPane != null) {
-			visibleTab = tabbedPane.getSelectedIndex();
-			if (tabbedPane.getSelectedComponent().equals(advancedTab)) {
-				secondaryTab = advancedTab.getSelectedIndex();
-			}
-		}
-		this.removeAll();
-		initialise(config);
-		if (visibleTab != -1) {
-			tabbedPane.setSelectedIndex(visibleTab);
-		}
-		if (secondaryTab != -1) {
-			advancedTab.setSelectedIndex(secondaryTab);
-		}
-	}
-	
-	public void showAnnotationPanel() {
-		tabbedPane.setSelectedComponent(advancedPanel);
-		advancedTab.setSelectedComponent(annotationPanel);
-	}
-
-	@Override
-	public void refreshConfiguration() {
-		refreshConfiguration(activity.getConfiguration());
-	}
-
-	static Pattern tagPattern = Pattern.compile("%%([^%]*)%%");
-
-	@Override
-	/**
-	 * Need to check that the script contains the string replacements and only them - done
-	 * 
-	 * Need to check the input port names are valid and unique - done
-	 * Need to check the output port names are valid and unique - done
-	 * 
-	 * Need to check the input files and static files are unique - done
-	 * Need to check the file names are valid
-	 * Need to check the URLs are valid
-	 * Need to check the replacement tags are unique - done
-	 */
-	public boolean checkValues() {
-		if (isFromRepository()) {
-			return true;
-		}
-		boolean result = true;
-		String text = "";
-		Set<String> stringReplacementPortNames = new HashSet<String>();
-		Set<String> stringReplacementTags = new HashSet<String>();
-		for (ExternalToolStringReplacementViewer v : stringReplacementViewList) {
-			String name = v.getName();
-			if (name.equalsIgnoreCase("stdin") || name.equalsIgnoreCase("stdout") || name.equalsIgnoreCase("stderr")) {
-				text += "A string replacement port has a reserved name \"" + name + "\"\n";
-				result = false;
-			}
-			else if (stringReplacementPortNames.contains(name)) {
-				text += "Two string replacement ports have the name \"" + name
-						+ "\"\n";
-				result = false;
-			} else if (!name.matches(VALID_NAME_REGEX)) {
-				text += "String replacement port name \"" + name
-						+ "\" is invalid\n";
-				result = false;
-			} else {
-				stringReplacementPortNames.add(name);
-			}
-
-			String tag = v.getValue();
-			if (stringReplacementTags.contains(tag)) {
-				text += "Two string replacement ports replace \"%%" + tag
-						+ "%%\"\n";
-				result = false;
-			} else if (!tag.matches(VALID_NAME_REGEX)) {
-				text += "String replacement tag \"%%" + tag
-						+ "%%\" is invalid\n";
-				result = false;
-			} else {
-				stringReplacementTags.add(tag);
-			}
-		}
-
-		Matcher m = tagPattern.matcher(scriptTextArea.getText());
-		Set<String> tags = new HashSet<String>();
-		while (m.find()) {
-			String tag = m.group(1);
-			if (tag != null) {
-				if (tag.isEmpty()) {
-					text += "The command contains an empty tag i.e. %%%%\n";
-					result = false;
-				} else {
-					if (!tag.matches(VALID_NAME_REGEX)) {
-						text += "The command contains an invalid tag \"%%"
-								+ tag + "\"%%\n";
-						result = false;
-					}
-					if (!stringReplacementTags.contains(tag)) {
-						text += "There is no string replacement for %%" + tag
-								+ "%%\n";
-						result = false;
-					} else {
-						tags.add(tag);
-					}
-				}
-			}
-		}
-
-		for (String tag : stringReplacementTags) {
-			if (!tags.contains(tag)) {
-				text += "String replacement for %%" + tag
-						+ "%% is not used in the command\n";
-				result = false;
-			}
-		}
-
-		Set<String> inputFilePortNames = new HashSet<String>();
-		Set<String> inputFileNames = new HashSet<String>();
-		for (ExternalToolFileViewer v : inputFileViewList) {
-			String name = v.getName();
-			if (name.equalsIgnoreCase("stdin") || name.equalsIgnoreCase("stdout") || name.equalsIgnoreCase("stderr")) {
-				text += "An input file port has a reserved name \"" + name + "\"\n";
-				result = false;
-			}
-			else if (stringReplacementPortNames.contains(name)) {
-				text += "A string replacement port and an input file port have the name \""
-						+ name + "\"\n";
-				result = false;
-			} else if (inputFilePortNames.contains(name)) {
-				text += "Two file input ports have the name \"" + name + "\"\n";
-				result = false;
-			} else if (!name.matches(VALID_NAME_REGEX)) {
-				text += "File input port name \"" + name + "\" is invalid\n";
-				result = false;
-			} else {
-				inputFilePortNames.add(name);
-			}
-
-			String fileName = v.getValue();
-			if (inputFileNames.contains(fileName)) {
-				text += "Two file inputs ports write to the same file \""
-						+ fileName + "\"\n";
-				result = false;
-			} else {
-				inputFileNames.add(fileName);
-			}
-		}
-
-		Set<String> fileListPortNames = new HashSet<String>();
-		Set<String> fileListFileNames = new HashSet<String>();
-		for (ExternalToolFileViewer v : fileListViewList) {
-			String name = v.getName();
-			if (name.equalsIgnoreCase("stdin") || name.equalsIgnoreCase("stdout") || name.equalsIgnoreCase("stderr")) {
-				text += "A file list port has a reserved name \"" + name + "\"\n";
-				result = false;
-			} else if (stringReplacementPortNames.contains(name)) {
-				text += "A string replacement port and a file list port have the name \""
-						+ name + "\"\n";
-				result = false;
-			} else if (inputFilePortNames.contains(name)) {
-				text += "A file input port and a file list port have the name \""
-						+ name + "\"\n";
-				result = false;
-			} else if (fileListPortNames.contains(name)) {
-				text += "Two file list ports have the name \"" + name + "\"\n";
-				result = false;
-			} else if (!name.matches(VALID_NAME_REGEX)) {
-				text += "File list port name \"" + name + "\" is invalid\n";
-				result = false;
-			} else {
-				fileListPortNames.add(name);
-			}
-
-			String fileName = v.getValue();
-			if (fileListFileNames.contains(fileName)) {
-				text += "Two file list ports write to the same file \""
-						+ fileName + "\"\n";
-				result = false;
-			} else if (inputFileNames.contains(fileName)) {
-				text += "A file input port and a file list port write to the same file \""
-						+ fileName + "\"\n";
-				result = false;
-			} else {
-				fileListFileNames.add(fileName);
-			}
-		}
-
-		Set<String> staticStringFileNames = new HashSet<String>();
-		for (ExternalToolStaticStringViewer v : staticStringViewList) {
-			String fileName = v.getValue();
-			if (staticStringFileNames.contains(fileName)) {
-				text += "Two static strings write to the same file \""
-						+ fileName + "\"\n";
-				result = false;
-			} else if (inputFileNames.contains(fileName)) {
-				text += "A file input port and a static string write to the same file \""
-						+ fileName + "\"\n";
-				result = false;
-			} else if (fileListFileNames.contains(fileName)) {
-				text += "A file list port and a static string write to the same file \""
-						+ fileName + "\"\n";
-				result = false;
-			} else {
-				staticStringFileNames.add(fileName);
-			}
-		}
-
-		Set<String> staticUrlFileNames = new HashSet<String>();
-		for (ExternalToolStaticUrlViewer v : staticUrlViewList) {
-			String fileName = v.getValue();
-			if (staticUrlFileNames.contains(fileName)) {
-				text += "Two static URLss write to the same file \"" + fileName
-						+ "\"\n";
-				result = false;
-			} else if (inputFileNames.contains(fileName)) {
-				text += "A file input port and a static URL write to the same file \""
-						+ fileName + "\"\n";
-				result = false;
-			} else if (fileListFileNames.contains(fileName)) {
-				text += "A file list port and a static URL write to the same file \""
-						+ fileName + "\"\n";
-				result = false;
-			} else if (staticStringFileNames.contains(fileName)) {
-				text += "A static string and a static URL write to the same file \""
-						+ fileName + "\"\n";
-				result = false;
-			} else {
-				staticUrlFileNames.add(fileName);
-			}
-		}
-		Set<String> outputPortNames = new HashSet<String>();
-		for (ExternalToolFileViewer v : outputViewList) {
-			String name = v.getName();
-			if (name.equalsIgnoreCase("stdin") || name.equalsIgnoreCase("stdout") || name.equalsIgnoreCase("stderr")) {
-				text += "An output port has a reserved name \"" + name + "\"\n";
-				result = false;
-			} else if (outputPortNames.contains(name)) {
-				text += "Two output file ports have the name \"" + name
-						+ "\"\n";
-				result = false;
-			} else if (!name.matches(VALID_NAME_REGEX)) {
-				text += "Output file port name \"" + name + "\" is invalid\n";
-				result = false;
-			} else {
-				outputPortNames.add(name);
-			}
-		}
-		if (!result) {
-			JOptionPane.showMessageDialog(this, text, "Problems",
-					JOptionPane.ERROR_MESSAGE);
-		}
-		return result;
-	}
-
-	/**
-	 * Check the proposed port name against the set of ports
-	 * 
-	 * @return
-	 */
-	public boolean portNameExists(String name) {
-		if (name.equalsIgnoreCase("stdin") || name.equalsIgnoreCase("stdout") || name.equalsIgnoreCase("stderr")) {
-			return true;
-		}
-		
-		for (ExternalToolFileViewer v : inputFileViewList) {
-			if (name.equals(v.getName())) {
-				return true;
-			}
-		}
-		for (ExternalToolFileViewer v : fileListViewList) {
-			if (name.equals(v.getName())) {
-				return true;
-			}
-		}
-		for (ExternalToolStringReplacementViewer v : stringReplacementViewList) {
-			if (name.equals(v.getName())) {
-				return true;
-			}
-		}
-		for (ExternalToolFileViewer v : outputViewList) {
-			if (name.equals(v.getName())) {
-				return true;
-			}
-		}
-		return false;
-	}
-
-
-	public void setEditable(boolean editable, ExternalToolActivityConfigurationBean config) {
-		ExternalToolActivityConfigurationBean newConfig = (ExternalToolActivityConfigurationBean) cloneBean(config);
-		ExternalToolActivityHealthChecker.updateLocation(newConfig);
-		newConfig.setEdited(editable);
-		refreshConfiguration(newConfig);		
-	}
-	
-	public void whenClosed() {
-		if (invocationPanel != null) {
-			invocationPanel.stopObserving();
-		}
-	}
-
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/ExternalToolFileViewer.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/ExternalToolFileViewer.java
deleted file mode 100644
index 11fb0c4..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/ExternalToolFileViewer.java
+++ /dev/null
@@ -1,103 +0,0 @@
-/**
- * 
- */
-package net.sf.taverna.t2.activities.externaltool.views;
-
-import java.awt.event.ActionEvent;
-
-import javax.swing.AbstractAction;
-import javax.swing.JCheckBox;
-import javax.swing.JComboBox;
-import javax.swing.JTextField;
-
-import de.uni_luebeck.inb.knowarc.usecases.ScriptInput;
-import de.uni_luebeck.inb.knowarc.usecases.ScriptInputUser;
-import de.uni_luebeck.inb.knowarc.usecases.ScriptOutput;
-
-/**
- * @author alanrw
- *
- */
-public class ExternalToolFileViewer {
-	
-	private JTextField nameField;
-	private String name;
-	private JTextField valueField;
-	private JCheckBox valueFromField;
-	private JComboBox typeSelector;
-
-	public ExternalToolFileViewer(String name, String value, boolean isBinary) {
-		this(name);
-		nameField.setText(name);
-		if (!value.equals(name)) {
-			valueFromField.setSelected(false);
-			valueField.setText(value);
-			valueField.setEnabled(true);
-		}
-		if (isBinary) {
-			typeSelector.setSelectedItem("Binary");
-		} else {
-			typeSelector.setSelectedItem("Text");
-		}
-	}
-
-	public ExternalToolFileViewer(final String name) {
-		this.name = name;
-		nameField = new JTextField(20);
-		valueField = new JTextField(20);
-		valueFromField = new JCheckBox(new AbstractAction() {
-
-			@Override
-			public void actionPerformed(ActionEvent e) {
-				if (valueFromField.isSelected()) {
-					valueField.setText("");
-					valueField.setEnabled(false);
-				} else {
-					valueField.setText(getName());
-					valueField.setEnabled(true);
-				}
-			}});
-		valueFromField.setSelected(true);
-		valueField.setEnabled(false);
-		typeSelector = new JComboBox(new String[] {"Binary", "Text"});
-		nameField.setText(name);
-		typeSelector.setSelectedItem("Text");
-		
-	}
-
-	public JTextField getNameField() {
-		return nameField;
-	}
-
-	public JTextField getValueField() {
-		return valueField;
-	}
-
-	public JComboBox getTypeSelector() {
-		return typeSelector;
-	}
-
-	public String getName() {
-		return nameField.getText();
-	}
-
-	public boolean isBinary() {
-		return (typeSelector.getSelectedItem().equals("Binary"));
-	}
-
-	public String getValue() {
-		if (valueFromField.isSelected()) {
-			return getName();
-		}
-		return valueField.getText();
-	}
-	
-	/**
-	 * @return the valueFromField
-	 */
-	public JCheckBox getValueFromField() {
-		return valueFromField;
-	}
-
-
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/ExternalToolRuntimeEnvironmentViewer.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/ExternalToolRuntimeEnvironmentViewer.java
deleted file mode 100644
index 1451660..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/ExternalToolRuntimeEnvironmentViewer.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * 
- */
-package net.sf.taverna.t2.activities.externaltool.views;
-
-import javax.swing.JComboBox;
-import javax.swing.JTextField;
-
-import de.uni_luebeck.inb.knowarc.usecases.RuntimeEnvironmentConstraint;
-import de.uni_luebeck.inb.knowarc.usecases.ScriptInput;
-import de.uni_luebeck.inb.knowarc.usecases.ScriptInputUser;
-import de.uni_luebeck.inb.knowarc.usecases.ScriptOutput;
-
-/**
- * @author alanrw
- *
- */
-public class ExternalToolRuntimeEnvironmentViewer {
-	
-	private JTextField idField;
-	private JComboBox relationSelector;
-
-	public ExternalToolRuntimeEnvironmentViewer(String id, String relation) {
-		this(id);
-		idField.setText(id);
-		relationSelector.setSelectedItem(relation);
-	}
-
-	public ExternalToolRuntimeEnvironmentViewer(String id) {
-		this();
-		idField.setText(id);	
-	}
-	
-	public ExternalToolRuntimeEnvironmentViewer() {
-		idField = new JTextField(20);
-		relationSelector = new JComboBox(RuntimeEnvironmentConstraint.getAcceptedRelations());
-		relationSelector.setSelectedItem(RuntimeEnvironmentConstraint.getDefaultRelation());			
-	}
-
-	public JTextField getIdField() {
-		return idField;
-	}
-
-	public JComboBox getRelationSelector() {
-		return relationSelector;
-	}
-
-	public String getId() {
-		return idField.getText();
-	}
-
-	public String getRelation() {
-		return (String) relationSelector.getSelectedItem();
-	}
-
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/ExternalToolStaticStringViewer.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/ExternalToolStaticStringViewer.java
deleted file mode 100644
index d82d9b7..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/ExternalToolStaticStringViewer.java
+++ /dev/null
@@ -1,53 +0,0 @@
-/**
- * 
- */
-package net.sf.taverna.t2.activities.externaltool.views;
-
-import javax.swing.JTextArea;
-import javax.swing.JTextField;
-
-import de.uni_luebeck.inb.knowarc.usecases.ScriptInputStatic;
-
-/**
- * @author alanrw
- *
- */
-public class ExternalToolStaticStringViewer {
-	
-	ScriptInputStatic input;
-	private JTextArea contentField = new JTextArea();
-	private JTextField valueField;
-
-
-	public ExternalToolStaticStringViewer(ScriptInputStatic input) {
-		this();
-		this.input = input;
-			contentField.setText((String) input.getContent());
-		valueField.setText(input.getTag());
-	}
-
-	public ExternalToolStaticStringViewer() {
-		contentField = new JTextArea(5, 40);
-		contentField.setText("");
-		valueField = new JTextField(20);
-		valueField.setText("");
-	}
-
-	public String getContent() {
-		return contentField.getText();
-	}
-
-	public JTextArea getContentField() {
-		return contentField;
-	}
-
-
-	public JTextField getValueField() {
-		return valueField;
-	}
-
-	public String getValue() {
-		return valueField.getText();
-	}
-
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/ExternalToolStaticUrlViewer.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/ExternalToolStaticUrlViewer.java
deleted file mode 100644
index f7a1793..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/ExternalToolStaticUrlViewer.java
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * 
- */
-package net.sf.taverna.t2.activities.externaltool.views;
-
-import javax.swing.JComboBox;
-import javax.swing.JTextArea;
-import javax.swing.JTextField;
-
-import de.uni_luebeck.inb.knowarc.usecases.ScriptInput;
-import de.uni_luebeck.inb.knowarc.usecases.ScriptInputStatic;
-import de.uni_luebeck.inb.knowarc.usecases.ScriptInputUser;
-
-/**
- * @author alanrw
- *
- */
-public class ExternalToolStaticUrlViewer {
-	
-	ScriptInputStatic input;
-	private JTextField contentField = new JTextField();
-	private JTextField valueField;
-
-
-	public ExternalToolStaticUrlViewer(ScriptInputStatic input) {
-		this();
-		this.input = input;
-		contentField.setText(input.getUrl());
-		valueField.setText(input.getTag());
-	}
-
-	public ExternalToolStaticUrlViewer() {
-		contentField = new JTextField(40);
-		contentField.setText("");
-		valueField = new JTextField(20);
-		valueField.setText("");
-	}
-
-	public String getContent() {
-		return contentField.getText();
-	}
-
-	public JTextField getContentField() {
-		return contentField;
-	}
-
-
-	public JTextField getValueField() {
-		return valueField;
-	}
-
-	public String getValue() {
-		return valueField.getText();
-	}
-
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/ExternalToolStringReplacementViewer.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/ExternalToolStringReplacementViewer.java
deleted file mode 100644
index 8e24183..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/ExternalToolStringReplacementViewer.java
+++ /dev/null
@@ -1,97 +0,0 @@
-/**
- * 
- */
-package net.sf.taverna.t2.activities.externaltool.views;
-
-import java.awt.event.ActionEvent;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.swing.AbstractAction;
-import javax.swing.JCheckBox;
-import javax.swing.JComboBox;
-import javax.swing.JTextField;
-
-import de.uni_luebeck.inb.knowarc.usecases.ScriptInput;
-import de.uni_luebeck.inb.knowarc.usecases.ScriptInputUser;
-
-/**
- * @author alanrw
- *
- */
-public class ExternalToolStringReplacementViewer {
-	
-	private static Pattern p = Pattern.compile("\\w+");
-	private static final String PERCENTS = "%%";
-	ScriptInput input;
-	private JTextField nameField;
-	private String name;
-	private JTextField valueField;
-	private JCheckBox valueFromField;
-
-	public ExternalToolStringReplacementViewer(String name, ScriptInputUser input) {
-		this(name);
-		this.input = input;
-		nameField.setText(name);
-		if (!input.getTag().equals(name)) {
-			valueFromField.setSelected(false);
-			valueField.setText(PERCENTS + input.getTag() + PERCENTS);
-			valueField.setEnabled(true);
-		}
-	}
-
-	public ExternalToolStringReplacementViewer(String name) {
-		this.name = name;
-		nameField = new JTextField(20);
-		nameField.setText(name);
-		valueField = new JTextField(20);
-		valueFromField = new JCheckBox(new AbstractAction() {
-
-			@Override
-			public void actionPerformed(ActionEvent e) {
-				if (valueFromField.isSelected()) {
-					valueField.setText("");
-					valueField.setEnabled(false);
-				} else {
-					valueField.setText(PERCENTS + getName() + PERCENTS);
-					valueField.setEnabled(true);
-				}
-			}});
-		valueFromField.setSelected(true);
-		valueField.setEnabled(false);
-	}
-
-	public JTextField getNameField() {
-		return nameField;
-	}
-	
-	public JTextField getValueField() {
-		return valueField;
-	}
-
-	public String getName() {
-		return nameField.getText();
-	}
-
-	public String getValue() {
-		if (valueFromField.isSelected()) {
-			return getName();
-		}
-		String enteredValue = valueField.getText();
-
-		Matcher m = p.matcher(enteredValue);
-		String result = "";
-		if (m.find()) {
-			result = m.group();
-		}
-		return result;
-	}
-
-	/**
-	 * @return the valueFromField
-	 */
-	public JCheckBox getValueFromField() {
-		return valueFromField;
-	}
-
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/FilePanel.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/FilePanel.java
deleted file mode 100644
index 678711c..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/FilePanel.java
+++ /dev/null
@@ -1,119 +0,0 @@
-/**
- * 
- */
-package net.sf.taverna.t2.activities.externaltool.views;
-
-import java.awt.BorderLayout;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.Insets;
-import java.awt.event.ActionEvent;
-import java.util.List;
-
-import javax.swing.AbstractAction;
-import javax.swing.JButton;
-import javax.swing.JComponent;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JTextArea;
-import javax.swing.border.EmptyBorder;
-
-import net.sf.taverna.t2.activities.externaltool.utils.Tools;
-import net.sf.taverna.t2.lang.ui.DeselectingButton;
-import net.sf.taverna.t2.lang.ui.ReadOnlyTextArea;
-
-/**
- * @author alanrw
- *
- */
-public class FilePanel extends JPanel {
-	
-	private int outputGridy = 1;
-	private final ExternalToolConfigView view;
-	
-	public FilePanel(final ExternalToolConfigView view,
-			final List<ExternalToolFileViewer> viewList,
-			String fileHeader, String typeHeader, final String portPrefix,
-			final String description, String addText) {
-		super();
-		this.view = view;
-		this.setLayout(new BorderLayout());
-		final JPanel fileEditPanel = new JPanel(new GridBagLayout());
-
-		final GridBagConstraints fileConstraint = new GridBagConstraints();
-		fileConstraint.insets = new Insets(5, 5, 5, 5);
-		fileConstraint.anchor = GridBagConstraints.FIRST_LINE_START;
-		fileConstraint.gridx = 0;
-		fileConstraint.gridy = 0;
-		fileConstraint.weightx = 0.1;
-		fileConstraint.fill = GridBagConstraints.BOTH;
-		
-		final String[] elementLabels = new String[] {"Taverna port name",
-				"Use port name for file",
-				fileHeader,
-				typeHeader
-		};
-
-		fileConstraint.gridx = 0;
-		synchronized (viewList) {
-			for (ExternalToolFileViewer outputView : viewList) {
-				addFileViewer(viewList, this, fileEditPanel,
-						outputView, elementLabels);
-			}
-		}
-		JButton addFilePortButton = new DeselectingButton(addText,
-				new AbstractAction() {
-			public void actionPerformed(ActionEvent e) {
-
-				int portNumber = 1;
-
-				String name2 = portPrefix + portNumber++;
-				boolean nameExists = true;
-				while (nameExists == true) {
-					nameExists = view.portNameExists(name2);
-					if (nameExists) {
-						name2 = portPrefix + portNumber++;
-					}
-				}
-
-				ExternalToolFileViewer newViewer = new ExternalToolFileViewer(
-						name2);
-				synchronized (viewList) {
-					viewList.add(newViewer);
-					addFileViewer(viewList, FilePanel.this, fileEditPanel,
-							newViewer, elementLabels);
-					fileEditPanel.revalidate();
-					fileEditPanel.repaint();
-				}
-			}
-
-		});
-		JTextArea descriptionText = new ReadOnlyTextArea(description);
-		descriptionText.setEditable(false);
-		descriptionText.setFocusable(false);
-		descriptionText.setBorder(new EmptyBorder(5, 5, 10, 5));
-
-		this.add(descriptionText, BorderLayout.NORTH);
-
-		this.add(new JScrollPane(fileEditPanel), BorderLayout.CENTER);
-
-		JPanel buttonPanel = new JPanel(new BorderLayout());
-
-		buttonPanel.add(addFilePortButton, BorderLayout.EAST);
-
-		this.add(buttonPanel, BorderLayout.SOUTH);
-	
-	}
-	
-	private void addFileViewer(final List<ExternalToolFileViewer> viewList,
-			final JPanel outerPanel, final JPanel panel,
-			ExternalToolFileViewer viewer, String[] elementLabels) {
-		Tools.addViewer(panel,
-				elementLabels,
-				new JComponent[] {viewer.getNameField(), viewer.getValueFromField(), viewer.getValueField(), viewer.getTypeSelector()},
-				viewList,
-				viewer,
-				outerPanel);
-	}
-
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/InvocationPanel.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/InvocationPanel.java
deleted file mode 100644
index 803328b..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/InvocationPanel.java
+++ /dev/null
@@ -1,396 +0,0 @@
-/**
- * 
- */
-package net.sf.taverna.t2.activities.externaltool.views;
-
-import java.awt.BorderLayout;
-import java.awt.Component;
-import java.awt.FlowLayout;
-import java.awt.GridLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.Arrays;
-import java.util.Comparator;
-
-import javax.swing.AbstractAction;
-import javax.swing.Box;
-import javax.swing.BoxLayout;
-import javax.swing.ButtonGroup;
-import javax.swing.DefaultComboBoxModel;
-import javax.swing.DefaultListCellRenderer;
-import javax.swing.JButton;
-import javax.swing.JComboBox;
-import javax.swing.JList;
-import javax.swing.JPanel;
-import javax.swing.JRadioButton;
-import javax.swing.JTextArea;
-import javax.swing.SwingUtilities;
-import javax.swing.border.EmptyBorder;
-
-import net.sf.taverna.t2.activities.externaltool.ExternalToolActivityConfigurationBean;
-import net.sf.taverna.t2.activities.externaltool.ExternalToolActivityHealthChecker;
-import net.sf.taverna.t2.activities.externaltool.configuration.ToolInvocationConfiguration;
-import net.sf.taverna.t2.activities.externaltool.manager.InvocationGroup;
-import net.sf.taverna.t2.activities.externaltool.manager.InvocationGroupAddedEvent;
-import net.sf.taverna.t2.activities.externaltool.manager.InvocationGroupRemovedEvent;
-import net.sf.taverna.t2.activities.externaltool.manager.InvocationManagerEvent;
-import net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanism;
-import net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanismAddedEvent;
-import net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanismRemovedEvent;
-import net.sf.taverna.t2.activities.externaltool.manager.ToolInvocationConfigurationPanel;
-import net.sf.taverna.t2.activities.externaltool.manager.impl.InvocationGroupManagerImpl;
-import net.sf.taverna.t2.lang.observer.Observable;
-import net.sf.taverna.t2.lang.observer.Observer;
-import net.sf.taverna.t2.lang.ui.DeselectingButton;
-import net.sf.taverna.t2.workbench.ui.impl.configuration.ui.T2ConfigurationFrame;
-
-import org.apache.log4j.Logger;
-
-/**
- * @author alanrw
- *
- */
-public class InvocationPanel extends JPanel implements Observer<InvocationManagerEvent> {
-	
-	private static final String LOCATION_DESCRIPTION = ToolInvocationConfigurationPanel.HEADER_TEXT;
-	private final JComboBox mechanismSelection;
-	private final JComboBox groupSelection;
-	
-	private DefaultComboBoxModel mechanismSelectionModel = new DefaultComboBoxModel();
-	private DefaultComboBoxModel groupSelectionModel = new DefaultComboBoxModel();
-
-	private static InvocationGroupManagerImpl manager = InvocationGroupManagerImpl.getInstance();
-	
-	private static Logger logger = Logger
-	.getLogger(InvocationPanel.class);
-	
-	private JRadioButton unmanagedLocation;
-	private JRadioButton groupSelected;
-	private JRadioButton mechanismSelected;
-	private JButton manageInvocation;
-	private ButtonGroup mechanismOrGroup;
-	private ExternalToolActivityConfigurationBean configuration;
-	
-	private ActionListener radioChangeListener;
-	
-	boolean unmanagedShown = false;
-
-	public InvocationPanel(ExternalToolActivityConfigurationBean configuration) {
-		super();
-		manager.addObserver(this);
-		
-		mechanismSelection = new JComboBox();
-		populateMechanismList();
-		mechanismSelection.setModel(mechanismSelectionModel);
-		
-		groupSelection = new JComboBox();
-		populateGroupList();
-		groupSelection.setModel(groupSelectionModel);
-		populateInvocationPanel(configuration);
-		
-		radioChangeListener = new AbstractAction() {
-
-			@Override
-			public void actionPerformed(ActionEvent e) {
-				if (unmanagedShown && unmanagedLocation.isSelected()) {
-					setUnmanagedLocationSelectability(true);
-					setMechanismSelectability(false);
-					setGroupSelectability(false);
-					return;
-				}
-				if (mechanismSelected.isSelected()) {
-					if (unmanagedShown) {
-						setUnmanagedLocationSelectability(false);
-					}
-					setMechanismSelectability(true);
-					setGroupSelectability(false);
-					return;
-				}
-				if (unmanagedShown) {
-					setUnmanagedLocationSelectability(false);
-				}
-				setMechanismSelectability(false);
-				setGroupSelectability(true);
-				return;			}
-			
-		};
-		if (unmanagedShown) {
-			unmanagedLocation.addActionListener(radioChangeListener);
-		}
-		groupSelected.addActionListener(radioChangeListener);
-		mechanismSelected.addActionListener(radioChangeListener);
-	}
-	
-	private void populateMechanismList() {
-		InvocationMechanism currentSelection = (InvocationMechanism) mechanismSelection.getSelectedItem();
-		InvocationMechanism[] mechanisms = InvocationGroupManagerImpl.getInstance()
-				.getMechanisms().toArray(new InvocationMechanism[] {});
-		Arrays.sort(mechanisms, new Comparator<InvocationMechanism>() {
-
-			@Override
-			public int compare(InvocationMechanism arg0, InvocationMechanism arg1) {
-				return arg0.getName().compareTo(
-						arg1.getName());
-			}
-		});
-		mechanismSelectionModel.removeAllElements();
-		for (InvocationMechanism mechanism : mechanisms) {
-			mechanismSelectionModel.addElement(mechanism);
-			logger.info("Added mechanism " + mechanism.hashCode());
-		}
-		if (currentSelection != null) {
-			mechanismSelection.setSelectedItem(currentSelection);
-		}
-		
-	}
-
-	private void populateGroupList() {
-		InvocationGroup currentSelection = (InvocationGroup) groupSelection.getSelectedItem();
-		InvocationGroup[] groups = InvocationGroupManagerImpl.getInstance()
-				.getInvocationGroups().toArray(new InvocationGroup[] {});
-		Arrays.sort(groups, new Comparator<InvocationGroup>() {
-
-			@Override
-			public int compare(InvocationGroup arg0, InvocationGroup arg1) {
-				return arg0.getName().compareTo(
-						arg1.getName());
-			}
-		});
-		groupSelectionModel.removeAllElements();
-		for (InvocationGroup group : groups) {
-			groupSelectionModel.addElement(group);
-			logger.info("Added group " + group.hashCode());
-		}
-		if (currentSelection != null) {
-			groupSelection.setSelectedItem(currentSelection);
-		}
-		
-	}
-
-	
-	private void populateInvocationPanel(ExternalToolActivityConfigurationBean configuration) {
-		this.configuration = configuration;
-		this.removeAll();
-		this.setLayout(new BorderLayout());
-
-		JTextArea descriptionText = new JTextArea(
-				LOCATION_DESCRIPTION);
-		descriptionText.setEditable(false);
-		descriptionText.setFocusable(false);
-		descriptionText.setBorder(new EmptyBorder(5, 5, 10, 5));
-		descriptionText.setLineWrap(true);
-		descriptionText.setWrapStyleWord(true);
-		descriptionText.setRows(3);
-		this.add(descriptionText, BorderLayout.NORTH);
-		
-		JPanel innerPanel = new JPanel(new BorderLayout());
-		
-		mechanismOrGroup = new ButtonGroup();
-
-		JPanel subPanel = new JPanel(new GridLayout(4,1));
-		
-		if (isUnmanaged(configuration)) {
-			createUnmanagedLocation(subPanel);
-			unmanagedShown = true;
-		}
-		
-		subPanel.add(createMechanismPanel());
-		
-		subPanel.add(createGroupPanel());
-		
-		subPanel.add(createButtonPanel());
-		
-		innerPanel.add(subPanel, BorderLayout.NORTH);
-		innerPanel.add(new JPanel(), BorderLayout.CENTER);
-		
-		initializeSelectability();
-		this.add(innerPanel, BorderLayout.CENTER);
-		this.repaint();
-	}
-
-	private boolean isUnmanaged(
-			ExternalToolActivityConfigurationBean configuration2) {
-		return (!ExternalToolActivityHealthChecker.updateLocation(configuration2));
-	}
-
-	private void initializeSelectability() {
-		if (isUnmanaged(configuration)) {
-			unmanagedLocation.setSelected(true);
-			setUnmanagedLocationSelectability(true);
-			setMechanismSelectability(false);
-			setGroupSelectability(false);
-			return;
-		}
-		if (configuration.getInvocationGroup() == null) {
-			mechanismSelected.setSelected(true);
-			if (unmanagedShown) {
-				setUnmanagedLocationSelectability(false);
-			}
-			setMechanismSelectability(true);
-			setGroupSelectability(false);
-			return;
-		}
-		groupSelected.setSelected(true);
-		if (unmanagedShown) {
-			setUnmanagedLocationSelectability(false);
-		}
-		setMechanismSelectability(false);
-		setGroupSelectability(true);
-		return;
-	}
-
-	private void setGroupSelectability(boolean b) {
-		groupSelection.setEnabled(b);
-	}
-
-	private void setMechanismSelectability(boolean b) {
-		mechanismSelection.setEnabled(b);
-	}
-
-	private void setUnmanagedLocationSelectability(boolean b) {
-		// Nothing to do
-	}
-
-	private JPanel createGroupPanel() {
-		JPanel groupPanel = new JPanel(new BorderLayout());
-		
-		JPanel groupSelectionPanel = new JPanel(new GridLayout(1, 2));
-		groupSelected = new JRadioButton("Select a symbolic location");
-		mechanismOrGroup.add(groupSelected);
-		groupSelected.setBorder(new EmptyBorder(10, 10, 10, 10));
-		groupSelectionPanel.add(groupSelected);
-
-		groupSelection.setRenderer(new DefaultListCellRenderer() {
-
-			@Override
-			public Component getListCellRendererComponent(JList arg0,
-					Object arg1, int arg2, boolean arg3, boolean arg4) {
-				if (arg1 instanceof InvocationGroup) {
-					return super.getListCellRendererComponent(arg0,
-							((InvocationGroup) arg1).getName(),
-							arg2, arg3, arg4);
-				}
-				return super.getListCellRendererComponent(arg0, arg1, arg2,
-						arg3, arg4);
-			}
-		});
-
-		groupSelectionPanel.add(groupSelection); 
-
-		groupPanel.add(groupSelectionPanel, BorderLayout.CENTER);
-		
-		if (configuration.getInvocationGroup() != null) {
-			groupSelection.setSelectedItem(configuration.getInvocationGroup());
-		} else {
-			groupSelection.setSelectedItem(manager.getDefaultGroup());
-		}
-
-		return groupPanel;
-	}
-
-	private JPanel createMechanismPanel() {
-		JPanel mechanismPanel = new JPanel(new BorderLayout());
-		JPanel mechanismSelectionPanel = new JPanel(new GridLayout(1, 3));
-		mechanismSelected = new JRadioButton("Select an explicit location");
-		mechanismOrGroup.add(mechanismSelected);
-		mechanismSelected.setBorder(new EmptyBorder(10, 10, 10, 10));
-		mechanismSelectionPanel.add(mechanismSelected);
-
-		mechanismSelection.setRenderer(new DefaultListCellRenderer() {
-
-			@Override
-			public Component getListCellRendererComponent(JList arg0,
-					Object arg1, int arg2, boolean arg3, boolean arg4) {
-				if (arg1 instanceof InvocationMechanism) {
-					return super.getListCellRendererComponent(arg0,
-							((InvocationMechanism) arg1).getName(),
-							arg2, arg3, arg4);
-				}
-				return super.getListCellRendererComponent(arg0, arg1, arg2,
-						arg3, arg4);
-			}
-		});
-
-		mechanismSelectionPanel.add(mechanismSelection);
-
-		mechanismPanel.add(mechanismSelectionPanel, BorderLayout.CENTER);
-		if (configuration.getMechanism() != null) {
-			mechanismSelection.setSelectedItem(configuration.getMechanism());
-		} else {
-			mechanismSelection.setSelectedItem(manager.getDefaultMechanism());
-		}
-		return mechanismPanel;
-
-	}
-	
-	private JPanel createButtonPanel() {
-		JPanel buttonPanel = new JPanel(new FlowLayout());
-		manageInvocation = new DeselectingButton("Manage locations",
-				new AbstractAction() {
-
-			@Override
-			public void actionPerformed(ActionEvent e) {
-				T2ConfigurationFrame.showConfiguration(ToolInvocationConfiguration.getInstance().getDisplayName());
-			}});
-		buttonPanel.add(manageInvocation); 
-		return buttonPanel;		
-	}
-
-	private void createUnmanagedLocation(JPanel subPanel) {
-		unmanagedLocation = new JRadioButton("Continue using unmanaged location");
-		subPanel.add(unmanagedLocation);
-		mechanismOrGroup.add(unmanagedLocation);
-	}
-
-	private void handleInvocationManagerMessage(InvocationManagerEvent message) {
-		if (message instanceof InvocationMechanismRemovedEvent) {
-			InvocationMechanism removedMechanism = ((InvocationMechanismRemovedEvent) message).getRemovedMechanism();
-			InvocationMechanism replacementMechanism = ((InvocationMechanismRemovedEvent) message).getReplacementMechanism();
-			if (mechanismSelection.getSelectedItem().equals(removedMechanism)) {
-				mechanismSelection.setSelectedItem(replacementMechanism);
-			}
-			mechanismSelectionModel.removeElement(removedMechanism);
-		} else if (message instanceof InvocationMechanismAddedEvent) {
-			populateMechanismList();
-		}
-		else if (message instanceof InvocationGroupRemovedEvent) {
-			InvocationGroup removedGroup = ((InvocationGroupRemovedEvent) message).getRemovedGroup();
-			InvocationGroup replacementGroup = ((InvocationGroupRemovedEvent) message).getReplacementGroup();
-			if (groupSelection.getSelectedItem().equals(removedGroup)) {
-				groupSelection.setSelectedItem(replacementGroup);
-			}
-			groupSelectionModel.removeElement(removedGroup);
-		} else if (message instanceof InvocationGroupAddedEvent) {
-			populateGroupList();
-		}	
-	}
-	
-	@Override
-	public void notify(Observable<InvocationManagerEvent> sender,
-			final InvocationManagerEvent message) throws Exception {
-		if (SwingUtilities.isEventDispatchThread()) {
-			handleInvocationManagerMessage(message);
-		} else {
-			SwingUtilities.invokeLater(new Runnable() {
-				public void run() {
-					handleInvocationManagerMessage(message);
-				}
-			});
-		}	}
-
-	public void fillInConfiguration(
-			ExternalToolActivityConfigurationBean newConfiguration) {
-		if (unmanagedShown && unmanagedLocation.isSelected()) {
-			return;
-		}
-		if (mechanismSelected.isSelected()) {
-			newConfiguration.setMechanism((InvocationMechanism) mechanismSelection.getSelectedItem());
-			return;
-		}
-		newConfiguration.setInvocationGroup((InvocationGroup) groupSelection.getSelectedItem());	
-	}
-
-	public void stopObserving() {
-		manager.removeObserver(this);
-	}
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/LoadDescriptionAction.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/LoadDescriptionAction.java
deleted file mode 100644
index 7f0d82f..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/LoadDescriptionAction.java
+++ /dev/null
@@ -1,89 +0,0 @@
-/**
- * 
- */
-package net.sf.taverna.t2.activities.externaltool.views;
-
-import java.awt.event.ActionEvent;
-import java.io.IOException;
-import java.io.StringBufferInputStream;
-import java.io.StringReader;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.List;
-
-import javax.swing.AbstractAction;
-import javax.swing.JOptionPane;
-
-import net.sf.taverna.t2.lang.ui.FileTools;
-
-import org.jdom.Document;
-import org.jdom.JDOMException;
-
-import de.uni_luebeck.inb.knowarc.usecases.UseCaseDescription;
-import de.uni_luebeck.inb.knowarc.usecases.UseCaseEnumeration;
-
-final class LoadDescriptionAction extends AbstractAction {
-	/**
-	 * 
-	 */
-	private final ScriptPanel scriptPanel;
-	private final ExternalToolConfigView view;
-
-	LoadDescriptionAction(ScriptPanel scriptPanel, ExternalToolConfigView view) {
-		this.scriptPanel = scriptPanel;
-		this.view = view;
-	}
-
-	public void actionPerformed(ActionEvent e) {
-		String descriptionsString = FileTools.readStringFromFile(
-				this.scriptPanel, "Load tool description",
-				".xml");
-		if (descriptionsString != null) {
-			String errorMessage = null;
-			try {
-				Document doc = ScriptPanel.builder
-						.build(new StringReader(descriptionsString));
-				List<UseCaseDescription> descriptions = UseCaseEnumeration.readDescriptionsFromStream(new StringBufferInputStream(descriptionsString));
-				if (descriptions.isEmpty()) {
-					JOptionPane.showMessageDialog(this.scriptPanel, "No tool descriptions found", "File content", JOptionPane.ERROR_MESSAGE);
-					return;
-				}
-				
-				if (descriptions.size() == 1) {
-					view.getConfiguration().setUseCaseDescription(descriptions.get(0));
-					view.refreshConfiguration(view.getConfiguration());
-					return;
-				}
-				
-				List<String> descriptionNames = new ArrayList();
-				for (UseCaseDescription ud : descriptions) {
-					descriptionNames.add(ud.getUsecaseid());
-				}
-				Collections.sort(descriptionNames);
-				String chosenName = (String) JOptionPane.showInputDialog(this.scriptPanel, "Please select a tool description",
-						"Select tool description", JOptionPane.PLAIN_MESSAGE, null, descriptionNames.toArray(), descriptionNames.get(0));
-				if (chosenName != null) {
-					for (UseCaseDescription ud : descriptions) {
-						if (ud.getUsecaseid().equals(chosenName)) {
-							view.getConfiguration().setUseCaseDescription(ud);
-							view.refreshConfiguration(view.getConfiguration());
-							return;
-							
-						}
-					}
-				}
-			} catch (JDOMException e1) {
-				errorMessage = e1.getMessage();
-			} catch (IOException e1) {
-				errorMessage = e1.getMessage();
-			} catch (Exception e1) {
-				errorMessage = e1.getMessage();
-			}
-			if (errorMessage != null) {
-				JOptionPane.showMessageDialog(null, errorMessage,
-						"Tool description load error",
-						JOptionPane.ERROR_MESSAGE);
-			}
-		}
-	}
-}
\ No newline at end of file
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/SaveDescriptionAction.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/SaveDescriptionAction.java
deleted file mode 100644
index 31266b4..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/SaveDescriptionAction.java
+++ /dev/null
@@ -1,124 +0,0 @@
-/**
- * 
- */
-package net.sf.taverna.t2.activities.externaltool.views;
-
-import java.awt.Component;
-import java.awt.event.ActionEvent;
-import java.io.BufferedWriter;
-import java.io.File;
-import java.io.FileInputStream;
-import java.io.FileWriter;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.List;
-import java.util.prefs.Preferences;
-
-import javax.swing.AbstractAction;
-import javax.swing.JFileChooser;
-import javax.swing.JOptionPane;
-
-import net.sf.taverna.t2.lang.ui.ExtensionFileFilter;
-import net.sf.taverna.t2.lang.ui.FileTools;
-
-import org.apache.log4j.Logger;
-import org.jdom.Element;
-import org.jdom.output.Format;
-import org.jdom.output.XMLOutputter;
-
-import de.uni_luebeck.inb.knowarc.usecases.UseCaseDescription;
-import de.uni_luebeck.inb.knowarc.usecases.UseCaseEnumeration;
-
-final class SaveDescriptionAction extends AbstractAction {
-	/**
-	 * 
-	 */
-	private final ScriptPanel scriptPanel;
-	private final ExternalToolConfigView view;
-	
-	private static Logger logger = Logger.getLogger(SaveDescriptionAction.class);
-
-	private static XMLOutputter outputter = new XMLOutputter(Format
-			.getPrettyFormat());
-
-	SaveDescriptionAction(ScriptPanel scriptPanel, ExternalToolConfigView view) {
-		this.scriptPanel = scriptPanel;
-		this.view = view;
-	}
-
-	public void actionPerformed(ActionEvent e) {
-		UseCaseDescription currentDescription = view.makeConfiguration().getUseCaseDescription();
-		String usecaseid = currentDescription.getUsecaseid();
-		String description = currentDescription.getDescription();
-		String group = currentDescription.getGroup();
-		if ((usecaseid == null) || usecaseid.isEmpty() || (description == null) || description.isEmpty() || (group == null) || group.isEmpty()) {
-			JOptionPane.showMessageDialog(view, "Please fill in the tool annotation and\nthen re-export the description", "Missing annotation", JOptionPane.PLAIN_MESSAGE, null);
-			view.showAnnotationPanel();
-		} else {
-		saveStringToFile(this.scriptPanel,
-				"Save tool description", ".xml", currentDescription);
-		}
-	}
-	
-	public static boolean saveStringToFile(Component parent, String dialogTitle, String extension, UseCaseDescription description) {
-		JFileChooser fileChooser = new JFileChooser();
-		fileChooser.setDialogTitle(dialogTitle);
-
-		fileChooser.resetChoosableFileFilters();
-		fileChooser.setAcceptAllFileFilterUsed(true);
-		
-		fileChooser.setFileFilter(new ExtensionFileFilter(new String[] { extension }));
-
-		Preferences prefs = Preferences.userNodeForPackage(FileTools.class);
-		String curDir = prefs
-				.get("currentDir", System.getProperty("user.home"));
-		fileChooser.setCurrentDirectory(new File(curDir));
-
-		boolean tryAgain = true;
-		while (tryAgain) {
-			tryAgain = false;
-			int returnVal = fileChooser.showSaveDialog(parent);
-			if (returnVal == JFileChooser.APPROVE_OPTION) {
-				prefs.put("currentDir", fileChooser.getCurrentDirectory()
-						.toString());
-				File file = fileChooser.getSelectedFile();
-				if (!file.getName().contains(".")) {
-					String newName = file.getName() + extension;
-					file = new File(file.getParentFile(), newName);
-				}
-
-				// TODO: Open in separate thread to avoid hanging UI
-				try {
-					List<UseCaseDescription> currentDescriptions;
-					if (file.exists()) {
-						currentDescriptions = UseCaseEnumeration.readDescriptionsFromStream(new FileInputStream(file));
-					} else {
-						currentDescriptions = new ArrayList<UseCaseDescription>();
-					}
-					Element overallElement = new Element("usecases");
-					for (UseCaseDescription ud : currentDescriptions) {
-						if (!ud.getUsecaseid().equals(description.getUsecaseid())) {
-							overallElement.addContent(ud.writeToXMLElement());
-						}
-					}
-
-					overallElement.addContent(description.writeToXMLElement());
-					BufferedWriter out = new BufferedWriter(new FileWriter(file));
-			        out.write(outputter.outputString(overallElement));
-			        out.close();
-					logger.info("Saved content by overwriting " + file);
-					return true;
-				} catch (IOException ex) {
-					logger.warn("Could not save content to " + file, ex);
-					JOptionPane.showMessageDialog(parent,
-							"Could not save to " + file + ": \n\n"
-									+ ex.getMessage(), "Warning",
-							JOptionPane.WARNING_MESSAGE);
-					return false;
-				}
-			}
-		}
-		return false;
-	}
-	
-}
\ No newline at end of file
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/ScriptPanel.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/ScriptPanel.java
deleted file mode 100644
index ba15219..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/ScriptPanel.java
+++ /dev/null
@@ -1,149 +0,0 @@
-/**
- * 
- */
-package net.sf.taverna.t2.activities.externaltool.views;
-
-import java.awt.BorderLayout;
-import java.awt.FlowLayout;
-import java.awt.GridLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.io.IOException;
-
-import javax.swing.AbstractAction;
-import javax.swing.JButton;
-import javax.swing.JCheckBox;
-import javax.swing.JLabel;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JTextArea;
-import javax.swing.JTextField;
-import javax.swing.border.EmptyBorder;
-import javax.swing.text.JTextComponent;
-
-import net.sf.taverna.t2.activities.externaltool.ExternalToolActivityConfigurationBean;
-import net.sf.taverna.t2.lang.ui.DeselectingButton;
-import net.sf.taverna.t2.lang.ui.LineEnabledTextPanel;
-
-import org.jdom.input.SAXBuilder;
-
-import de.uni_luebeck.inb.knowarc.usecases.UseCaseDescription;
-import de.uni_luebeck.inb.knowarc.usecases.UseCaseEnumeration;
-
-
-/**
- * @author alanrw
- *
- */
-public class ScriptPanel extends JPanel {
-	
-	private static final String SCRIPT_DESCRIPTION = "Specify the commands that you want to run. You can use data arriving at an input port to replace parts of the command or to write to a file. You can also take data written to a file and send it to an output port.";
-	static SAXBuilder builder = new SAXBuilder();
-	private final JTextComponent scriptTextArea;
-	
-	public ScriptPanel(final ExternalToolConfigView view, JTextComponent scriptTextArea, JCheckBox stdInCheckBox, JCheckBox stdOutCheckBox, JCheckBox stdErrCheckBox, JTextField returnCodesField) {
-		super();
-		this.setLayout(new BorderLayout());
-	
-		JTextArea descriptionText = new JTextArea(
-				SCRIPT_DESCRIPTION);
-		descriptionText.setEditable(false);
-		descriptionText.setFocusable(false);
-		descriptionText.setBorder(new EmptyBorder(5, 5, 10, 5));
-		descriptionText.setLineWrap(true);
-		descriptionText.setWrapStyleWord(true);
-		this.add(descriptionText, BorderLayout.NORTH);
-
-		this.scriptTextArea = scriptTextArea;
-		
-		this.add(new LineEnabledTextPanel(scriptTextArea),
-				BorderLayout.CENTER);
-		
-
-		UseCaseDescription useCaseDescription = view.getConfiguration().getUseCaseDescription();
-		stdInCheckBox.setSelected(useCaseDescription.isIncludeStdIn());
-		stdOutCheckBox.setSelected(useCaseDescription.isIncludeStdOut());
-		stdErrCheckBox.setSelected(useCaseDescription.isIncludeStdErr());
-		returnCodesField.setText(useCaseDescription.getReturnCodesAsText());
-		
-		JPanel codesPanel = new JPanel(new FlowLayout());
-		codesPanel.add(new JLabel("Valid return codes:"));
-		codesPanel.add(returnCodesField);
-
-		JPanel streamPanel = new JPanel(new FlowLayout());
-		streamPanel.add(stdInCheckBox);
-		streamPanel.add(stdOutCheckBox);
-		streamPanel.add(stdErrCheckBox);
-
-		JPanel buttonPanel = new JPanel(new FlowLayout());
-		if (view.isOriginallyFromRepository()) {
-			JButton revertButton = new DeselectingButton("Revert to original description",
-					new AbstractAction(){
-
-				@Override
-				public void actionPerformed(ActionEvent e) {
-					ExternalToolActivityConfigurationBean bean = view.makeConfiguration();
-					String repositoryUrl = bean.getRepositoryUrl();
-					String id = bean.getExternaltoolid();
-					UseCaseDescription usecase = null;
-					try {
-						usecase = UseCaseEnumeration.readDescriptionFromUrl(
-							repositoryUrl, id);
-					}
-					catch (IOException ex) {
-						// Already logged
-					}
-					if (usecase != null) {
-						bean.setUseCaseDescription(usecase);
-						view.setEditable(false, bean);
-					} else {
-						JOptionPane.showMessageDialog(view, "Unable to find tool description " + id, "Missing tool description", JOptionPane.ERROR_MESSAGE);
-					}
-				}});
-			revertButton.setToolTipText("Revert to the tool description from the repository");
-			buttonPanel.add(revertButton);
-		}
-		JButton loadScriptButton = new DeselectingButton("Load description",
-				new LoadDescriptionAction(this, view));
-		loadScriptButton.setToolTipText("Load tool description from a file");
-
-		JButton saveScriptButton = new DeselectingButton("Export description",
-				new SaveDescriptionAction(this, view));
-		saveScriptButton.setToolTipText("Export the tool description to a file");
-
-		JButton clearScriptButton = new DeselectingButton("Clear script",
-				new AbstractAction() {
-
-			public void actionPerformed(ActionEvent e) {
-				clearScript();
-			}
-
-		});
-		clearScriptButton.setToolTipText("Clear the script from the edit area");
-
-		buttonPanel.add(loadScriptButton);
-		buttonPanel.add(saveScriptButton);
-		buttonPanel.add(clearScriptButton);
-
-		JPanel subPanel = new JPanel(new GridLayout(3,1));
-		subPanel.add(codesPanel);
-		subPanel.add(streamPanel);
-		subPanel.add(buttonPanel);
-
-		this.add(subPanel, BorderLayout.SOUTH);
-	}
-
-	/**
-	 * Method for clearing the script
-	 * 
-	 */
-	private void clearScript() {
-		if (JOptionPane.showConfirmDialog(this,
-				"Do you really want to clear the tool description?",
-				"Clearing the tool description", JOptionPane.YES_NO_OPTION) == JOptionPane.YES_OPTION) {
-			scriptTextArea.setText("");
-		}
-
-	}
-
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/StaticStringPanel.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/StaticStringPanel.java
deleted file mode 100644
index 885cab5..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/StaticStringPanel.java
+++ /dev/null
@@ -1,106 +0,0 @@
-/**
- * 
- */
-package net.sf.taverna.t2.activities.externaltool.views;
-
-import java.awt.BorderLayout;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.Insets;
-import java.awt.event.ActionEvent;
-import java.util.List;
-
-import javax.swing.AbstractAction;
-import javax.swing.JButton;
-import javax.swing.JComponent;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JTextArea;
-import javax.swing.JTextField;
-import javax.swing.border.EmptyBorder;
-
-import net.sf.taverna.t2.activities.externaltool.utils.Tools;
-import net.sf.taverna.t2.lang.ui.DeselectingButton;
-import net.sf.taverna.t2.lang.ui.ReadOnlyTextArea;
-
-/**
- * @author alanrw
- *
- */
-public class StaticStringPanel extends JPanel {
-	
-	private static final String STATIC_STRING_DESCRIPTION = "A fixed string can be written to the specified file.";
-	private final List<ExternalToolStaticStringViewer> staticStringViewList;
-	
-	int staticGridy = 1;
-	
-	private static String[] elementLabels = new String[] {"String to copy", "To file"};
-	
-	public StaticStringPanel(final List<ExternalToolStaticStringViewer> staticStringViewList) {
-		super(new BorderLayout());
-		this.staticStringViewList = staticStringViewList;
-		final JPanel staticEditPanel = new JPanel(new GridBagLayout());
-
-		final GridBagConstraints staticConstraint = new GridBagConstraints();
-		staticConstraint.insets = new Insets(5, 5, 5, 5);
-		staticConstraint.anchor = GridBagConstraints.FIRST_LINE_START;
-		staticConstraint.gridx = 0;
-		staticConstraint.gridy = 0;
-		staticConstraint.weightx = 0.1;
-		staticConstraint.fill = GridBagConstraints.BOTH;
-
-		staticConstraint.gridx = 0;
-		synchronized (staticStringViewList) {
-			for (ExternalToolStaticStringViewer staticView : staticStringViewList) {
-				addStaticStringViewer(StaticStringPanel.this, staticEditPanel,
-						staticView);
-			}
-		}
-
-		JTextArea descriptionText = new ReadOnlyTextArea(
-				STATIC_STRING_DESCRIPTION);
-		descriptionText.setEditable(false);
-		descriptionText.setFocusable(false);
-		descriptionText.setBorder(new EmptyBorder(5, 5, 10, 5));
-		this.add(descriptionText, BorderLayout.NORTH);
-
-		this.add(new JScrollPane(staticEditPanel),
-				BorderLayout.CENTER);
-		JButton addStaticStringButton = new DeselectingButton("Add string",
-				new AbstractAction() {
-			// FIXME refactor this into a method
-			public void actionPerformed(ActionEvent e) {
-
-				ExternalToolStaticStringViewer newViewer = new ExternalToolStaticStringViewer();
-				synchronized (staticStringViewList) {
-					staticStringViewList.add(newViewer);
-					addStaticStringViewer(StaticStringPanel.this, staticEditPanel,
-							newViewer);
-					staticEditPanel.revalidate();
-					staticEditPanel.repaint();
-				}
-			}
-
-		});
-
-		JPanel buttonPanel = new JPanel(new BorderLayout());
-
-		buttonPanel.add(addStaticStringButton, BorderLayout.EAST);
-
-		this.add(buttonPanel, BorderLayout.SOUTH);
-	
-	}
-	
-	private void addStaticStringViewer(final JPanel outerPanel,
-			final JPanel panel, ExternalToolStaticStringViewer viewer) {
-		Tools.addViewer(panel,
-				elementLabels,
-				new JComponent[] {new JScrollPane(viewer.getContentField()), viewer.getValueField()},
-				staticStringViewList,
-				viewer,
-				outerPanel);
-	}
-
-
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/StaticUrlPanel.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/StaticUrlPanel.java
deleted file mode 100644
index ba441f4..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/StaticUrlPanel.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/**
- * 
- */
-package net.sf.taverna.t2.activities.externaltool.views;
-
-import java.awt.BorderLayout;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.Insets;
-import java.awt.event.ActionEvent;
-import java.util.List;
-
-import javax.swing.AbstractAction;
-import javax.swing.JButton;
-import javax.swing.JComponent;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JTextArea;
-import javax.swing.JTextField;
-import javax.swing.border.EmptyBorder;
-
-import net.sf.taverna.t2.activities.externaltool.utils.Tools;
-import net.sf.taverna.t2.lang.ui.DeselectingButton;
-import net.sf.taverna.t2.lang.ui.ReadOnlyTextArea;
-
-/**
- * @author alanrw
- *
- */
-public class StaticUrlPanel extends JPanel {
-	
-	private static final String STATIC_URL_DESCRIPTION = "The data at a URL can be downloaded and stored in the specified file.";
-	private final List<ExternalToolStaticUrlViewer> staticUrlViewList;
-	private int staticGridy = 1;
-
-	private static String[] elementLabels = new String[] {"Copy from URL", "To file"};
-	
-
-	public StaticUrlPanel(final List<ExternalToolStaticUrlViewer> staticUrlViewList) {
-	
-	super(new BorderLayout());
-	this.staticUrlViewList = staticUrlViewList;
-	final JPanel staticEditPanel = new JPanel(new GridBagLayout());
-
-	final GridBagConstraints staticConstraint = new GridBagConstraints();
-	staticConstraint.insets = new Insets(5, 5, 5, 5);
-	staticConstraint.anchor = GridBagConstraints.FIRST_LINE_START;
-	staticConstraint.gridx = 0;
-	staticConstraint.gridy = 0;
-	staticConstraint.weightx = 0.1;
-	staticConstraint.fill = GridBagConstraints.BOTH;
-
-	staticConstraint.gridx = 0;
-	synchronized (staticUrlViewList) {
-		for (ExternalToolStaticUrlViewer staticView : staticUrlViewList) {
-			addStaticUrlViewer(this, staticEditPanel,
-					staticView);
-		}
-	}
-
-	this.add(new JScrollPane(staticEditPanel),
-			BorderLayout.CENTER);
-
-	JTextArea descriptionText = new ReadOnlyTextArea(
-			STATIC_URL_DESCRIPTION);
-	descriptionText.setEditable(false);
-	descriptionText.setFocusable(false);
-	descriptionText.setBorder(new EmptyBorder(5, 5, 10, 5));
-
-	this.add(descriptionText, BorderLayout.NORTH);
-
-	JButton addstaticPortButton = new DeselectingButton("Add URL",
-			new AbstractAction() {
-		// FIXME refactor this into a method
-		public void actionPerformed(ActionEvent e) {
-
-			ExternalToolStaticUrlViewer newViewer = new ExternalToolStaticUrlViewer();
-			synchronized (staticUrlViewList) {
-				staticUrlViewList.add(newViewer);
-				addStaticUrlViewer(StaticUrlPanel.this, staticEditPanel,
-						newViewer);
-				staticEditPanel.revalidate();
-				staticEditPanel.repaint();
-			}
-		}
-
-	});
-	JPanel buttonPanel = new JPanel(new BorderLayout());
-
-	buttonPanel.add(addstaticPortButton, BorderLayout.EAST);
-
-	this.add(buttonPanel, BorderLayout.SOUTH);
-
-	}
-	
-	private void addStaticUrlViewer(final JPanel outerPanel,
-			final JPanel panel, ExternalToolStaticUrlViewer viewer) {
-		Tools.addViewer(panel,
-				elementLabels,
-				new JComponent[] {viewer.getContentField(), viewer.getValueField()},
-				staticUrlViewList,
-				viewer,
-				outerPanel);
-	}
-
-
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/StringReplacementPanel.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/StringReplacementPanel.java
deleted file mode 100644
index 1f85d3a..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/StringReplacementPanel.java
+++ /dev/null
@@ -1,134 +0,0 @@
-/**
- * 
- */
-package net.sf.taverna.t2.activities.externaltool.views;
-
-import java.awt.BorderLayout;
-import java.awt.Color;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.Insets;
-import java.awt.event.ActionEvent;
-import java.util.List;
-
-import javax.swing.AbstractAction;
-import javax.swing.BorderFactory;
-import javax.swing.JButton;
-import javax.swing.JCheckBox;
-import javax.swing.JComponent;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JTextArea;
-import javax.swing.JTextField;
-import javax.swing.border.CompoundBorder;
-import javax.swing.border.EmptyBorder;
-
-import net.sf.taverna.t2.activities.externaltool.manager.ssh.ExternalToolSshNodeViewer;
-import net.sf.taverna.t2.activities.externaltool.utils.Tools;
-import net.sf.taverna.t2.lang.ui.DeselectingButton;
-
-/**
- * @author alanrw
- *
- */
-public class StringReplacementPanel extends JPanel {
-	
-	private static final String STRING_REPLACEMENT_DESCRIPTION = "You can use a string replacement to " +
-	"feed data into the service via an input port and have that data replace part of the " +
-	"command.";
-	private final List<ExternalToolStringReplacementViewer> stringReplacementViewList;
-	private int stringReplacementGridy = 1;
-	private final ExternalToolConfigView view;
-	
-	private static Insets insets = new Insets(1,5,1,5);
-	
-	private static String[] elementLabels = new String[] {"Taverna port name", "Replace port name", "String to replace"};
-	
-	private static CompoundBorder border = BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(5,5,5,5), BorderFactory.createLineBorder(Color.BLACK, 1));
-
-	
-	public StringReplacementPanel(final ExternalToolConfigView view, final List<ExternalToolStringReplacementViewer> stringReplacementViewList) {
-		super(new BorderLayout());
-		this.view = view;
-		this.stringReplacementViewList = stringReplacementViewList;
-
-		final JPanel inputEditPanel = new JPanel(new GridBagLayout());
-
-		final GridBagConstraints inputConstraint = new GridBagConstraints();
-
-		inputConstraint.anchor = GridBagConstraints.FIRST_LINE_START;
-		inputConstraint.gridx = 0;
-		inputConstraint.gridy = 0;
-		inputConstraint.weightx = 0.1;
-		inputConstraint.fill = GridBagConstraints.BOTH;
-
-		inputConstraint.gridx = 0;
-		synchronized (stringReplacementViewList) {
-			for (ExternalToolStringReplacementViewer inputView : stringReplacementViewList) {
-				addStringReplacementViewer(this, inputEditPanel,
-						inputView, elementLabels);
-
-			}
-		}
-
-		JTextArea descriptionText = new JTextArea(
-				STRING_REPLACEMENT_DESCRIPTION);
-		descriptionText.setEditable(false);
-		descriptionText.setFocusable(false);
-		descriptionText.setBorder(new EmptyBorder(5, 5, 10, 5));
-		descriptionText.setLineWrap(true);
-		descriptionText.setWrapStyleWord(true);
-
-		this.add(descriptionText, BorderLayout.NORTH);
-		this.add(new JScrollPane(inputEditPanel),
-				BorderLayout.CENTER);
-		JButton addInputPortButton = new DeselectingButton("Add string replacement",
-				new AbstractAction() {
-
-			public void actionPerformed(ActionEvent e) {
-
-				int portNumber = 1;
-				String name2 = "in" + portNumber++;
-				boolean nameExists = true;
-				while (nameExists == true) {
-					nameExists = view.portNameExists(name2);
-					if (nameExists) {
-						name2 = "in" + portNumber++;
-					}
-				}
-
-				ExternalToolStringReplacementViewer newViewer = new ExternalToolStringReplacementViewer(
-						name2);
-				synchronized (stringReplacementViewList) {
-					stringReplacementViewList.add(newViewer);
-					addStringReplacementViewer(StringReplacementPanel.this, inputEditPanel,
-							newViewer, elementLabels);
-					inputEditPanel.revalidate();
-					inputEditPanel.repaint();
-				}
-
-			}
-
-		});
-
-		JPanel buttonPanel = new JPanel();
-		buttonPanel.setLayout(new BorderLayout());
-
-		buttonPanel.add(addInputPortButton, BorderLayout.EAST);
-
-		this.add(buttonPanel, BorderLayout.SOUTH);
-	}
-	
-	private void addStringReplacementViewer(final JPanel outerPanel,
-			final JPanel innerPanel, final ExternalToolStringReplacementViewer viewer, String[] elementLabels) {
-		Tools.addViewer(innerPanel,
-				elementLabels,
-				new JComponent[] {viewer.getNameField(), viewer.getValueFromField(), viewer.getValueField()},
-				stringReplacementViewList,
-				viewer,
-				outerPanel);
-	}
-
-
-}
diff --git a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/ToolXMLPanel.java b/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/ToolXMLPanel.java
deleted file mode 100644
index b49211f..0000000
--- a/taverna-external-tool-activity-ui/src/main/java/net/sf/taverna/t2/activities/externaltool/views/ToolXMLPanel.java
+++ /dev/null
@@ -1,33 +0,0 @@
-/**
- * 
- */
-package net.sf.taverna.t2.activities.externaltool.views;
-
-import java.awt.BorderLayout;
-
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-
-import net.sf.taverna.t2.renderers.impl.XMLTree;
-
-import de.uni_luebeck.inb.knowarc.usecases.UseCaseDescription;
-
-/**
- * @author alanrw
- *
- */
-public class ToolXMLPanel extends JPanel {
-
-	public ToolXMLPanel(UseCaseDescription useCaseDescription) {
-		super(new BorderLayout());
-		XMLTree xmlTree = new XMLTree(useCaseDescription.writeToXMLElement());
-		this.add(new JScrollPane(xmlTree), BorderLayout.CENTER);
-	}
-
-	public void regenerateTree(UseCaseDescription useCaseDescription) {
-		this.removeAll();
-		XMLTree xmlTree = new XMLTree(useCaseDescription.writeToXMLElement());
-		this.add(new JScrollPane(xmlTree), BorderLayout.CENTER);		
-	}
-
-}
diff --git a/taverna-external-tool-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanismEditor b/taverna-external-tool-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanismEditor
deleted file mode 100644
index 9307977..0000000
--- a/taverna-external-tool-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanismEditor
+++ /dev/null
@@ -1,2 +0,0 @@
-net.sf.taverna.t2.activities.externaltool.manager.local.LocalInvocationMechanismEditor
-net.sf.taverna.t2.activities.externaltool.manager.ssh.SshInvocationMechanismEditor
diff --git a/taverna-external-tool-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider b/taverna-external-tool-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider
deleted file mode 100644
index e94cf6e..0000000
--- a/taverna-external-tool-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider
+++ /dev/null
@@ -1,2 +0,0 @@
-net.sf.taverna.t2.activities.externaltool.servicedescriptions.ExternalToolServiceProvider
-net.sf.taverna.t2.activities.externaltool.servicedescriptions.ExternalToolTemplateServiceDescription
diff --git a/taverna-external-tool-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent b/taverna-external-tool-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent
deleted file mode 100644
index db316f2..0000000
--- a/taverna-external-tool-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent
+++ /dev/null
@@ -1,4 +0,0 @@
-net.sf.taverna.t2.activities.externaltool.menu.ConfigureExternalToolMenuAction
-# net.sf.taverna.t2.activities.externaltool.menu.FeedbackMenuAction
-net.sf.taverna.t2.activities.externaltool.menu.AddExternalToolContextualMenuAction
-net.sf.taverna.t2.activities.externaltool.menu.AddExternalToolMenuAction
diff --git a/taverna-external-tool-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ShutdownSPI b/taverna-external-tool-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ShutdownSPI
deleted file mode 100644
index e6686a0..0000000
--- a/taverna-external-tool-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ShutdownSPI
+++ /dev/null
@@ -1 +0,0 @@
-net.sf.taverna.t2.activities.externaltool.manager.InvocationGroupManagerShutdownHook
\ No newline at end of file
diff --git a/taverna-external-tool-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.StartupSPI b/taverna-external-tool-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.StartupSPI
deleted file mode 100644
index 0dd97e4..0000000
--- a/taverna-external-tool-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.StartupSPI
+++ /dev/null
@@ -1 +0,0 @@
-net.sf.taverna.t2.activities.externaltool.manager.InvocationGroupManagerStartupHook
diff --git a/taverna-external-tool-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI b/taverna-external-tool-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI
deleted file mode 100644
index cdafd5d..0000000
--- a/taverna-external-tool-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI
+++ /dev/null
@@ -1 +0,0 @@
-net.sf.taverna.t2.activities.externaltool.servicedescriptions.ExternalToolActivityIcon
diff --git a/taverna-external-tool-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.configuration.ConfigurationUIFactory b/taverna-external-tool-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.configuration.ConfigurationUIFactory
deleted file mode 100644
index b3d1525..0000000
--- a/taverna-external-tool-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.configuration.ConfigurationUIFactory
+++ /dev/null
@@ -1 +0,0 @@
-net.sf.taverna.t2.activities.externaltool.manager.ToolInvocationConfigurationUIFactory
\ No newline at end of file
diff --git a/taverna-external-tool-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory b/taverna-external-tool-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory
deleted file mode 100644
index ca0d30f..0000000
--- a/taverna-external-tool-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory
+++ /dev/null
@@ -1 +0,0 @@
-net.sf.taverna.t2.activities.externaltool.views.ExternalToolActivityViewFactory
diff --git a/taverna-external-tool-activity-ui/src/main/resources/META-INF/spring/external-tool-activity-ui-context-osgi.xml b/taverna-external-tool-activity-ui/src/main/resources/META-INF/spring/external-tool-activity-ui-context-osgi.xml
deleted file mode 100644
index 3d7110c..0000000
--- a/taverna-external-tool-activity-ui/src/main/resources/META-INF/spring/external-tool-activity-ui-context-osgi.xml
+++ /dev/null
@@ -1,39 +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="ToolInvocationConfigurationUIFactory" interface="uk.org.taverna.configuration.ConfigurationUIFactory" />
-
-	<service ref="InvocationGroupManagerStartupHook" interface="net.sf.taverna.t2.workbench.StartupSPI" />
-
-	<service ref="ExternalToolActivityIcon" interface="net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI" />
-
-	<service ref="LocalInvocationMechanismEditor" interface="net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanismEditor" />
-	<service ref="SshInvocationMechanismEditor" interface="net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanismEditor" />
-
-	<service ref="ExternalToolServiceProvider" interface="net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider" />
-	<service ref="ExternalToolTemplateServiceDescription" interface="net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider" />
-
-	<service ref="ConfigureExternalToolMenuAction" auto-export="interfaces" />
-	<service ref="AddExternalToolContextualMenuAction" auto-export="interfaces" />
-	<service ref="AddExternalToolMenuAction" auto-export="interfaces" />
-
-	<service ref="InvocationGroupManagerShutdownHook" interface="net.sf.taverna.t2.workbench.ShutdownSPI" />
-
-	<service ref="ExternalToolActivityViewFactory" interface="net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory" />
-
-	<list id="mechanismCreators" interface="net.sf.taverna.t2.activities.externaltool.manager.MechanismCreator" cardinality="0..N" />
-	<list id="invocationMechanismEditors" interface="net.sf.taverna.t2.activities.externaltool.manager.InvocationMechanismEditor" cardinality="0..N" />
-
-	<reference id="editManager" interface="net.sf.taverna.t2.workbench.edits.EditManager" />
-	<reference id="fileManager" interface="net.sf.taverna.t2.workbench.file.FileManager" />
-	<reference id="menuManager" interface="net.sf.taverna.t2.ui.menu.MenuManager" />
-	<reference id="selectionManager" interface="net.sf.taverna.t2.workbench.selection.SelectionManager" />
-	<reference id="activityIconManager" interface="net.sf.taverna.t2.workbench.activityicons.ActivityIconManager" />
-	<reference id="colourManager" interface="net.sf.taverna.t2.workbench.configuration.colour.ColourManager" />
-
-</beans:beans>
diff --git a/taverna-external-tool-activity-ui/src/main/resources/META-INF/spring/external-tool-activity-ui-context.xml b/taverna-external-tool-activity-ui/src/main/resources/META-INF/spring/external-tool-activity-ui-context.xml
deleted file mode 100644
index 7cf7f63..0000000
--- a/taverna-external-tool-activity-ui/src/main/resources/META-INF/spring/external-tool-activity-ui-context.xml
+++ /dev/null
@@ -1,50 +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="ToolInvocationConfigurationUIFactory" class="net.sf.taverna.t2.activities.externaltool.manager.ToolInvocationConfigurationUIFactory">
-		<property name="mechanismCreators" ref="mechanismCreators" />
-		<property name="invocationMechanismEditors" ref="invocationMechanismEditors" />
-	</bean>
-
-	<bean id="InvocationGroupManagerStartupHook" class="net.sf.taverna.t2.activities.externaltool.manager.InvocationGroupManagerStartupHook" />
-
-	<bean id="ExternalToolActivityIcon" class="net.sf.taverna.t2.activities.externaltool.servicedescriptions.ExternalToolActivityIcon">
-			<property name="colourManager" ref="colourManager" />
-	</bean>
-
-	<bean id="LocalInvocationMechanismEditor" class="net.sf.taverna.t2.activities.externaltool.manager.local.LocalInvocationMechanismEditor" />
-	<bean id="SshInvocationMechanismEditor" class="net.sf.taverna.t2.activities.externaltool.manager.ssh.SshInvocationMechanismEditor" />
-
-	<bean id="ExternalToolServiceProvider" class="net.sf.taverna.t2.activities.externaltool.servicedescriptions.ExternalToolServiceProvider" />
-	<bean id="ExternalToolTemplateServiceDescription" class="net.sf.taverna.t2.activities.externaltool.servicedescriptions.ExternalToolTemplateServiceDescription" />
-
-	<bean id="ConfigureExternalToolMenuAction" class="net.sf.taverna.t2.activities.externaltool.menu.ConfigureExternalToolMenuAction">
-			<property name="editManager" ref="editManager" />
-			<property name="fileManager" ref="fileManager" />
-			<property name="activityIconManager" ref="activityIconManager" />
-	</bean>
-	<bean id="AddExternalToolContextualMenuAction" class="net.sf.taverna.t2.activities.externaltool.menu.AddExternalToolContextualMenuAction">
-			<property name="editManager" ref="editManager" />
-			<property name="menuManager" ref="menuManager" />
-			<property name="selectionManager" ref="selectionManager" />
-			<property name="activityIconManager" ref="activityIconManager" />
-	</bean>
-	<bean id="AddExternalToolMenuAction" class="net.sf.taverna.t2.activities.externaltool.menu.AddExternalToolMenuAction">
-			<property name="editManager" ref="editManager" />
-			<property name="menuManager" ref="menuManager" />
-			<property name="selectionManager" ref="selectionManager" />
-			<property name="activityIconManager" ref="activityIconManager" />
-	</bean>
-
-	<bean id="InvocationGroupManagerShutdownHook" class="net.sf.taverna.t2.activities.externaltool.manager.InvocationGroupManagerShutdownHook" />
-
-	<bean id="ExternalToolActivityViewFactory" class="net.sf.taverna.t2.activities.externaltool.views.ExternalToolActivityViewFactory">
-			<property name="editManager" ref="editManager" />
-			<property name="fileManager" ref="fileManager" />
-			<property name="activityIconManager" ref="activityIconManager" />
-			<property name="colourManager" ref="colourManager" />
-	</bean>
-
-</beans>
diff --git a/taverna-external-tool-activity-ui/src/main/resources/externaltool.png b/taverna-external-tool-activity-ui/src/main/resources/externaltool.png
deleted file mode 100644
index a9e84e6..0000000
--- a/taverna-external-tool-activity-ui/src/main/resources/externaltool.png
+++ /dev/null
Binary files differ
diff --git a/taverna-localworker-activity-ui/pom.xml b/taverna-localworker-activity-ui/pom.xml
deleted file mode 100644
index 556de86..0000000
--- a/taverna-localworker-activity-ui/pom.xml
+++ /dev/null
@@ -1,142 +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</groupId>
-                <artifactId>taverna-parent</artifactId>
-                <version>3.0.1-SNAPSHOT</version>
-	</parent>
-	<groupId>net.sf.taverna.t2.ui-activities</groupId>
-	<artifactId>localworker-activity-ui</artifactId>
-        <version>2.0-SNAPSHOT</version>
-	<packaging>bundle</packaging>
-	<name>Taverna 2 Localworker Activity UI</name>
-	<dependencies>
-		<dependency>
-			<groupId>net.sf.taverna.t2.ui-activities</groupId>
-			<artifactId>beanshell-activity-ui</artifactId>
-			<version>${t2.activities.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>net.sf.taverna.t2.ui-api</groupId>
-			<artifactId>activity-icons-api</artifactId>
-			<version>${t2.ui.api.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>net.sf.taverna.t2.ui-api</groupId>
-			<artifactId>activity-palette-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>file-api</artifactId>
-			<version>${t2.ui.api.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>net.sf.taverna.t2.ui-api</groupId>
-			<artifactId>menu-api</artifactId>
-			<version>${t2.ui.api.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>uk.org.taverna.configuration</groupId>
-			<artifactId>taverna-app-configuration-api</artifactId>
-			<version>${taverna.configuration.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>uk.org.taverna.scufl2</groupId>
-			<artifactId>scufl2-api</artifactId>
-			<version>${scufl2.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>com.fasterxml.jackson.core</groupId>
-			<artifactId>jackson-databind</artifactId>
-			<version>2.2.2</version>
-		</dependency>
-
-		<!-- category:biojava -->
-		<!-- net.sourceforge.taverna.scuflworkers.biojava.GenBankParserWorker -->
-		<!-- net.sourceforge.taverna.scuflworkers.biojava.ReverseCompWorker -->
-		<!-- net.sourceforge.taverna.scuflworkers.biojava.SwissProtParserWorker -->
-		<!-- net.sourceforge.taverna.scuflworkers.biojava.TranscribeWorker -->
-		<dependency>
-			<groupId>uk.org.mygrid.resources</groupId>
-			<artifactId>biojava</artifactId>
-			<version>1.4pre1</version>
-		</dependency>
-		<!-- category:xml -->
-		<!-- net.sourceforge.taverna.scuflworkers.xml.XPathTextWorker -->
-		<dependency>
-			<groupId>org.dom4j</groupId>
-			<artifactId>com.springsource.org.dom4j</artifactId>
-			<version>${dom4j.version}</version>
-		</dependency>
-		<!-- <dependency>
-			<groupId>dom4j</groupId>
-			<artifactId>dom4j</artifactId>
-			<version>1.6</version>
-		</dependency> -->
-		<!-- category:net -->
-		<!-- org.embl.ebi.escience.scuflworkers.java.SendEmail -->
-		<dependency>
-			<groupId>javax.mail</groupId>
-			<artifactId>com.springsource.javax.mail</artifactId>
-			<version>${mail.version}</version>
-		</dependency>
-		<!-- <dependency>
-			<groupId>javax.mail</groupId>
-			<artifactId>mail</artifactId>
-			<version>1.4</version>
-		</dependency> -->
-		<dependency>
-			<groupId>javax.activation</groupId>
-			<artifactId>com.springsource.javax.activation</artifactId>
-			<version>1.1.1</version>
-		</dependency>
-		<!-- <dependency>
-			<groupId>javax.activation</groupId>
-			<artifactId>activation</artifactId>
-			<version>1.1</version>
-		</dependency> -->
-		<!-- category:base64 -->
-		<!-- org.embl.ebi.escience.scuflworkers.java.EncodeBase64 -->
-		<!-- org.embl.ebi.escience.scuflworkers.java.DecodeBase64 -->
-		<dependency>
-			<groupId>commons-codec</groupId>
-			<artifactId>commons-codec</artifactId>
-			<version>${commons.codec.version}</version>
-		</dependency>
-		<!-- <dependency>
-			<groupId>commons-codec</groupId>
-			<artifactId>commons-codec</artifactId>
-			<version>1.3</version>
-		</dependency> -->
-	</dependencies>
-	<repositories>
-		<repository>
-			<releases />
-			<snapshots>
-				<enabled>false</enabled>
-			</snapshots>
-			<id>mygrid-repository</id>
-			<name>myGrid Repository</name>
-			<url>http://www.mygrid.org.uk/maven/repository
-			</url>
-		</repository>
-		<repository>
-			<releases>
-				<enabled>false</enabled>
-			</releases>
-			<snapshots />
-			<id>mygrid-snapshot-repository</id>
-			<name>myGrid Snapshot Repository</name>
-			<url>http://www.mygrid.org.uk/maven/snapshot-repository</url>
-		</repository>
-	</repositories>
-</project>
-
diff --git a/taverna-localworker-activity-ui/src/main/java/net/sf/taverna/t2/activities/localworker/actions/LocalworkerActivityConfigurationAction.java b/taverna-localworker-activity-ui/src/main/java/net/sf/taverna/t2/activities/localworker/actions/LocalworkerActivityConfigurationAction.java
deleted file mode 100644
index 2016ad0..0000000
--- a/taverna-localworker-activity-ui/src/main/java/net/sf/taverna/t2/activities/localworker/actions/LocalworkerActivityConfigurationAction.java
+++ /dev/null
@@ -1,117 +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.activities.localworker.actions;
-
-import java.awt.Frame;
-import java.awt.event.ActionEvent;
-
-import javax.swing.Action;
-import javax.swing.JOptionPane;
-
-import net.sf.taverna.t2.activities.localworker.views.LocalworkerActivityConfigView;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.file.FileManager;
-import net.sf.taverna.t2.workbench.ui.actions.activity.ActivityConfigurationAction;
-import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ActivityConfigurationDialog;
-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 com.fasterxml.jackson.databind.JsonNode;
-
-/**
- * The {@link LocalworkerActivity}s have pre-defined scripts, ports etc in a serialised form on
- * disk. So if the user wants to change them they have to do so at own risk.
- *
- * @author Ian Dunlop
- */
-@SuppressWarnings("serial")
-public class LocalworkerActivityConfigurationAction extends ActivityConfigurationAction {
-
-	public static final String EDIT_LOCALWORKER_SCRIPT = "Edit beanshell script";
-
-	private final EditManager editManager;
-
-	private final FileManager fileManager;
-
-	private final ApplicationConfiguration applicationConfiguration;
-
-	private Scufl2Tools scufl2Tools = new Scufl2Tools();
-
-	public LocalworkerActivityConfigurationAction(Activity activity, Frame owner,
-			EditManager editManager, FileManager fileManager,
-			ActivityIconManager activityIconManager,
-			ServiceDescriptionRegistry serviceDescriptionRegistry,
-			ApplicationConfiguration applicationConfiguration) {
-		super(activity, activityIconManager, serviceDescriptionRegistry);
-		this.editManager = editManager;
-		this.fileManager = fileManager;
-		this.applicationConfiguration = applicationConfiguration;
-		putValue(Action.NAME, EDIT_LOCALWORKER_SCRIPT);
-	}
-
-	/**
-	 * If the localworker has not been changed it pops up a {@link JOptionPane} warning the user
-	 * that they change things at their own risk. Otherwise just show the config view
-	 */
-	public void actionPerformed(ActionEvent e) {
-		Object[] options = { "Continue", "Cancel" };
-		Configuration configuration = scufl2Tools.configurationFor(activity, activity.getParent());
-		JsonNode json = configuration.getJson();
-		if (!json.get("isAltered").booleanValue()) {
-			int n = JOptionPane
-					.showOptionDialog(
-							null,
-							"Changing the properties of a Local Worker may affect its behaviour. Do you want to continue?",
-							"WARNING", JOptionPane.YES_NO_OPTION, JOptionPane.QUESTION_MESSAGE,
-							null, // do not use a
-							// custom Icon
-							options, options[0]);
-
-			if (n == 0) {
-				// continue was clicked so prepare for config
-				openDialog();
-			} else {
-				// do nothing
-			}
-		} else {
-			openDialog();
-		}
-	}
-
-	private void openDialog() {
-		ActivityConfigurationDialog currentDialog = ActivityConfigurationAction
-				.getDialog(getActivity());
-		if (currentDialog != null) {
-			currentDialog.toFront();
-			return;
-		}
-		final LocalworkerActivityConfigView localworkerConfigView = new LocalworkerActivityConfigView(
-				getActivity(), applicationConfiguration);
-		final ActivityConfigurationDialog dialog = new ActivityConfigurationDialog(getActivity(),
-				localworkerConfigView, editManager);
-		ActivityConfigurationAction.setDialog(getActivity(), dialog, fileManager);
-
-	}
-}
diff --git a/taverna-localworker-activity-ui/src/main/java/net/sf/taverna/t2/activities/localworker/menu/ConfigureLocalworkerMenuAction.java b/taverna-localworker-activity-ui/src/main/java/net/sf/taverna/t2/activities/localworker/menu/ConfigureLocalworkerMenuAction.java
deleted file mode 100644
index 3afed8d..0000000
--- a/taverna-localworker-activity-ui/src/main/java/net/sf/taverna/t2/activities/localworker/menu/ConfigureLocalworkerMenuAction.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package net.sf.taverna.t2.activities.localworker.menu;
-
-import javax.swing.Action;
-
-import uk.org.taverna.configuration.app.ApplicationConfiguration;
-
-import net.sf.taverna.t2.activities.beanshell.actions.BeanshellActivityConfigurationAction;
-import net.sf.taverna.t2.activities.localworker.actions.LocalworkerActivityConfigurationAction;
-import net.sf.taverna.t2.activities.localworker.servicedescriptions.LocalworkerServiceDescription;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;
-import net.sf.taverna.t2.ui.menu.ContextualMenuComponent;
-import net.sf.taverna.t2.ui.menu.MenuComponent;
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;
-import net.sf.taverna.t2.workbench.activitytools.AbstractConfigureActivityMenuAction;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.file.FileManager;
-
-public class ConfigureLocalworkerMenuAction extends AbstractConfigureActivityMenuAction implements
-		MenuComponent, ContextualMenuComponent {
-
-	private EditManager editManager;
-	private FileManager fileManager;
-	private ActivityIconManager activityIconManager;
-	private ServiceDescriptionRegistry serviceDescriptionRegistry;
-	private ApplicationConfiguration applicationConfiguration;
-
-	public ConfigureLocalworkerMenuAction() {
-		super(LocalworkerServiceDescription.ACTIVITY_TYPE);
-	}
-
-	@Override
-	protected Action createAction() {
-		Action result = null;
-		result = new LocalworkerActivityConfigurationAction(findActivity(), getParentFrame(),
-				editManager, fileManager, activityIconManager, serviceDescriptionRegistry,
-				applicationConfiguration);
-		result.putValue(Action.NAME, BeanshellActivityConfigurationAction.EDIT_BEANSHELL_SCRIPT);
-		addMenuDots(result);
-		return result;
-	}
-
-	public void setEditManager(EditManager editManager) {
-		this.editManager = editManager;
-	}
-
-	public void setFileManager(FileManager fileManager) {
-		this.fileManager = fileManager;
-	}
-
-	public void setActivityIconManager(ActivityIconManager activityIconManager) {
-		this.activityIconManager = activityIconManager;
-	}
-
-	public void setServiceDescriptionRegistry(ServiceDescriptionRegistry serviceDescriptionRegistry) {
-		this.serviceDescriptionRegistry = serviceDescriptionRegistry;
-	}
-
-	public void setApplicationConfiguration(ApplicationConfiguration applicationConfiguration) {
-		this.applicationConfiguration = applicationConfiguration;
-	}
-
-}
diff --git a/taverna-localworker-activity-ui/src/main/java/net/sf/taverna/t2/activities/localworker/servicedescriptions/LocalworkerActivityIcon.java b/taverna-localworker-activity-ui/src/main/java/net/sf/taverna/t2/activities/localworker/servicedescriptions/LocalworkerActivityIcon.java
deleted file mode 100644
index 7d6bb5a..0000000
--- a/taverna-localworker-activity-ui/src/main/java/net/sf/taverna/t2/activities/localworker/servicedescriptions/LocalworkerActivityIcon.java
+++ /dev/null
@@ -1,58 +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.activities.localworker.servicedescriptions;
-
-import java.net.URI;
-
-import javax.swing.Icon;
-import javax.swing.ImageIcon;
-
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI;
-
-/**
- *
- * @author Alex Nenadic
- * @author David Withers
- */
-public class LocalworkerActivityIcon implements ActivityIconSPI {
-
-	private static Icon icon;
-
-	public int canProvideIconScore(URI activityType) {
-		if (LocalworkerServiceDescription.ACTIVITY_TYPE.equals(activityType))
-			return DEFAULT_ICON + 1;
-		else
-			return NO_ICON;
-	}
-
-	public Icon getIcon(URI activityType) {
-		return getLocalworkerIcon();
-	}
-
-	public static Icon getLocalworkerIcon() {
-		if (icon == null) {
-			icon = new ImageIcon(LocalworkerActivityIcon.class
-					.getResource("/localworker.png"));
-		}
-		return icon;
-	}
-}
-
diff --git a/taverna-localworker-activity-ui/src/main/java/net/sf/taverna/t2/activities/localworker/servicedescriptions/LocalworkerServiceDescription.java b/taverna-localworker-activity-ui/src/main/java/net/sf/taverna/t2/activities/localworker/servicedescriptions/LocalworkerServiceDescription.java
deleted file mode 100644
index 38718b8..0000000
--- a/taverna-localworker-activity-ui/src/main/java/net/sf/taverna/t2/activities/localworker/servicedescriptions/LocalworkerServiceDescription.java
+++ /dev/null
@@ -1,105 +0,0 @@
-package net.sf.taverna.t2.activities.localworker.servicedescriptions;
-
-import java.net.URI;
-import java.util.Arrays;
-import java.util.List;
-
-import javax.swing.Icon;
-
-import net.sf.taverna.t2.servicedescriptions.ServiceDescription;
-import uk.org.taverna.scufl2.api.configurations.Configuration;
-
-import com.fasterxml.jackson.databind.JsonNode;
-
-public class LocalworkerServiceDescription extends ServiceDescription {
-
-	public static final URI ACTIVITY_TYPE = URI.create("http://ns.taverna.org.uk/2010/activity/localworker");
-
-	private static final String LOCALWORKER = ServiceDescription.LOCAL_SERVICES;
-
-	private JsonNode json;
-	private String operation;
-	private String category;
-	private String provider;
-	private String localworkerName;
-
-	public JsonNode getJson() {
-		return json;
-	}
-
-	public void setJson(JsonNode json) {
-		this.json = json;
-	}
-
-	public String getOperation() {
-		return operation;
-	}
-
-	public void setOperation(String operation) {
-		this.operation = operation;
-	}
-
-	public String getCategory() {
-		return category;
-	}
-
-	public void setCategory(String category) {
-		this.category = category;
-	}
-
-	public String getProvider() {
-		return provider;
-	}
-
-	public void setProvider(String provider) {
-		this.provider = provider;
-	}
-
-	public String getLocalworkerName() {
-		return localworkerName;
-	}
-
-	public void setLocalworkerName(String localworkerName) {
-		this.localworkerName = localworkerName;
-	}
-
-	public String getType() {
-		return "Localworker";
-	}
-
-	@Override
-	public URI getActivityType() {
-		return ACTIVITY_TYPE;
-	}
-
-	@Override
-	public Configuration getActivityConfiguration() {
-		Configuration configuration = new Configuration();
-		configuration.setType(ACTIVITY_TYPE.resolve("#Config"));
-		configuration.setJson(getJson());
-		return configuration;
-	}
-
-	@Override
-	public Icon getIcon() {
-		return LocalworkerActivityIcon.getLocalworkerIcon();
-	}
-
-	@Override
-	public String getName() {
-		return operation;
-	}
-
-	@Override
-	public List<? extends Comparable<?>> getPath() {
-		List<String> result =
-		Arrays.asList (LOCALWORKER, category);
-		return result;
-	}
-
-	@Override
-	protected List<Object> getIdentifyingData() {
-		return Arrays.<Object>asList(getJson());
-	}
-
-}
diff --git a/taverna-localworker-activity-ui/src/main/java/net/sf/taverna/t2/activities/localworker/servicedescriptions/LocalworkerServiceProvider.java b/taverna-localworker-activity-ui/src/main/java/net/sf/taverna/t2/activities/localworker/servicedescriptions/LocalworkerServiceProvider.java
deleted file mode 100644
index 42345db..0000000
--- a/taverna-localworker-activity-ui/src/main/java/net/sf/taverna/t2/activities/localworker/servicedescriptions/LocalworkerServiceProvider.java
+++ /dev/null
@@ -1,297 +0,0 @@
-package net.sf.taverna.t2.activities.localworker.servicedescriptions;
-
-import java.io.BufferedReader;
-import java.io.IOException;
-import java.io.InputStream;
-import java.io.InputStreamReader;
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.swing.Icon;
-
-import net.sf.taverna.t2.servicedescriptions.ServiceDescription;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider;
-import net.sf.taverna.t2.workflowmodel.processor.activity.Activity;
-
-import org.apache.log4j.Logger;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.ObjectMapper;
-
-public class LocalworkerServiceProvider implements ServiceDescriptionProvider {
-
-	private static final String LOCALWORKER_NAMES = "/localworker_names";
-
-	private static final String LOCALWORKER_SERVICE = "Local service";
-
-	private static Logger logger = Logger.getLogger(Logger.class);
-
-	private static final URI providerId = URI
-			.create("http://taverna.sf.net/2010/service-provider/localworker");
-
-	/** Used to deserialize the Activities stored on disk */
-	private ObjectMapper objectMapper = new ObjectMapper();
-
-	private static Map<String, String> localWorkerToScript = new HashMap<String, String>();
-
-	static {
-		localWorkerToScript.put("org.embl.ebi.escience.scuflworkers.java.ByteArrayToString",
-				"Byte Array To String");
-		localWorkerToScript.put("org.embl.ebi.escience.scuflworkers.java.DecodeBase64",
-				"Decode Base 64 to byte Array");
-		localWorkerToScript.put("org.embl.ebi.escience.scuflworkers.java.EchoList", "Echo List");
-		localWorkerToScript.put("org.embl.ebi.escience.scuflworkers.java.EmitLotsOfStrings",
-				"Create Lots Of Strings");
-		localWorkerToScript.put("org.embl.ebi.escience.scuflworkers.java.EncodeBase64",
-				"Encode Byte Array to Base 64");
-		localWorkerToScript.put("org.embl.ebi.escience.scuflworkers.java.ExtractImageLinks",
-				"Get image URLs from HTTP document");
-		localWorkerToScript.put("org.embl.ebi.escience.scuflworkers.java.FilterStringList",
-				"Filter List of Strings by regex");
-		localWorkerToScript.put("org.embl.ebi.escience.scuflworkers.java.FlattenList",
-				"Flatten List");
-		localWorkerToScript.put("org.embl.ebi.escience.scuflworkers.java.PadNumber",
-				"Pad numeral with leading 0s");
-		localWorkerToScript.put(
-				"org.embl.ebi.escience.scuflworkers.java.RegularExpressionStringList",
-				"Filter list of strings extracting match to a regex");
-		localWorkerToScript.put("org.embl.ebi.escience.scuflworkers.java.SendEmail",
-				"Send an Email");
-		localWorkerToScript.put("org.embl.ebi.escience.scuflworkers.java.SliceList",
-				"Extract Elements from a List");
-		localWorkerToScript.put("org.embl.ebi.escience.scuflworkers.java.SplitByRegex",
-				"Split string into string list by regular expression");
-		localWorkerToScript.put("org.embl.ebi.escience.scuflworkers.java.StringConcat",
-				"Concatenate two strings");
-		localWorkerToScript.put("org.embl.ebi.escience.scuflworkers.java.StringListMerge",
-				"Merge String List to a String");
-		localWorkerToScript.put("org.embl.ebi.escience.scuflworkers.java.StringSetDifference",
-				"String List Difference");
-		localWorkerToScript.put("org.embl.ebi.escience.scuflworkers.java.StringSetIntersection",
-				"String List Intersection");
-		localWorkerToScript.put("org.embl.ebi.escience.scuflworkers.java.StringSetUnion",
-				"String List Union");
-		localWorkerToScript.put("org.embl.ebi.escience.scuflworkers.java.StringStripDuplicates",
-				"Remove String Duplicates");
-		localWorkerToScript.put(
-				"org.embl.ebi.escience.scuflworkers.java.TestAlwaysFailingProcessor",
-				"Always Fails");
-		localWorkerToScript.put("org.embl.ebi.escience.scuflworkers.java.TestSometimesFails",
-				"Sometimes Fails");
-		localWorkerToScript.put("org.embl.ebi.escience.scuflworkers.java.WebImageFetcher",
-				"Get Image From URL");
-		localWorkerToScript.put("org.embl.ebi.escience.scuflworkers.java.WebPageFetcher",
-				"Get Web Page from URL");
-
-		// xml:XPathText
-		localWorkerToScript.put("net.sourceforge.taverna.scuflworkers.xml.XPathTextWorker",
-				"XPath From Text");
-		localWorkerToScript.put("net.sourceforge.taverna.scuflworkers.xml.XSLTWorker",
-				"Transform XML");
-		localWorkerToScript.put(
-				"net.sourceforge.taverna.scuflworkers.xml.XSLTWorkerWithParameters",
-				"Transform XML with parameters");
-
-		// biojava
-		localWorkerToScript.put("net.sourceforge.taverna.scuflworkers.biojava.GenBankParserWorker",
-				"Read Gen Bank File");
-		localWorkerToScript.put("net.sourceforge.taverna.scuflworkers.biojava.ReverseCompWorker",
-				"Reverse Complement DNA");
-		localWorkerToScript.put(
-				"net.sourceforge.taverna.scuflworkers.biojava.SwissProtParserWorker",
-				"Read Swiss Prot File");
-		localWorkerToScript.put("net.sourceforge.taverna.scuflworkers.biojava.TranscribeWorker",
-				"Transcribe DNA");
-
-		// io
-		localWorkerToScript.put("net.sourceforge.taverna.scuflworkers.io.TextFileReader",
-				"Read Text File");
-		localWorkerToScript.put("net.sourceforge.taverna.scuflworkers.io.TextFileWriter",
-				"Write Text File");
-		localWorkerToScript.put("net.sourceforge.taverna.scuflworkers.io.LocalCommand",
-				"Execute Command Line App");
-		localWorkerToScript.put("net.sourceforge.taverna.scuflworkers.io.FileListByExtTask",
-				"List Files by Extension");
-		localWorkerToScript.put("net.sourceforge.taverna.scuflworkers.io.FileListByRegexTask",
-				"List Files By Regex");
-		localWorkerToScript.put("net.sourceforge.taverna.scuflworkers.io.DataRangeTask",
-				"Select Data Range From File");
-		localWorkerToScript.put(
-				"net.sourceforge.taverna.scuflworkers.io.ConcatenateFileListWorker",
-				"Concatenate Files");
-		localWorkerToScript.put("net.sourceforge.taverna.scuflworkers.io.EnvVariableWorker",
-				"Get Environment Variables as XML");
-
-		// ui
-		localWorkerToScript.put("net.sourceforge.taverna.scuflworkers.ui.AskWorker", "Ask");
-		localWorkerToScript.put("net.sourceforge.taverna.scuflworkers.ui.SelectWorker", "Select");
-		localWorkerToScript.put("net.sourceforge.taverna.scuflworkers.ui.ChooseWorker", "Choose");
-		localWorkerToScript.put("net.sourceforge.taverna.scuflworkers.ui.TellWorker", "Tell");
-		localWorkerToScript.put("net.sourceforge.taverna.scuflworkers.ui.WarnWorker", "Warn");
-		localWorkerToScript.put("net.sourceforge.taverna.scuflworkers.ui.SelectFileWorker",
-				"Select File");
-		// ncbi
-		localWorkerToScript.put("net.sourceforge.taverna.scuflworkers.ncbi.NucleotideFastaWorker",
-				"Get Nucleotide FASTA");
-		localWorkerToScript.put("net.sourceforge.taverna.scuflworkers.ncbi.NucleotideGBSeqWorker",
-				"Get Nucleotide GBSeq XML");
-		localWorkerToScript.put(
-				"net.sourceforge.taverna.scuflworkers.ncbi.NucleotideINSDSeqXMLWorker",
-				"Get Nucleotide INSDSeq XML");
-		localWorkerToScript.put(
-				"net.sourceforge.taverna.scuflworkers.ncbi.NucleotideTinySeqXMLWorker",
-				"Get Nucleotide TinySeq XML");
-
-		localWorkerToScript.put("net.sourceforge.taverna.scuflworkers.ncbi.ProteinFastaWorker",
-				"Get Protein FASTA");
-		localWorkerToScript.put(
-				"net.sourceforge.taverna.scuflworkers.ncbi.ProteinINSDSeqXMLWorker",
-				"Get Protein INSDSeq XML");
-		localWorkerToScript.put("net.sourceforge.taverna.scuflworkers.ncbi.ProteinGBSeqWorker",
-				"Get Protein GBSeq XML");
-		localWorkerToScript.put(
-				"net.sourceforge.taverna.scuflworkers.ncbi.ProteinTinySeqXMLWorker",
-				"Get Protein TinySeq XML");
-
-		localWorkerToScript.put("net.sourceforge.taverna.scuflworkers.ncbi.PubMedESearchWorker",
-				"Search PubMed XML");
-		localWorkerToScript.put("net.sourceforge.taverna.scuflworkers.ncbi.PubMedEFetchWorker",
-				"Get PubMed XML By PMID");
-
-		localWorkerToScript.put("net.sourceforge.taverna.scuflworkers.jdbc.SQLQueryWorker",
-				"Execute SQL Query");
-		localWorkerToScript.put("net.sourceforge.taverna.scuflworkers.jdbc.SQLUpdateWorker",
-				"Execute SQL Update");
-
-		localWorkerToScript.put("net.sourceforge.taverna.scuflworkers.net.BrowseUrl",
-				"Open web browser at a URL");
-		localWorkerToScript.put("net.sourceforge.taverna.scuflworkers.net.ExtractHeader",
-				"Extract HTTP Header");
-	}
-
-	public String getName() {
-		return LOCALWORKER_SERVICE;
-	}
-
-	/**
-	 * Use the {@link net.sf.taverna.t2.activities.localworker.translator.LocalworkerTranslator} to
-	 * get a {@link Map} of all the local workers. Use the keys in this map
-	 * to load all the serialized activities from disk by using
-	 * <code> getClass().getResourceAsStream("/" + className) </code> to get
-	 * them and then the {@link ActivityXMLDeserializer} to get the actual {@link Activity}. Create
-	 * the {@link LocalworkerActivityItem} by
-	 * populating them with the correct ports and depths. Sets the category to
-	 * match the T1 version so that a query by category will split the local
-	 * workers in to the correct place.
-	 */
-	public void findServiceDescriptionsAsync(FindServiceDescriptionsCallBack callBack) {
-
-		List<ServiceDescription> items = new ArrayList<ServiceDescription>();
-
-		InputStream inputStream = getClass().getResourceAsStream(LOCALWORKER_NAMES);
-		if (inputStream == null) {
-			logger.error("Could not find resource " + LOCALWORKER_NAMES);
-			return;
-		}
-		BufferedReader inputReader = new BufferedReader(new InputStreamReader(inputStream));
-		String line = "";
-		String category = null;
-		try {
-			while ((line = inputReader.readLine()) != null) {
-				if (line.startsWith("category")) {
-					String[] split = line.split(":");
-					category = split[1];
-				} else {
-					LocalworkerServiceDescription createItem;
-					try {
-						createItem = createItem(line);
-					} catch (ItemCreationException e) {
-						logger.warn("Could not create item for: " + line, e);
-						continue;
-					}
-					createItem.setCategory(category);
-					createItem.setProvider("myGrid");
-					items.add(createItem);
-				}
-			}
-		} catch (IOException e1) {
-			logger.warn("Could not read local worker definitions from " + LOCALWORKER_NAMES);
-		}
-		callBack.partialResults(items);
-		callBack.finished();
-
-	}
-
-	@SuppressWarnings("serial")
-	public class ItemCreationException extends Exception {
-
-		public ItemCreationException() {
-			super();
-		}
-
-		public ItemCreationException(String message, Throwable cause) {
-			super(message, cause);
-		}
-
-		public ItemCreationException(String message) {
-			super(message);
-		}
-
-		public ItemCreationException(Throwable cause) {
-			super(cause);
-		}
-
-	}
-
-	/**
-	 * Loads the deserialised local worker from disk and creates a {@link LocalworkerActivityItem}
-	 * with the correct ports and script from it
-	 *
-	 * @param line
-	 * @return a LocalWorker with the appropriate Input/Output ports and script
-	 * @throws ItemCreationException
-	 */
-	private LocalworkerServiceDescription createItem(String line) throws ItemCreationException {
-		// get the file from disk
-		String resource = "/" + line + ".json";
-		InputStream resourceAsStream = getClass().getResourceAsStream(resource);
-		if (resourceAsStream == null) {
-			throw new ItemCreationException("Could not find resource " + resource);
-		}
-
-		JsonNode json;
-		try {
-			json = objectMapper.readTree(resourceAsStream);
-		} catch (IOException e) {
-			throw new ItemCreationException("Could not read resource " + resource, e);
-		}
-
-		LocalworkerServiceDescription item = new LocalworkerServiceDescription();
-		item.setJson(json);
-		item.setLocalworkerName(line);
-		item.setOperation(localWorkerToScript.get(line));
-		return item;
-
-	}
-
-	public Icon getIcon() {
-		return LocalworkerActivityIcon.getLocalworkerIcon();
-	}
-
-	@Override
-	public String toString() {
-		return "Local workers provider";
-	}
-
-	public static String getServiceNameFromClassname(String classname) {
-		return (localWorkerToScript.get(classname));
-	}
-
-	public String getId() {
-		return providerId.toString();
-	}
-
-}
diff --git a/taverna-localworker-activity-ui/src/main/java/net/sf/taverna/t2/activities/localworker/views/LocalworkerActivityConfigView.java b/taverna-localworker-activity-ui/src/main/java/net/sf/taverna/t2/activities/localworker/views/LocalworkerActivityConfigView.java
deleted file mode 100644
index 155c631..0000000
--- a/taverna-localworker-activity-ui/src/main/java/net/sf/taverna/t2/activities/localworker/views/LocalworkerActivityConfigView.java
+++ /dev/null
@@ -1,42 +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.activities.localworker.views;
-
-import net.sf.taverna.t2.activities.beanshell.views.BeanshellConfigurationPanel;
-import uk.org.taverna.configuration.app.ApplicationConfiguration;
-import uk.org.taverna.scufl2.api.activity.Activity;
-
-@SuppressWarnings("serial")
-public class LocalworkerActivityConfigView extends BeanshellConfigurationPanel {
-
-	public LocalworkerActivityConfigView(Activity activity, ApplicationConfiguration applicationConfiguration) {
-		super(activity, applicationConfiguration);
-	}
-
-	public boolean isConfigurationChanged() {
-		boolean configurationChanged = super.isConfigurationChanged();
-		if (configurationChanged) {
-			getJson().put("isAltered", true);
-		}
-		return configurationChanged;
-	}
-
-}
diff --git a/taverna-localworker-activity-ui/src/main/java/net/sf/taverna/t2/activities/localworker/views/LocalworkerActivityContextualView.java b/taverna-localworker-activity-ui/src/main/java/net/sf/taverna/t2/activities/localworker/views/LocalworkerActivityContextualView.java
deleted file mode 100644
index fc09d57..0000000
--- a/taverna-localworker-activity-ui/src/main/java/net/sf/taverna/t2/activities/localworker/views/LocalworkerActivityContextualView.java
+++ /dev/null
@@ -1,115 +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.activities.localworker.views;
-
-import java.awt.Frame;
-
-import javax.swing.Action;
-
-import net.sf.taverna.t2.activities.localworker.actions.LocalworkerActivityConfigurationAction;
-import net.sf.taverna.t2.activities.localworker.servicedescriptions.LocalworkerServiceProvider;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;
-import net.sf.taverna.t2.workbench.configuration.colour.ColourManager;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.file.FileManager;
-import net.sf.taverna.t2.workbench.ui.actions.activity.HTMLBasedActivityContextualView;
-import uk.org.taverna.configuration.app.ApplicationConfiguration;
-import uk.org.taverna.scufl2.api.activity.Activity;
-import uk.org.taverna.scufl2.api.configurations.Configuration;
-import uk.org.taverna.scufl2.api.port.InputActivityPort;
-import uk.org.taverna.scufl2.api.port.OutputActivityPort;
-
-import com.fasterxml.jackson.databind.JsonNode;
-
-@SuppressWarnings("serial")
-public class LocalworkerActivityContextualView extends HTMLBasedActivityContextualView {
-
-	private final EditManager editManager;
-	private final FileManager fileManager;
-	private final ActivityIconManager activityIconManager;
-	private final ServiceDescriptionRegistry serviceDescriptionRegistry;
-
-	private final ApplicationConfiguration applicationConfiguration;
-
-	public LocalworkerActivityContextualView(Activity activity, EditManager editManager,
-			FileManager fileManager, ColourManager colourManager,
-			ActivityIconManager activityIconManager,
-			ServiceDescriptionRegistry serviceDescriptionRegistry,
-			ApplicationConfiguration applicationConfiguration) {
-		super(activity, colourManager);
-		this.editManager = editManager;
-		this.fileManager = fileManager;
-		this.activityIconManager = activityIconManager;
-		this.serviceDescriptionRegistry = serviceDescriptionRegistry;
-		this.applicationConfiguration = applicationConfiguration;
-	}
-
-	@Override
-	protected String getRawTableRowsHtml() {
-		StringBuilder html = new StringBuilder();
-		html.append("<tr><th>Input Port Name</th><th>Depth</th></tr>");
-		for (InputActivityPort inputActivityPort : getActivity().getInputPorts()) {
-			html.append("<tr><td>" + inputActivityPort.getName() + "</td><td>");
-			html.append(inputActivityPort.getDepth() + "</td></tr>");
-		}
-		html.append("<tr><th>Output Port Name</th><th>Depth</th></tr>");
-		for (OutputActivityPort outputActivityPort : getActivity().getOutputPorts()) {
-			html.append("<tr><td>" + outputActivityPort.getName() + "</td><td>");
-			html.append(outputActivityPort.getDepth() + "</td></tr>");
-		}
-		return html.toString();
-	}
-
-	@Override
-	public String getViewTitle() {
-		String result = "";
-		Configuration configuration = getConfigBean();
-		JsonNode json = configuration.getJson();
-		String workerName = LocalworkerServiceProvider.getServiceNameFromClassname(json.get(
-				"localworkerName").textValue());
-		if (json.get("isAltered").booleanValue()) {
-			result = "Altered local worker service";
-			if ((workerName != null) && !workerName.equals("")) {
-				result += " - originally " + workerName;
-			}
-		} else {
-			result = "Local worker service";
-			if ((workerName != null) && !workerName.equals("")) {
-				result += " - " + workerName;
-			}
-		}
-		return result;
-	}
-
-	@Override
-	public Action getConfigureAction(Frame owner) {
-		return new LocalworkerActivityConfigurationAction(getActivity(), owner, editManager,
-				fileManager, activityIconManager, serviceDescriptionRegistry,
-				applicationConfiguration);
-	}
-
-	@Override
-	public int getPreferredPosition() {
-		return 100;
-	}
-
-}
diff --git a/taverna-localworker-activity-ui/src/main/java/net/sf/taverna/t2/activities/localworker/views/LocalworkerActivityViewFactory.java b/taverna-localworker-activity-ui/src/main/java/net/sf/taverna/t2/activities/localworker/views/LocalworkerActivityViewFactory.java
deleted file mode 100644
index 4fec0a2..0000000
--- a/taverna-localworker-activity-ui/src/main/java/net/sf/taverna/t2/activities/localworker/views/LocalworkerActivityViewFactory.java
+++ /dev/null
@@ -1,82 +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.activities.localworker.views;
-
-import java.util.Arrays;
-import java.util.List;
-
-import net.sf.taverna.t2.activities.localworker.servicedescriptions.LocalworkerServiceDescription;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;
-import net.sf.taverna.t2.workbench.configuration.colour.ColourManager;
-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;
-import uk.org.taverna.configuration.app.ApplicationConfiguration;
-import uk.org.taverna.scufl2.api.activity.Activity;
-
-public class LocalworkerActivityViewFactory implements ContextualViewFactory<Activity> {
-
-	private EditManager editManager;
-	private FileManager fileManager;
-	private ActivityIconManager activityIconManager;
-	private ColourManager colourManager;
-	private ServiceDescriptionRegistry serviceDescriptionRegistry;
-	private ApplicationConfiguration applicationConfiguration;
-
-	public boolean canHandle(Object object) {
-		return object instanceof Activity
-				&& ((Activity) object).getType()
-						.equals(LocalworkerServiceDescription.ACTIVITY_TYPE);
-	}
-
-	public List<ContextualView> getViews(Activity activity) {
-		return Arrays.asList(new ContextualView[] { new LocalworkerActivityContextualView(activity,
-				editManager, fileManager, colourManager, activityIconManager,
-				serviceDescriptionRegistry, applicationConfiguration) });
-	}
-
-	public void setEditManager(EditManager editManager) {
-		this.editManager = editManager;
-	}
-
-	public void setFileManager(FileManager fileManager) {
-		this.fileManager = fileManager;
-	}
-
-	public void setActivityIconManager(ActivityIconManager activityIconManager) {
-		this.activityIconManager = activityIconManager;
-	}
-
-	public void setColourManager(ColourManager colourManager) {
-		this.colourManager = colourManager;
-	}
-
-	public void setServiceDescriptionRegistry(ServiceDescriptionRegistry serviceDescriptionRegistry) {
-		this.serviceDescriptionRegistry = serviceDescriptionRegistry;
-	}
-
-	public void setApplicationConfiguration(ApplicationConfiguration applicationConfiguration) {
-		this.applicationConfiguration = applicationConfiguration;
-	}
-
-}
diff --git a/taverna-localworker-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider b/taverna-localworker-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider
deleted file mode 100644
index c3c01e0..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider
+++ /dev/null
@@ -1 +0,0 @@
-net.sf.taverna.t2.activities.localworker.servicedescriptions.LocalworkerServiceProvider
diff --git a/taverna-localworker-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent b/taverna-localworker-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent
deleted file mode 100644
index 5911ddf..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent
+++ /dev/null
@@ -1 +0,0 @@
-net.sf.taverna.t2.activities.localworker.menu.ConfigureLocalworkerMenuAction
diff --git a/taverna-localworker-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI b/taverna-localworker-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI
deleted file mode 100644
index 720a022..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI
+++ /dev/null
@@ -1 +0,0 @@
-net.sf.taverna.t2.activities.localworker.servicedescriptions.LocalworkerActivityIcon
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory b/taverna-localworker-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory
deleted file mode 100644
index f1d2c0d..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory
+++ /dev/null
@@ -1 +0,0 @@
-net.sf.taverna.t2.activities.localworker.views.LocalworkerActivityViewFactory
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/META-INF/spring/localworker-activity-ui-context-osgi.xml b/taverna-localworker-activity-ui/src/main/resources/META-INF/spring/localworker-activity-ui-context-osgi.xml
deleted file mode 100644
index dd4c7a8..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/META-INF/spring/localworker-activity-ui-context-osgi.xml
+++ /dev/null
@@ -1,24 +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="LocalworkerActivityIcon" interface="net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI" />
-
-	<service ref="LocalworkerServiceProvider" interface="net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider" />
-
-	<service ref="ConfigureLocalworkerMenuAction" auto-export="interfaces" />
-
-	<service ref="LocalworkerActivityViewFactory" 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" />
-	<reference id="activityIconManager" interface="net.sf.taverna.t2.workbench.activityicons.ActivityIconManager" />
-	<reference id="colourManager" interface="net.sf.taverna.t2.workbench.configuration.colour.ColourManager" />
-	<reference id="serviceDescriptionRegistry" interface="net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry" />
-	<reference id="applicationConfiguration" interface="uk.org.taverna.configuration.app.ApplicationConfiguration" />
-
-</beans:beans>
diff --git a/taverna-localworker-activity-ui/src/main/resources/META-INF/spring/localworker-activity-ui-context.xml b/taverna-localworker-activity-ui/src/main/resources/META-INF/spring/localworker-activity-ui-context.xml
deleted file mode 100644
index edcd6be..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/META-INF/spring/localworker-activity-ui-context.xml
+++ /dev/null
@@ -1,27 +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="LocalworkerActivityIcon" class="net.sf.taverna.t2.activities.localworker.servicedescriptions.LocalworkerActivityIcon" />
-
-	<bean id="LocalworkerServiceProvider" class="net.sf.taverna.t2.activities.localworker.servicedescriptions.LocalworkerServiceProvider" />
-
-	<bean id="ConfigureLocalworkerMenuAction" class="net.sf.taverna.t2.activities.localworker.menu.ConfigureLocalworkerMenuAction">
-			<property name="editManager" ref="editManager" />
-			<property name="fileManager" ref="fileManager" />
-			<property name="activityIconManager" ref="activityIconManager" />
-			<property name="serviceDescriptionRegistry" ref="serviceDescriptionRegistry" />
-			<property name="applicationConfiguration" ref="applicationConfiguration" />
-	</bean>
-
-	<bean id="LocalworkerActivityViewFactory" class="net.sf.taverna.t2.activities.localworker.views.LocalworkerActivityViewFactory">
-			<property name="editManager" ref="editManager" />
-			<property name="fileManager" ref="fileManager" />
-			<property name="activityIconManager" ref="activityIconManager" />
-			<property name="colourManager" ref="colourManager" />
-			<property name="serviceDescriptionRegistry" ref="serviceDescriptionRegistry" />
-			<property name="applicationConfiguration" ref="applicationConfiguration" />
-	</bean>
-
-</beans>
diff --git a/taverna-localworker-activity-ui/src/main/resources/localworker.png b/taverna-localworker-activity-ui/src/main/resources/localworker.png
deleted file mode 100644
index 758a457..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/localworker.png
+++ /dev/null
Binary files differ
diff --git a/taverna-localworker-activity-ui/src/main/resources/localworker_names b/taverna-localworker-activity-ui/src/main/resources/localworker_names
deleted file mode 100644
index 3df452c..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/localworker_names
+++ /dev/null
@@ -1,67 +0,0 @@
-category:biojava
-net.sourceforge.taverna.scuflworkers.biojava.GenBankParserWorker
-net.sourceforge.taverna.scuflworkers.biojava.ReverseCompWorker
-net.sourceforge.taverna.scuflworkers.biojava.SwissProtParserWorker
-net.sourceforge.taverna.scuflworkers.biojava.TranscribeWorker
-category:io
-net.sourceforge.taverna.scuflworkers.io.ConcatenateFileListWorker
-net.sourceforge.taverna.scuflworkers.io.FileListByExtTask
-net.sourceforge.taverna.scuflworkers.io.FileListByRegexTask
-net.sourceforge.taverna.scuflworkers.io.EnvVariableWorker
-net.sourceforge.taverna.scuflworkers.io.LocalCommand
-net.sourceforge.taverna.scuflworkers.io.TextFileReader
-net.sourceforge.taverna.scuflworkers.io.TextFileWriter
-category:ui
-net.sourceforge.taverna.scuflworkers.ui.AskWorker
-net.sourceforge.taverna.scuflworkers.ui.ChooseWorker
-net.sourceforge.taverna.scuflworkers.ui.SelectFileWorker
-net.sourceforge.taverna.scuflworkers.ui.SelectWorker
-net.sourceforge.taverna.scuflworkers.ui.TellWorker
-net.sourceforge.taverna.scuflworkers.ui.WarnWorker
-category:xml
-net.sourceforge.taverna.scuflworkers.xml.XPathTextWorker
-net.sourceforge.taverna.scuflworkers.xml.XSLTWorker
-net.sourceforge.taverna.scuflworkers.xml.XSLTWorkerWithParameters
-category:list
-org.embl.ebi.escience.scuflworkers.java.EchoList
-org.embl.ebi.escience.scuflworkers.java.FlattenList
-org.embl.ebi.escience.scuflworkers.java.StringStripDuplicates
-org.embl.ebi.escience.scuflworkers.java.StringListMerge
-category:test
-org.embl.ebi.escience.scuflworkers.java.TestAlwaysFailingProcessor
-org.embl.ebi.escience.scuflworkers.java.EmitLotsOfStrings
-org.embl.ebi.escience.scuflworkers.java.TestSometimesFails
-category:text
-org.embl.ebi.escience.scuflworkers.java.ByteArrayToString
-org.embl.ebi.escience.scuflworkers.java.StringSetDifference
-org.embl.ebi.escience.scuflworkers.java.StringSetIntersection
-org.embl.ebi.escience.scuflworkers.java.StringSetUnion
-org.embl.ebi.escience.scuflworkers.java.PadNumber
-org.embl.ebi.escience.scuflworkers.java.RegularExpressionStringList
-org.embl.ebi.escience.scuflworkers.java.SplitByRegex
-org.embl.ebi.escience.scuflworkers.java.StringConcat
-org.embl.ebi.escience.scuflworkers.java.FilterStringList
-category:net
-org.embl.ebi.escience.scuflworkers.java.WebImageFetcher
-org.embl.ebi.escience.scuflworkers.java.WebPageFetcher
-org.embl.ebi.escience.scuflworkers.java.ExtractImageLinks
-org.embl.ebi.escience.scuflworkers.java.SendEmail
-net.sourceforge.taverna.scuflworkers.net.BrowseUrl
-net.sourceforge.taverna.scuflworkers.net.ExtractHeader
-category:base64
-org.embl.ebi.escience.scuflworkers.java.EncodeBase64
-org.embl.ebi.escience.scuflworkers.java.DecodeBase64
-category:ncbi
-net.sourceforge.taverna.scuflworkers.ncbi.NucleotideFastaWorker
-net.sourceforge.taverna.scuflworkers.ncbi.NucleotideGBSeqWorker
-net.sourceforge.taverna.scuflworkers.ncbi.NucleotideINSDSeqXMLWorker
-net.sourceforge.taverna.scuflworkers.ncbi.NucleotideTinySeqXMLWorker
-net.sourceforge.taverna.scuflworkers.ncbi.ProteinFastaWorker
-net.sourceforge.taverna.scuflworkers.ncbi.ProteinINSDSeqXMLWorker
-net.sourceforge.taverna.scuflworkers.ncbi.ProteinGBSeqWorker
-net.sourceforge.taverna.scuflworkers.ncbi.ProteinTinySeqXMLWorker
-net.sourceforge.taverna.scuflworkers.ncbi.PubMedESearchWorker
-net.sourceforge.taverna.scuflworkers.ncbi.PubMedEFetchWorker
-category:jdbc
-net.sourceforge.taverna.scuflworkers.jdbc.SQLQueryWorker
-net.sourceforge.taverna.scuflworkers.jdbc.SQLUpdateWorker
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.biojava.GenBankParserWorker b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.biojava.GenBankParserWorker
deleted file mode 100644
index d6c62b2..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.biojava.GenBankParserWorker
+++ /dev/null
@@ -1,74 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow">

-

-

-<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>import org.biojava.bio.seq.Sequence;

-import org.biojava.bio.seq.SequenceIterator;

-import org.biojava.bio.seq.io.SeqIOTools;

-import org.biojava.bio.seq.io.agave.AgaveWriter;

-

-BufferedReader getReader (String fileUrl) throws IOException {

-		InputStreamReader reader;

-		try {

-			reader = new FileReader(fileUrl);

-		}

-		catch (FileNotFoundException e) {

-			// try a real URL instead

-			URL url = new URL(fileUrl);

-			reader = new InputStreamReader (url.openStream());

-		}

-		return new BufferedReader(reader);

-	}

-

-if ((fileUrl == void) || (fileUrl == null)) {

-    throw new RuntimeException("The fileUrl must be specified");

-}

-

-BufferedReader br  = getReader(fileUrl);

-

-// read the GenBank File

-SequenceIterator sequences = SeqIOTools.readGenbank(br);

-

-// iterate through the sequences

-ByteArrayOutputStream os = new ByteArrayOutputStream();

-StringBuffer sb = new StringBuffer();

-AgaveWriter writer = new AgaveWriter();

-PrintStream ps = new PrintStream(os);

-

-while (sequences.hasNext()) {

-	Sequence seq = sequences.nextSequence();

-	writer.writeSequence(seq, ps);

-	sb.append(os.toString());

-}

-

-genbankdata = sb.toString();

-br.close();

-ps.close();

-  

-</script>

-  <dependencies class="java.util.Collections$SingletonList">

-    <element class="string">uk.org.mygrid.resources:biojava:1.4pre1</element>

-  </dependencies>

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>fileUrl</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>genbankdata</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/xml'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.biojava.GenBankParserWorker.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.biojava.GenBankParserWorker.json
deleted file mode 100644
index 452850f..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.biojava.GenBankParserWorker.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "import org.biojava.bio.seq.Sequence;\nimport org.biojava.bio.seq.SequenceIterator;\nimport org.biojava.bio.seq.io.SeqIOTools;\nimport org.biojava.bio.seq.io.agave.AgaveWriter;\n\nBufferedReader getReader (String fileUrl) throws IOException {\n\t\tInputStreamReader reader;\n\t\ttry {\n\t\t\treader = new FileReader(fileUrl);\n\t\t}\n\t\tcatch (FileNotFoundException e) {\n\t\t\t// try a real URL instead\n\t\t\tURL url = new URL(fileUrl);\n\t\t\treader = new InputStreamReader (url.openStream());\n\t\t}\n\t\treturn new BufferedReader(reader);\n\t}\n\nif ((fileUrl == void) || (fileUrl == null)) {\n    throw new RuntimeException(\"The fileUrl must be specified\");\n}\n\nBufferedReader br  = getReader(fileUrl);\n\n// read the GenBank File\nSequenceIterator sequences = SeqIOTools.readGenbank(br);\n\n// iterate through the sequences\nByteArrayOutputStream os = new ByteArrayOutputStream();\nStringBuffer sb = new StringBuffer();\nAgaveWriter writer = new AgaveWriter();\nPrintStream ps = new PrintStream(os);\n\nwhile (sequences.hasNext()) {\n\tSequence seq = sequences.nextSequence();\n\twriter.writeSequence(seq, ps);\n\tsb.append(os.toString());\n}\n\ngenbankdata = sb.toString();\nbr.close();\nps.close();\n  \n",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.biojava.GenBankParserWorker",
-  "inputPorts" : [ {
-    "name" : "fileUrl",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "genbankdata",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.biojava.ReverseCompWorker b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.biojava.ReverseCompWorker
deleted file mode 100644
index 0044c82..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.biojava.ReverseCompWorker
+++ /dev/null
@@ -1,43 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>import org.biojava.bio.seq.DNATools;

-import org.biojava.bio.symbol.SymbolList;

-

-if ((rawSeq == void) || (rawSeq == null)) {

-    throw new RuntimeException("The rawSeq must be specified");

-}

-

-// make a DNA SymbolListbena

-SymbolList symL = DNATools.createDNA(rawSeq);

-

-// reverse complement it

-symL = DNATools.reverseComplement(symL);

-

-// prove that it worked

-revSeq = symL.seqString();

-</script>

-  <dependencies class="java.util.Collections$SingletonList">

-    <element class="string">uk.org.mygrid.resources:biojava:1.4pre1</element>

-  </dependencies>

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>rawSeq</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>revSeq</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.biojava.ReverseCompWorker.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.biojava.ReverseCompWorker.json
deleted file mode 100644
index c214819..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.biojava.ReverseCompWorker.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "import org.biojava.bio.seq.DNATools;\nimport org.biojava.bio.symbol.SymbolList;\n\nif ((rawSeq == void) || (rawSeq == null)) {\n    throw new RuntimeException(\"The rawSeq must be specified\");\n}\n\n// make a DNA SymbolListbena\nSymbolList symL = DNATools.createDNA(rawSeq);\n\n// reverse complement it\nsymL = DNATools.reverseComplement(symL);\n\n// prove that it worked\nrevSeq = symL.seqString();\n",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.biojava.ReverseCompWorker",
-  "inputPorts" : [ {
-    "name" : "rawSeq",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "revSeq",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.biojava.SwissProtParserWorker b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.biojava.SwissProtParserWorker
deleted file mode 100644
index 7f64778..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.biojava.SwissProtParserWorker
+++ /dev/null
@@ -1,72 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>import org.biojava.bio.seq.Sequence;

-import org.biojava.bio.seq.SequenceIterator;

-import org.biojava.bio.seq.io.SeqIOTools;

-import org.biojava.bio.seq.io.agave.AgaveWriter;

-

-BufferedReader getReader (String fileUrl) throws IOException {

-		InputStreamReader reader;

-		try {

-			reader = new FileReader(fileUrl);

-		}

-		catch (FileNotFoundException e) {

-			// try a real URL instead

-			URL url = new URL(fileUrl);

-			reader = new InputStreamReader (url.openStream());

-		}

-		return new BufferedReader(reader);

-	}

-	

-if ((fileUrl == void) || (fileUrl == null)) {

-    throw new RuntimeException("The fileUrl must be specified");

-}

-	

-BufferedReader br = getReader(fileUrl);

-

-// read the EMBL File

-SequenceIterator sequences = SeqIOTools.readSwissprot(br);

-

-// Prepare the writer

-AgaveWriter writer = new AgaveWriter();

-ByteArrayOutputStream os = new ByteArrayOutputStream();

-StringBuffer sb = new StringBuffer();

-PrintStream ps = new PrintStream(os);

-

-// iterate through the sequences

-while (sequences.hasNext()) {

-	Sequence seq = sequences.nextSequence();

-	writer.writeSequence(seq, ps);

-	sb.append(os.toString());

-}

-results = sb.toString();

-

-br.close();

-ps.close();

-  

-</script>

-  <dependencies class="java.util.Collections$SingletonList">

-    <element class="string">uk.org.mygrid.resources:biojava:1.4pre1</element>

-  </dependencies>

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>fileUrl</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>results</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.biojava.SwissProtParserWorker.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.biojava.SwissProtParserWorker.json
deleted file mode 100644
index 929c316..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.biojava.SwissProtParserWorker.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "import org.biojava.bio.seq.Sequence;\nimport org.biojava.bio.seq.SequenceIterator;\nimport org.biojava.bio.seq.io.SeqIOTools;\nimport org.biojava.bio.seq.io.agave.AgaveWriter;\n\nBufferedReader getReader (String fileUrl) throws IOException {\n\t\tInputStreamReader reader;\n\t\ttry {\n\t\t\treader = new FileReader(fileUrl);\n\t\t}\n\t\tcatch (FileNotFoundException e) {\n\t\t\t// try a real URL instead\n\t\t\tURL url = new URL(fileUrl);\n\t\t\treader = new InputStreamReader (url.openStream());\n\t\t}\n\t\treturn new BufferedReader(reader);\n\t}\n\t\nif ((fileUrl == void) || (fileUrl == null)) {\n    throw new RuntimeException(\"The fileUrl must be specified\");\n}\n\t\nBufferedReader br = getReader(fileUrl);\n\n// read the EMBL File\nSequenceIterator sequences = SeqIOTools.readSwissprot(br);\n\n// Prepare the writer\nAgaveWriter writer = new AgaveWriter();\nByteArrayOutputStream os = new ByteArrayOutputStream();\nStringBuffer sb = new StringBuffer();\nPrintStream ps = new PrintStream(os);\n\n// iterate through the sequences\nwhile (sequences.hasNext()) {\n\tSequence seq = sequences.nextSequence();\n\twriter.writeSequence(seq, ps);\n\tsb.append(os.toString());\n}\nresults = sb.toString();\n\nbr.close();\nps.close();\n  \n",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.biojava.SwissProtParserWorker",
-  "inputPorts" : [ {
-    "name" : "fileUrl",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "results",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.biojava.TranscribeWorker b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.biojava.TranscribeWorker
deleted file mode 100644
index e46e219..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.biojava.TranscribeWorker
+++ /dev/null
@@ -1,48 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>import org.biojava.bio.seq.DNATools;

-import org.biojava.bio.seq.RNATools;

-import org.biojava.bio.symbol.SymbolList;

-

-if ((dna_seq == void) || (dna_seq == null)) {

-	throw new RuntimeException("The dna_seq must be specified");

-}

-

-// make a DNA SymbolList

-SymbolList symL = DNATools.createDNA(dna_seq);

-

-// transcribe it to RNA (after BioJava 1.4 this method is

-// deprecated)

-symL = RNATools.transcribe(symL);

-

-// (after BioJava 1.4 use this method instead)

-// symL = DNATools.toRNA(symL);

-

-// just to prove it worked

-rna_seq = symL.seqString();

-</script>

-  <dependencies class="java.util.Collections$SingletonList">

-    <element class="string">uk.org.mygrid.resources:biojava:1.4pre1</element>

-  </dependencies>

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>dna_seq</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>rna_seq</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.biojava.TranscribeWorker.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.biojava.TranscribeWorker.json
deleted file mode 100644
index 767852c..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.biojava.TranscribeWorker.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "import org.biojava.bio.seq.DNATools;\nimport org.biojava.bio.seq.RNATools;\nimport org.biojava.bio.symbol.SymbolList;\n\nif ((dna_seq == void) || (dna_seq == null)) {\n\tthrow new RuntimeException(\"The dna_seq must be specified\");\n}\n\n// make a DNA SymbolList\nSymbolList symL = DNATools.createDNA(dna_seq);\n\n// transcribe it to RNA (after BioJava 1.4 this method is\n// deprecated)\nsymL = RNATools.transcribe(symL);\n\n// (after BioJava 1.4 use this method instead)\n// symL = DNATools.toRNA(symL);\n\n// just to prove it worked\nrna_seq = symL.seqString();\n",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.biojava.TranscribeWorker",
-  "inputPorts" : [ {
-    "name" : "dna_seq",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "rna_seq",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.ConcatenateFileListWorker b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.ConcatenateFileListWorker
deleted file mode 100644
index 9ed72e4..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.ConcatenateFileListWorker
+++ /dev/null
@@ -1,101 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>BufferedReader getReader (String fileUrl) throws IOException {

-		InputStreamReader reader;

-		try {

-			reader = new FileReader(fileUrl);

-		}

-		catch (FileNotFoundException e) {

-			// try a real URL instead

-			URL url = new URL(fileUrl);

-			reader = new InputStreamReader (url.openStream());

-		}

-		return new BufferedReader(reader);

-	}

-

-String NEWLINE = System.getProperty("line.separator");

-

-boolean displayResults = false;

-if (displayresults != void) {

-	displayResults = Boolean.valueOf(displayresults).booleanValue();

-}

-

-StringBuffer sb = new StringBuffer(2000);

-

-if (outputfile == void) {

-	throw new RuntimeException("The 'outputfile' parameter cannot be null");

-}

-

-if (filelist == null) {

-	throw new RuntimeException("The 'filelist' parameter cannot be null");

-}

-

-String str = null;

-

-Writer writer = new FileWriter(outputfile);

-for (int i = 0; i &lt; filelist.size(); i++) {

-	BufferedReader reader = getReader(filelist.get(i));

-	while ((str = reader.readLine()) != null) {

-		writer.write(str);

-		writer.write(NEWLINE);

-

-		if (displayResults) {

-			sb.append(str);

-			sb.append(NEWLINE);

-		}

-	}

-

-	reader.close();

-

-}

-writer.flush();

-writer.close();

-

-if (displayResults) {

-	results= sb.toString();

-}

-

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>filelist</name>

-      <depth>1</depth>

-      <mimeTypes>

-        <string>l('text/plain')</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>outputfile</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>displayresults</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>results</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.ConcatenateFileListWorker.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.ConcatenateFileListWorker.json
deleted file mode 100644
index d91d466..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.ConcatenateFileListWorker.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "BufferedReader getReader (String fileUrl) throws IOException {\n\t\tInputStreamReader reader;\n\t\ttry {\n\t\t\treader = new FileReader(fileUrl);\n\t\t}\n\t\tcatch (FileNotFoundException e) {\n\t\t\t// try a real URL instead\n\t\t\tURL url = new URL(fileUrl);\n\t\t\treader = new InputStreamReader (url.openStream());\n\t\t}\n\t\treturn new BufferedReader(reader);\n\t}\n\nString NEWLINE = System.getProperty(\"line.separator\");\n\nboolean displayResults = false;\nif (displayresults != void) {\n\tdisplayResults = Boolean.valueOf(displayresults).booleanValue();\n}\n\nStringBuffer sb = new StringBuffer(2000);\n\nif (outputfile == void) {\n\tthrow new RuntimeException(\"The 'outputfile' parameter cannot be null\");\n}\n\nif (filelist == null) {\n\tthrow new RuntimeException(\"The 'filelist' parameter cannot be null\");\n}\n\nString str = null;\n\nWriter writer = new FileWriter(outputfile);\nfor (int i = 0; i < filelist.size(); i++) {\n\tBufferedReader reader = getReader(filelist.get(i));\n\twhile ((str = reader.readLine()) != null) {\n\t\twriter.write(str);\n\t\twriter.write(NEWLINE);\n\n\t\tif (displayResults) {\n\t\t\tsb.append(str);\n\t\t\tsb.append(NEWLINE);\n\t\t}\n\t}\n\n\treader.close();\n\n}\nwriter.flush();\nwriter.close();\n\nif (displayResults) {\n\tresults= sb.toString();\n}\n\n",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.io.ConcatenateFileListWorker",
-  "inputPorts" : [ {
-    "name" : "filelist",
-    "depth" : 1,
-    "type" : "String"
-  }, {
-    "name" : "outputfile",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "displayresults",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "results",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.EnvVariableWorker b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.EnvVariableWorker
deleted file mode 100644
index 410ceb0..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.EnvVariableWorker
+++ /dev/null
@@ -1,33 +0,0 @@
-<activity  xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap><map from="properties" to="properties" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
-  <script>import java.net.URLEncoder;
-
-Properties sysProps = System.getProperties();
-Set keys = sysProps.keySet();
-Iterator it = keys.iterator();
-String currKey = null;
-StringBuffer sb = new StringBuffer();
-sb.append("&lt;?xml version=\"1.0\"?&gt;\n");
-sb.append("&lt;property-list&gt;\n");
-while (it.hasNext()) {
-	currKey = (String) it.next();
-	sb.append("&lt;property ");
-	sb.append(" name=\"" + URLEncoder.encode(currKey) + "\"");
-	sb.append(" value=\"" + URLEncoder.encode(sysProps.getProperty(currKey)) + "\"/&gt;\n");
-}
-sb.append("&lt;/property-list&gt;");
-
-properties = sb.toString();
-</script>
-  <dependencies />
-  <inputs />
-  <outputs>
-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
-      <granularDepth>0</granularDepth>
-      <name>properties</name>
-      <depth>0</depth>
-      <mimeTypes>
-        <string>'text/xml'</string>
-      </mimeTypes>
-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
-  </outputs>
-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.EnvVariableWorker.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.EnvVariableWorker.json
deleted file mode 100644
index 5dc2349..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.EnvVariableWorker.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "import java.net.URLEncoder;\n\nProperties sysProps = System.getProperties();\nSet keys = sysProps.keySet();\nIterator it = keys.iterator();\nString currKey = null;\nStringBuffer sb = new StringBuffer();\nsb.append(\"<?xml version=\\\"1.0\\\"?>\\n\");\nsb.append(\"<property-list>\\n\");\nwhile (it.hasNext()) {\n\tcurrKey = (String) it.next();\n\tsb.append(\"<property \");\n\tsb.append(\" name=\\\"\" + URLEncoder.encode(currKey) + \"\\\"\");\n\tsb.append(\" value=\\\"\" + URLEncoder.encode(sysProps.getProperty(currKey)) + \"\\\"/>\\n\");\n}\nsb.append(\"</property-list>\");\n\nproperties = sb.toString();\n",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.io.EnvVariableWorker",
-  "outputPorts" : [ {
-    "name" : "properties",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.FileListByExtTask b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.FileListByExtTask
deleted file mode 100644
index 910d0d6..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.FileListByExtTask
+++ /dev/null
@@ -1,73 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>class FileExtFilter implements FileFilter {

-

-	public FileExtFilter(String ext) {

-		this.ext = ext;

-	}

-

-	public boolean accept(File file) {

-		return file.getName().endsWith(ext);

-	}

-

-	String ext = null;

-}

-

-if (extension == void || extension.equals("")) {

-	throw new RuntimeException(

-			"The 'extension' parameter cannot be null.  Please enter a valid file extension.");

-}

-

-if (directory == void || directory.equals("")) {

-	throw new RuntimeException(

-			"The 'directory' parameter cannot be null.  Please enter a valid file directory.");

-}

-

-File dirObj = new File(directory);

-

-if (!dirObj.exists()) {

-	throw new RuntimeException("The 'directory' parameter specified:" + directory

-			+ "does not exist.  Please enter a valid file directory.");

-}

-

-File[] fileObjList = dirObj.listFiles(new FileExtFilter(extension));

-List filelist = new ArrayList();

-for (int i = 0; i &lt; fileObjList.length; i++) {

-	filelist.add(fileObjList[i].getAbsolutePath());

-}

-

-

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>directory</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>extension</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>1</granularDepth>

-      <name>filelist</name>

-      <depth>1</depth>

-      <mimeTypes>

-        <string>l('text/plain')</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.FileListByExtTask.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.FileListByExtTask.json
deleted file mode 100644
index 656453e..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.FileListByExtTask.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "class FileExtFilter implements FileFilter {\n\n\tpublic FileExtFilter(String ext) {\n\t\tthis.ext = ext;\n\t}\n\n\tpublic boolean accept(File file) {\n\t\treturn file.getName().endsWith(ext);\n\t}\n\n\tString ext = null;\n}\n\nif (extension == void || extension.equals(\"\")) {\n\tthrow new RuntimeException(\n\t\t\t\"The 'extension' parameter cannot be null.  Please enter a valid file extension.\");\n}\n\nif (directory == void || directory.equals(\"\")) {\n\tthrow new RuntimeException(\n\t\t\t\"The 'directory' parameter cannot be null.  Please enter a valid file directory.\");\n}\n\nFile dirObj = new File(directory);\n\nif (!dirObj.exists()) {\n\tthrow new RuntimeException(\"The 'directory' parameter specified:\" + directory\n\t\t\t+ \"does not exist.  Please enter a valid file directory.\");\n}\n\nFile[] fileObjList = dirObj.listFiles(new FileExtFilter(extension));\nList filelist = new ArrayList();\nfor (int i = 0; i < fileObjList.length; i++) {\n\tfilelist.add(fileObjList[i].getAbsolutePath());\n}\n\n\n",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.io.FileListByExtTask",
-  "inputPorts" : [ {
-    "name" : "directory",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "extension",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "filelist",
-    "depth" : 1,
-    "granularDepth" : 1
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.FileListByRegexTask b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.FileListByRegexTask
deleted file mode 100644
index 06906b6..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.FileListByRegexTask
+++ /dev/null
@@ -1,71 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>class FileRegexFilter implements FileFilter {

-

-	public FileRegexFilter(String regex) {

-		this.regex = regex;

-	}

-

-	public boolean accept(File file) {

-		return file.getName().matches(regex);

-	}

-

-	String regex = null;

-}

-

-if (regex == void || regex.equals("")) {

-	throw new RuntimeException(

-			"The 'regex' parameter cannot be null.  Please enter a valid file extension.");

-}

-

-if (directory == void || directory.equals("")) {

-	throw new RuntimeException(

-			"The 'directory' parameter cannot be null.  Please enter a valid file directory.");

-}

-

-File dirObj = new File(directory);

-

-if (!dirObj.exists()) {

-	throw new RuntimeException("The 'directory' parameter specified:" + directory

-			+ "does not exist.  Please enter a valid file directory.");

-}

-

-File[] fileObjList = dirObj.listFiles(new FileRegexFilter(regex));

-List filelist = new ArrayList();

-for (int i = 0; i &lt; fileObjList.length; i++) {

-	filelist.add(fileObjList[i].getAbsolutePath());

-}

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>directory</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>regex</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>1</granularDepth>

-      <name>filelist</name>

-      <depth>1</depth>

-      <mimeTypes>

-        <string>l('text/plain')</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.FileListByRegexTask.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.FileListByRegexTask.json
deleted file mode 100644
index 35cdb01..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.FileListByRegexTask.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "class FileRegexFilter implements FileFilter {\n\n\tpublic FileRegexFilter(String regex) {\n\t\tthis.regex = regex;\n\t}\n\n\tpublic boolean accept(File file) {\n\t\treturn file.getName().matches(regex);\n\t}\n\n\tString regex = null;\n}\n\nif (regex == void || regex.equals(\"\")) {\n\tthrow new RuntimeException(\n\t\t\t\"The 'regex' parameter cannot be null.  Please enter a valid file extension.\");\n}\n\nif (directory == void || directory.equals(\"\")) {\n\tthrow new RuntimeException(\n\t\t\t\"The 'directory' parameter cannot be null.  Please enter a valid file directory.\");\n}\n\nFile dirObj = new File(directory);\n\nif (!dirObj.exists()) {\n\tthrow new RuntimeException(\"The 'directory' parameter specified:\" + directory\n\t\t\t+ \"does not exist.  Please enter a valid file directory.\");\n}\n\nFile[] fileObjList = dirObj.listFiles(new FileRegexFilter(regex));\nList filelist = new ArrayList();\nfor (int i = 0; i < fileObjList.length; i++) {\n\tfilelist.add(fileObjList[i].getAbsolutePath());\n}\n",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.io.FileListByRegexTask",
-  "inputPorts" : [ {
-    "name" : "directory",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "regex",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "filelist",
-    "depth" : 1,
-    "granularDepth" : 1
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.LocalCommand b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.LocalCommand
deleted file mode 100644
index c0adc09..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.LocalCommand
+++ /dev/null
@@ -1,80 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>if (command == void || command.equals("")) {

-	throw new RuntimeException("The 'command' port cannot be null.");

-}

-Process proc = null;

-Runtime rt = Runtime.getRuntime();

-

-String osName = System.getProperty("os.name");

-String[] cmdArray = null;

-if (osName.contains("Windows")) {

-	cmdArray = new String[] { "cmd.exe", "/c", command };

-} else {// TODO: investigate if this will work in Linux and OSX

-	cmdArray = new String[] { command };

-}

-

-// concatenate the arrays

-if ((args == void) || (args == null)) {

-	args = new ArrayList();

-}

-

-int argSize = cmdArray.length + args.size();

-ArrayList appArray = new ArrayList(argSize);

-for (int i = 0; i &lt; cmdArray.length; i++) {

-	appArray.add(cmdArray[i]);

-}

-

-for (int i = 0; i &lt; args.size(); i++) {

-	appArray.add(args.get(i));

-}

-

-String[] applist = new String[argSize];

-appArray.toArray(applist);

-proc = rt.exec(applist);

-

-// Get the input stream and read from it

-InputStream in = proc.getInputStream();

-

-int c;

-StringBuffer sb = new StringBuffer();

-while ((c = in.read()) != -1) {

-	sb.append((char) c);

-}

-in.close();

-result = sb.toString();

-  

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>command</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>args</name>

-      <depth>1</depth>

-      <mimeTypes>

-        <string>l('text/plain')</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>result</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.LocalCommand.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.LocalCommand.json
deleted file mode 100644
index f6ddf4f..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.LocalCommand.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "if (command == void || command.equals(\"\")) {\n\tthrow new RuntimeException(\"The 'command' port cannot be null.\");\n}\nProcess proc = null;\nRuntime rt = Runtime.getRuntime();\n\nString osName = System.getProperty(\"os.name\");\nString[] cmdArray = null;\nif (osName.contains(\"Windows\")) {\n\tcmdArray = new String[] { \"cmd.exe\", \"/c\", command };\n} else {// TODO: investigate if this will work in Linux and OSX\n\tcmdArray = new String[] { command };\n}\n\n// concatenate the arrays\nif ((args == void) || (args == null)) {\n\targs = new ArrayList();\n}\n\nint argSize = cmdArray.length + args.size();\nArrayList appArray = new ArrayList(argSize);\nfor (int i = 0; i < cmdArray.length; i++) {\n\tappArray.add(cmdArray[i]);\n}\n\nfor (int i = 0; i < args.size(); i++) {\n\tappArray.add(args.get(i));\n}\n\nString[] applist = new String[argSize];\nappArray.toArray(applist);\nproc = rt.exec(applist);\n\n// Get the input stream and read from it\nInputStream in = proc.getInputStream();\n\nint c;\nStringBuffer sb = new StringBuffer();\nwhile ((c = in.read()) != -1) {\n\tsb.append((char) c);\n}\nin.close();\nresult = sb.toString();\n  \n",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.io.LocalCommand",
-  "inputPorts" : [ {
-    "name" : "command",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "args",
-    "depth" : 1,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "result",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.TextFileReader b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.TextFileReader
deleted file mode 100644
index 6e9adb4..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.TextFileReader
+++ /dev/null
@@ -1,76 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>BufferedReader getReader (String fileUrl, String encoding) throws IOException {

-		InputStreamReader reader;

-		try {

-			if (encoding == null) {

-				reader = new FileReader(fileUrl);

-			} else {

-				reader = new InputStreamReader(new FileInputStream(fileUrl),encoding); 

-			}

-		}

-		catch (FileNotFoundException e) {

-			// try a real URL instead

-			URL url = new URL(fileUrl);

-			if (encoding == null) {

-				reader = new InputStreamReader (url.openStream());

-			} else {

-				reader = new InputStreamReader (url.openStream(), encoding);

-			}

-		}

-		return new BufferedReader(reader);

-	}

-

-

-

-StringBuffer sb = new StringBuffer(4000);

-

-if (encoding == void) {

-	encoding = null;

-}

-

-BufferedReader in = getReader(fileurl, encoding);

-String str;

-String lineEnding = System.getProperty("line.separator");

-

-while ((str = in.readLine()) != null) {

-	sb.append(str);

-	sb.append(lineEnding);

-}

-in.close();

-filecontents = sb.toString();

-  

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>fileurl</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>encoding</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>filecontents</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.TextFileReader.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.TextFileReader.json
deleted file mode 100644
index 1424433..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.TextFileReader.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "BufferedReader getReader (String fileUrl, String encoding) throws IOException {\n\t\tInputStreamReader reader;\n\t\ttry {\n\t\t\tif (encoding == null) {\n\t\t\t\treader = new FileReader(fileUrl);\n\t\t\t} else {\n\t\t\t\treader = new InputStreamReader(new FileInputStream(fileUrl),encoding); \n\t\t\t}\n\t\t}\n\t\tcatch (FileNotFoundException e) {\n\t\t\t// try a real URL instead\n\t\t\tURL url = new URL(fileUrl);\n\t\t\tif (encoding == null) {\n\t\t\t\treader = new InputStreamReader (url.openStream());\n\t\t\t} else {\n\t\t\t\treader = new InputStreamReader (url.openStream(), encoding);\n\t\t\t}\n\t\t}\n\t\treturn new BufferedReader(reader);\n\t}\n\n\n\nStringBuffer sb = new StringBuffer(4000);\n\nif (encoding == void) {\n\tencoding = null;\n}\n\nBufferedReader in = getReader(fileurl, encoding);\nString str;\nString lineEnding = System.getProperty(\"line.separator\");\n\nwhile ((str = in.readLine()) != null) {\n\tsb.append(str);\n\tsb.append(lineEnding);\n}\nin.close();\nfilecontents = sb.toString();\n  \n",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.io.TextFileReader",
-  "inputPorts" : [ {
-    "name" : "fileurl",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "encoding",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "filecontents",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.TextFileWriter b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.TextFileWriter
deleted file mode 100644
index 88ac962..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.TextFileWriter
+++ /dev/null
@@ -1,57 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>

-  BufferedWriter out;

-  if (encoding == void) {

-  	out = new BufferedWriter(new FileWriter(outputFile));

-  }

-  else {

-  	out = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outputFile), encoding)); 

-  }

-out.write(filecontents);

-out.flush();

-out.close();

-outputFile = filecontents;

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>outputFile</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>filecontents</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>encoding</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>outputFile</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.TextFileWriter.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.TextFileWriter.json
deleted file mode 100644
index 5a9f368..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.io.TextFileWriter.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "\n  BufferedWriter out;\n  if (encoding == void) {\n  \tout = new BufferedWriter(new FileWriter(outputFile));\n  }\n  else {\n  \tout = new BufferedWriter(new OutputStreamWriter(new FileOutputStream(outputFile), encoding)); \n  }\nout.write(filecontents);\nout.flush();\nout.close();\noutputFile = filecontents;\n",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.io.TextFileWriter",
-  "inputPorts" : [ {
-    "name" : "outputFile",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "filecontents",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "encoding",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "outputFile",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.jdbc.SQLQueryWorker b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.jdbc.SQLQueryWorker
deleted file mode 100644
index b6263cf..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.jdbc.SQLQueryWorker
+++ /dev/null
@@ -1,309 +0,0 @@
-<activity  xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap><map from="password" to="password" /><map from="userid" to="userid" /><map from="params" to="params" /><map from="url" to="url" /><map from="provideXml" to="provideXml" /><map from="driver" to="driver" /><map from="sql" to="sql" /></inputMap><outputMap><map from="resultList" to="resultList" /><map from="xmlresults" to="xmlresults" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
-
-  <script>
- import java.sql.Driver;
-import java.sql.DriverManager;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-import java.sql.ResultSet;
-import java.sql.ResultSetMetaData;
-import java.sql.SQLException;
-
-import javax.sql.rowset.WebRowSet;
-
-import com.sun.rowset.WebRowSetImpl;
-
-
-
-if ((driver == void) || (driver == null) || driver.equals("")) {
-	throw new RuntimeException("The driver must be specified");
-}
-
-if ((url == void) || (url == null) || url.equals("")) {
-	throw new RuntimeException("The url must be specified");
-}
-
-boolean provideXmlBoolean = ((provideXml != void) &amp;&amp; (provideXml != null) &amp;&amp; Boolean.valueOf(provideXml));
-
-if ((params == void) || (params == null)) {
-   params = new ArrayList();
-}
-
-if ((sql == void) || (sql == null) || sql.equals("")) {
-	throw new RuntimeException("The sql must be specified");
-}
-
-Class c = Thread.currentThread().getContextClassLoader().loadClass(driver);
-
-if (c == null) {
-	throw new RuntimeException("Class " + driver + " not found");
-}
-
-Driver d = c.newInstance();
-if (d == null) {
-	throw new RuntimeException("Could not create instance of driver");
-}
-
-Properties p = new Properties();
-
-if ((userid == void) || (userid == null)) {
-	userid = "";
-}
-
-p.setProperty("user", userid);
-
-if ((password == void) || (password == null)) {
-	password = "";
-}
-
-p.setProperty("password", password);
-
-Connection con = null;
-PreparedStatement ps = null;
-ResultSet rs = null;
-try {
-
-	con = d.connect(url, p);
-	ps = con.prepareStatement(sql);
-
-	int paramSize = params.size();
-	for (int i = 0; i &lt; paramSize; i++) {
-		ps.setObject(i + 1, params.get(i));
-	}
-
-	rs = ps.executeQuery();
-
-	if (provideXmlBoolean) {
-		WebRowSet webrs = new WebRowSetImpl();
-		StringWriter sw = new StringWriter();
-		webrs.writeXml(rs, sw);
-		xmlresults = sw.toString();
-	} else {
-		xmlresults = "";
-	}
-
-	try {
-		rs.beforeFirst();
-	} catch (SQLException e) {
-		// redo the query
-		rs = ps.executeQuery();
-	}
-
-	ResultSetMetaData rsmd = rs.getMetaData();
-	int numCols = rsmd.getColumnCount();
-	resultList = new ArrayList();
-	
-	// put the results into the results list.
-	while (rs.next()) {
-		List row = new ArrayList(numCols);
-		for (int i = 0; i &lt; numCols; i++) {
-			String str = rs.getString(i + 1); 
-			row.add(str == null ? "null" : str); 
-		}
-		resultList.add(row);
-	}
-}
-finally {
-	if (rs != null) {
-		rs.close();
-	}
-	if (ps != null) {
-		ps.close();
-	}
-	if (con != null) {
-		con.close();
-	}
-}
-  
-
- </script>
-
-  <dependencies />
-
-  <classLoaderSharing>system</classLoaderSharing>
-
-  <localDependencies />
-
-  <artifactDependencies />
-
-  <inputs>
-
-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-
-      <handledReferenceSchemes />
-
-      <translatedElementType>java.lang.String</translatedElementType>
-
-      <allowsLiteralValues>true</allowsLiteralValues>
-
-      <name>driver</name>
-
-      <depth>0</depth>
-
-      <mimeTypes>
-
-        <string>text/plain</string>
-
-      </mimeTypes>
-
-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-
-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-
-      <handledReferenceSchemes />
-
-      <translatedElementType>java.lang.String</translatedElementType>
-
-      <allowsLiteralValues>true</allowsLiteralValues>
-
-      <name>password</name>
-
-      <depth>0</depth>
-
-      <mimeTypes>
-
-        <string>text/plain</string>
-
-      </mimeTypes>
-
-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-
-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-
-      <handledReferenceSchemes />
-
-      <translatedElementType>java.lang.String</translatedElementType>
-
-      <allowsLiteralValues>true</allowsLiteralValues>
-
-      <name>userid</name>
-
-      <depth>0</depth>
-
-      <mimeTypes>
-
-        <string>text/plain</string>
-
-      </mimeTypes>
-
-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-
-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-
-      <handledReferenceSchemes />
-
-      <translatedElementType>java.lang.String</translatedElementType>
-
-      <allowsLiteralValues>true</allowsLiteralValues>
-
-      <name>url</name>
-
-      <depth>0</depth>
-
-      <mimeTypes>
-
-        <string>text/plain</string>
-
-      </mimeTypes>
-
-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-
-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-
-      <handledReferenceSchemes />
-
-      <translatedElementType>java.lang.String</translatedElementType>
-
-      <allowsLiteralValues>true</allowsLiteralValues>
-
-      <name>provideXml</name>
-
-      <depth>0</depth>
-
-      <mimeTypes>
-
-        <string>text/plain</string>
-
-      </mimeTypes>
-
-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-
-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-
-      <handledReferenceSchemes />
-
-      <translatedElementType>java.lang.String</translatedElementType>
-
-      <allowsLiteralValues>true</allowsLiteralValues>
-
-      <name>sql</name>
-
-      <depth>0</depth>
-
-      <mimeTypes>
-
-        <string>text/plain</string>
-
-      </mimeTypes>
-
-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-
-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-
-      <handledReferenceSchemes />
-
-      <translatedElementType>java.lang.String</translatedElementType>
-
-      <allowsLiteralValues>true</allowsLiteralValues>
-
-      <name>params</name>
-
-      <depth>1</depth>
-
-      <mimeTypes>
-
-        <string>text/plain</string>
-
-      </mimeTypes>
-
-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-
-  </inputs>
-
-  <outputs>
-
-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
-
-      <granularDepth>2</granularDepth>
-
-      <name>resultList</name>
-
-      <depth>2</depth>
-
-      <mimeTypes>
-
-        <string>text/plain</string>
-
-      </mimeTypes>
-
-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
-
-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
-
-      <granularDepth>0</granularDepth>
-
-      <name>xmlresults</name>
-
-      <depth>0</depth>
-
-      <mimeTypes>
-
-        <string>text/plain</string>
-
-      </mimeTypes>
-
-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
-
-  </outputs>
-
-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean><annotations /></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.jdbc.SQLQueryWorker.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.jdbc.SQLQueryWorker.json
deleted file mode 100644
index da1f005..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.jdbc.SQLQueryWorker.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "\n import java.sql.Driver;\nimport java.sql.DriverManager;\nimport java.sql.Connection;\nimport java.sql.PreparedStatement;\nimport java.sql.ResultSet;\nimport java.sql.ResultSetMetaData;\nimport java.sql.SQLException;\n\nimport javax.sql.rowset.WebRowSet;\n\nimport com.sun.rowset.WebRowSetImpl;\n\n\n\nif ((driver == void) || (driver == null) || driver.equals(\"\")) {\n\tthrow new RuntimeException(\"The driver must be specified\");\n}\n\nif ((url == void) || (url == null) || url.equals(\"\")) {\n\tthrow new RuntimeException(\"The url must be specified\");\n}\n\nboolean provideXmlBoolean = ((provideXml != void) && (provideXml != null) && Boolean.valueOf(provideXml));\n\nif ((params == void) || (params == null)) {\n   params = new ArrayList();\n}\n\nif ((sql == void) || (sql == null) || sql.equals(\"\")) {\n\tthrow new RuntimeException(\"The sql must be specified\");\n}\n\nClass c = Thread.currentThread().getContextClassLoader().loadClass(driver);\n\nif (c == null) {\n\tthrow new RuntimeException(\"Class \" + driver + \" not found\");\n}\n\nDriver d = c.newInstance();\nif (d == null) {\n\tthrow new RuntimeException(\"Could not create instance of driver\");\n}\n\nProperties p = new Properties();\n\nif ((userid == void) || (userid == null)) {\n\tuserid = \"\";\n}\n\np.setProperty(\"user\", userid);\n\nif ((password == void) || (password == null)) {\n\tpassword = \"\";\n}\n\np.setProperty(\"password\", password);\n\nConnection con = null;\nPreparedStatement ps = null;\nResultSet rs = null;\ntry {\n\n\tcon = d.connect(url, p);\n\tps = con.prepareStatement(sql);\n\n\tint paramSize = params.size();\n\tfor (int i = 0; i < paramSize; i++) {\n\t\tps.setObject(i + 1, params.get(i));\n\t}\n\n\trs = ps.executeQuery();\n\n\tif (provideXmlBoolean) {\n\t\tWebRowSet webrs = new WebRowSetImpl();\n\t\tStringWriter sw = new StringWriter();\n\t\twebrs.writeXml(rs, sw);\n\t\txmlresults = sw.toString();\n\t} else {\n\t\txmlresults = \"\";\n\t}\n\n\ttry {\n\t\trs.beforeFirst();\n\t} catch (SQLException e) {\n\t\t// redo the query\n\t\trs = ps.executeQuery();\n\t}\n\n\tResultSetMetaData rsmd = rs.getMetaData();\n\tint numCols = rsmd.getColumnCount();\n\tresultList = new ArrayList();\n\t\n\t// put the results into the results list.\n\twhile (rs.next()) {\n\t\tList row = new ArrayList(numCols);\n\t\tfor (int i = 0; i < numCols; i++) {\n\t\t\tString str = rs.getString(i + 1); \n\t\t\trow.add(str == null ? \"null\" : str); \n\t\t}\n\t\tresultList.add(row);\n\t}\n}\nfinally {\n\tif (rs != null) {\n\t\trs.close();\n\t}\n\tif (ps != null) {\n\t\tps.close();\n\t}\n\tif (con != null) {\n\t\tcon.close();\n\t}\n}\n  \n\n ",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.jdbc.SQLQueryWorker",
-  "inputPorts" : [ {
-    "name" : "driver",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "password",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "userid",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "url",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "provideXml",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "sql",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "params",
-    "depth" : 1,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "resultList",
-    "depth" : 2,
-    "granularDepth" : 2
-  }, {
-    "name" : "xmlresults",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.jdbc.SQLUpdateWorker b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.jdbc.SQLUpdateWorker
deleted file mode 100644
index fa0748c..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.jdbc.SQLUpdateWorker
+++ /dev/null
@@ -1,229 +0,0 @@
-<activity  xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap><map from="password" to="password" /><map from="userid" to="userid" /><map from="params" to="params" /><map from="url" to="url" /><map from="provideXml" to="provideXml" /><map from="driver" to="driver" /><map from="sql" to="sql" /></inputMap><outputMap><map from="resultList" to="resultList" /><map from="xmlresults" to="xmlresults" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
-
-  <script>import java.sql.Driver;
-import java.sql.DriverManager;
-import java.sql.Connection;
-import java.sql.PreparedStatement;
-
-if ((driver == void) || (driver == null) || driver.equals("")) {
-	throw new RuntimeException("The driver must be specified");
-}
-
-if ((url == void) || (url == null) || url.equals("")) {
-	throw new RuntimeException("The url must be specified");
-}
-
-if ((params == void) || (params == null)) {
-   params = new ArrayList();
-}
-
-if ((sql == void) || (sql == null) || sql.equals("")) {
-	throw new RuntimeException("The sql must be specified");
-}
-
-Class c = Thread.currentThread().getContextClassLoader().loadClass(driver);
-
-if (c == null) {
-	throw new RuntimeException("Class " + driver + " not found");
-}
-
-Driver d = c.newInstance();
-if (d == null) {
-	throw new RuntimeException("Could not create instance of driver");
-}
-
-Properties p = new Properties();
-
-if ((userid == void) || (userid == null)) {
-	userid = "";
-}
-
-p.setProperty("user", userid);
-
-if ((password == void) || (password == null)) {
-	password = "";
-}
-
-p.setProperty("password", password);
-
-Connection con = null;
-PreparedStatement ps = null;
-
-try {
-	con = d.connect(url, p);
-	ps = con.prepareStatement(sql);
-
-	int paramsSize = params.size();
-	for (int i = 0; i &lt; paramsSize; i++) {
-		ps.setObject(i + 1, params.get(i));
-	}
-
-	ps.executeUpdate();
-
-	resultList = "update successful";
-}
-finally {
-	if (ps != null) {
-		ps.close();
-	}
-	if (con != null) {
-		con.close();
-	}
-}
-
-</script>
-
-  <dependencies />
-
-  <classLoaderSharing>system</classLoaderSharing>
-    <localDependencies />
-
-  <artifactDependencies />
-
-  <inputs>
-
-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-
-      <handledReferenceSchemes />
-
-      <translatedElementType>java.lang.String</translatedElementType>
-
-      <allowsLiteralValues>true</allowsLiteralValues>
-
-      <name>driver</name>
-
-      <depth>0</depth>
-
-      <mimeTypes>
-
-        <string>text/plain</string>
-
-      </mimeTypes>
-
-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-
-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-
-      <handledReferenceSchemes />
-
-      <translatedElementType>java.lang.String</translatedElementType>
-
-      <allowsLiteralValues>true</allowsLiteralValues>
-
-      <name>password</name>
-
-      <depth>0</depth>
-
-      <mimeTypes>
-
-        <string>text/plain</string>
-
-      </mimeTypes>
-
-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-
-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-
-      <handledReferenceSchemes />
-
-      <translatedElementType>java.lang.String</translatedElementType>
-
-      <allowsLiteralValues>true</allowsLiteralValues>
-
-      <name>userid</name>
-
-      <depth>0</depth>
-
-      <mimeTypes>
-
-        <string>text/plain</string>
-
-      </mimeTypes>
-
-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-
-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-
-      <handledReferenceSchemes />
-
-      <translatedElementType>java.lang.String</translatedElementType>
-
-      <allowsLiteralValues>true</allowsLiteralValues>
-
-      <name>url</name>
-
-      <depth>0</depth>
-
-      <mimeTypes>
-
-        <string>text/plain</string>
-
-      </mimeTypes>
-
-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-
-
-
-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-
-      <handledReferenceSchemes />
-
-      <translatedElementType>java.lang.String</translatedElementType>
-
-      <allowsLiteralValues>true</allowsLiteralValues>
-
-      <name>sql</name>
-
-      <depth>0</depth>
-
-      <mimeTypes>
-
-        <string>text/plain</string>
-
-      </mimeTypes>
-
-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-
-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-
-      <handledReferenceSchemes />
-
-      <translatedElementType>java.lang.String</translatedElementType>
-
-      <allowsLiteralValues>true</allowsLiteralValues>
-
-      <name>params</name>
-
-      <depth>1</depth>
-
-      <mimeTypes>
-
-        <string>text/plain</string>
-
-      </mimeTypes>
-
-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-
-  </inputs>
-
-  <outputs>
-
-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
-
-      <granularDepth>0</granularDepth>
-
-      <name>resultList</name>
-
-      <depth>0</depth>
-
-      <mimeTypes>
-
-        <string>text/plain</string>
-
-      </mimeTypes>
-
-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
-
-  </outputs>
-
-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean><annotations /></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.jdbc.SQLUpdateWorker.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.jdbc.SQLUpdateWorker.json
deleted file mode 100644
index 3144afd..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.jdbc.SQLUpdateWorker.json
+++ /dev/null
@@ -1,36 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "import java.sql.Driver;\nimport java.sql.DriverManager;\nimport java.sql.Connection;\nimport java.sql.PreparedStatement;\n\nif ((driver == void) || (driver == null) || driver.equals(\"\")) {\n\tthrow new RuntimeException(\"The driver must be specified\");\n}\n\nif ((url == void) || (url == null) || url.equals(\"\")) {\n\tthrow new RuntimeException(\"The url must be specified\");\n}\n\nif ((params == void) || (params == null)) {\n   params = new ArrayList();\n}\n\nif ((sql == void) || (sql == null) || sql.equals(\"\")) {\n\tthrow new RuntimeException(\"The sql must be specified\");\n}\n\nClass c = Thread.currentThread().getContextClassLoader().loadClass(driver);\n\nif (c == null) {\n\tthrow new RuntimeException(\"Class \" + driver + \" not found\");\n}\n\nDriver d = c.newInstance();\nif (d == null) {\n\tthrow new RuntimeException(\"Could not create instance of driver\");\n}\n\nProperties p = new Properties();\n\nif ((userid == void) || (userid == null)) {\n\tuserid = \"\";\n}\n\np.setProperty(\"user\", userid);\n\nif ((password == void) || (password == null)) {\n\tpassword = \"\";\n}\n\np.setProperty(\"password\", password);\n\nConnection con = null;\nPreparedStatement ps = null;\n\ntry {\n\tcon = d.connect(url, p);\n\tps = con.prepareStatement(sql);\n\n\tint paramsSize = params.size();\n\tfor (int i = 0; i < paramsSize; i++) {\n\t\tps.setObject(i + 1, params.get(i));\n\t}\n\n\tps.executeUpdate();\n\n\tresultList = \"update successful\";\n}\nfinally {\n\tif (ps != null) {\n\t\tps.close();\n\t}\n\tif (con != null) {\n\t\tcon.close();\n\t}\n}\n\n",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.jdbc.SQLUpdateWorker",
-  "inputPorts" : [ {
-    "name" : "driver",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "password",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "userid",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "url",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "sql",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "params",
-    "depth" : 1,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "resultList",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.NucleotideFastaWorker b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.NucleotideFastaWorker
deleted file mode 100644
index 8b7a680..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.NucleotideFastaWorker
+++ /dev/null
@@ -1,45 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap><map from="outputText" to="outputText" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>if ((id == void) || (id == null) || id.equals("")) {

-	throw new RunTimeException("port id must have a non-empty value");

-}

-

-URL url = new URL ("http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?rettype=fasta&amp;db=nucleotide&amp;retmode=text&amp;id=" + id);

-

-BufferedReader reader = new BufferedReader (new InputStreamReader(url.openStream()));

-StringWriter writer = new StringWriter();

-

-char[] buffer = new char[1024];

-    while (true) {

-        int r = reader.read(buffer);

-        if (r &lt;= 0) {

-            break;

-        }

-        writer.write(buffer, 0, r);

-    }

-reader.close();

-outputText = writer.toString();

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>id</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>outputText</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.NucleotideFastaWorker.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.NucleotideFastaWorker.json
deleted file mode 100644
index feb26cc..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.NucleotideFastaWorker.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "if ((id == void) || (id == null) || id.equals(\"\")) {\n\tthrow new RunTimeException(\"port id must have a non-empty value\");\n}\n\nURL url = new URL (\"http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?rettype=fasta&db=nucleotide&retmode=text&id=\" + id);\n\nBufferedReader reader = new BufferedReader (new InputStreamReader(url.openStream()));\nStringWriter writer = new StringWriter();\n\nchar[] buffer = new char[1024];\n    while (true) {\n        int r = reader.read(buffer);\n        if (r <= 0) {\n            break;\n        }\n        writer.write(buffer, 0, r);\n    }\nreader.close();\noutputText = writer.toString();\n",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.ncbi.NucleotideFastaWorker",
-  "inputPorts" : [ {
-    "name" : "id",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "outputText",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.NucleotideGBSeqWorker b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.NucleotideGBSeqWorker
deleted file mode 100644
index 80f791a..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.NucleotideGBSeqWorker
+++ /dev/null
@@ -1,45 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap><map from="outputText" to="outputText" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>if ((id == void) || (id == null) || id.equals("")) {

-	throw new RunTimeException("port id must have a non-empty value");

-}

-

-URL url = new URL ("http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?rettype=gb&amp;db=nucleotide&amp;retmode=xml&amp;id=" + id);

-

-BufferedReader reader = new BufferedReader (new InputStreamReader(url.openStream()));

-StringWriter writer = new StringWriter();

-

-char[] buffer = new char[1024];

-    while (true) {

-        int r = reader.read(buffer);

-        if (r &lt;= 0) {

-            break;

-        }

-        writer.write(buffer, 0, r);

-    }

-reader.close();

-outputText = writer.toString();

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>id</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>outputText</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.NucleotideGBSeqWorker.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.NucleotideGBSeqWorker.json
deleted file mode 100644
index e616f51..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.NucleotideGBSeqWorker.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "if ((id == void) || (id == null) || id.equals(\"\")) {\n\tthrow new RunTimeException(\"port id must have a non-empty value\");\n}\n\nURL url = new URL (\"http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?rettype=gb&db=nucleotide&retmode=xml&id=\" + id);\n\nBufferedReader reader = new BufferedReader (new InputStreamReader(url.openStream()));\nStringWriter writer = new StringWriter();\n\nchar[] buffer = new char[1024];\n    while (true) {\n        int r = reader.read(buffer);\n        if (r <= 0) {\n            break;\n        }\n        writer.write(buffer, 0, r);\n    }\nreader.close();\noutputText = writer.toString();\n",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.ncbi.NucleotideGBSeqWorker",
-  "inputPorts" : [ {
-    "name" : "id",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "outputText",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.NucleotideINSDSeqXMLWorker b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.NucleotideINSDSeqXMLWorker
deleted file mode 100644
index 2ce601b..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.NucleotideINSDSeqXMLWorker
+++ /dev/null
@@ -1,45 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap><map from="outputText" to="outputText" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>if ((id == void) || (id == null) || id.equals("")) {

-	throw new RunTimeException("port id must have a non-empty value");

-}

-

-URL url = new URL ("http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?rettype=gbc&amp;db=nucleotide&amp;retmode=xml&amp;id=" + id);

-

-BufferedReader reader = new BufferedReader (new InputStreamReader(url.openStream()));

-StringWriter writer = new StringWriter();

-

-char[] buffer = new char[1024];

-    while (true) {

-        int r = reader.read(buffer);

-        if (r &lt;= 0) {

-            break;

-        }

-        writer.write(buffer, 0, r);

-    }

-reader.close();

-outputText = writer.toString();

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>id</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>outputText</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.NucleotideINSDSeqXMLWorker.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.NucleotideINSDSeqXMLWorker.json
deleted file mode 100644
index 8dfbdbe..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.NucleotideINSDSeqXMLWorker.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "if ((id == void) || (id == null) || id.equals(\"\")) {\n\tthrow new RunTimeException(\"port id must have a non-empty value\");\n}\n\nURL url = new URL (\"http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?rettype=gbc&db=nucleotide&retmode=xml&id=\" + id);\n\nBufferedReader reader = new BufferedReader (new InputStreamReader(url.openStream()));\nStringWriter writer = new StringWriter();\n\nchar[] buffer = new char[1024];\n    while (true) {\n        int r = reader.read(buffer);\n        if (r <= 0) {\n            break;\n        }\n        writer.write(buffer, 0, r);\n    }\nreader.close();\noutputText = writer.toString();\n",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.ncbi.NucleotideINSDSeqXMLWorker",
-  "inputPorts" : [ {
-    "name" : "id",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "outputText",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.NucleotideTinySeqXMLWorker b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.NucleotideTinySeqXMLWorker
deleted file mode 100644
index aad694a..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.NucleotideTinySeqXMLWorker
+++ /dev/null
@@ -1,45 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap><map from="outputText" to="outputText" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>if ((id == void) || (id == null) || id.equals("")) {

-	throw new RunTimeException("port id must have a non-empty value");

-}

-

-URL url = new URL ("http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?rettype=fasta&amp;db=nucleotide&amp;retmode=xml&amp;id=" + id);

-

-BufferedReader reader = new BufferedReader (new InputStreamReader(url.openStream()));

-StringWriter writer = new StringWriter();

-

-char[] buffer = new char[1024];

-    while (true) {

-        int r = reader.read(buffer);

-        if (r &lt;= 0) {

-            break;

-        }

-        writer.write(buffer, 0, r);

-    }

-reader.close();

-outputText = writer.toString();

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>id</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>outputText</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.NucleotideTinySeqXMLWorker.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.NucleotideTinySeqXMLWorker.json
deleted file mode 100644
index 3867455..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.NucleotideTinySeqXMLWorker.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "if ((id == void) || (id == null) || id.equals(\"\")) {\n\tthrow new RunTimeException(\"port id must have a non-empty value\");\n}\n\nURL url = new URL (\"http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?rettype=fasta&db=nucleotide&retmode=xml&id=\" + id);\n\nBufferedReader reader = new BufferedReader (new InputStreamReader(url.openStream()));\nStringWriter writer = new StringWriter();\n\nchar[] buffer = new char[1024];\n    while (true) {\n        int r = reader.read(buffer);\n        if (r <= 0) {\n            break;\n        }\n        writer.write(buffer, 0, r);\n    }\nreader.close();\noutputText = writer.toString();\n",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.ncbi.NucleotideTinySeqXMLWorker",
-  "inputPorts" : [ {
-    "name" : "id",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "outputText",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.ProteinFastaWorker b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.ProteinFastaWorker
deleted file mode 100644
index c07b04e..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.ProteinFastaWorker
+++ /dev/null
@@ -1,45 +0,0 @@
-<activity  xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap><map from="outputText" to="outputText" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>if ((id == void) || (id == null) || id.equals("")) {

-	throw new RunTimeException("port id must have a non-empty value");

-}

-

-URL url = new URL ("http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?rettype=fasta&amp;db=protein&amp;retmode=text&amp;id=" + id);

-

-BufferedReader reader = new BufferedReader (new InputStreamReader(url.openStream()));

-StringWriter writer = new StringWriter();

-

-char[] buffer = new char[1024];

-    while (true) {

-        int r = reader.read(buffer);

-        if (r &lt;= 0) {

-            break;

-        }

-        writer.write(buffer, 0, r);

-    }

-reader.close();

-outputText = writer.toString();

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>id</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>outputText</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.ProteinFastaWorker.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.ProteinFastaWorker.json
deleted file mode 100644
index fc5b181..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.ProteinFastaWorker.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "if ((id == void) || (id == null) || id.equals(\"\")) {\n\tthrow new RunTimeException(\"port id must have a non-empty value\");\n}\n\nURL url = new URL (\"http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?rettype=fasta&db=protein&retmode=text&id=\" + id);\n\nBufferedReader reader = new BufferedReader (new InputStreamReader(url.openStream()));\nStringWriter writer = new StringWriter();\n\nchar[] buffer = new char[1024];\n    while (true) {\n        int r = reader.read(buffer);\n        if (r <= 0) {\n            break;\n        }\n        writer.write(buffer, 0, r);\n    }\nreader.close();\noutputText = writer.toString();\n",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.ncbi.ProteinFastaWorker",
-  "inputPorts" : [ {
-    "name" : "id",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "outputText",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.ProteinGBSeqWorker b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.ProteinGBSeqWorker
deleted file mode 100644
index bf85c2b..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.ProteinGBSeqWorker
+++ /dev/null
@@ -1,45 +0,0 @@
-<activity  xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap><map from="outputText" to="outputText" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>if ((id == void) || (id == null) || id.equals("")) {

-	throw new RunTimeException("port id must have a non-empty value");

-}

-

-URL url = new URL ("http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?rettype=gb&amp;db=protein&amp;retmode=xml&amp;id=" + id);

-

-BufferedReader reader = new BufferedReader (new InputStreamReader(url.openStream()));

-StringWriter writer = new StringWriter();

-

-char[] buffer = new char[1024];

-    while (true) {

-        int r = reader.read(buffer);

-        if (r &lt;= 0) {

-            break;

-        }

-        writer.write(buffer, 0, r);

-    }

-reader.close();

-outputText = writer.toString();

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>id</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>outputText</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.ProteinGBSeqWorker.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.ProteinGBSeqWorker.json
deleted file mode 100644
index 160ce92..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.ProteinGBSeqWorker.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "if ((id == void) || (id == null) || id.equals(\"\")) {\n\tthrow new RunTimeException(\"port id must have a non-empty value\");\n}\n\nURL url = new URL (\"http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?rettype=gb&db=protein&retmode=xml&id=\" + id);\n\nBufferedReader reader = new BufferedReader (new InputStreamReader(url.openStream()));\nStringWriter writer = new StringWriter();\n\nchar[] buffer = new char[1024];\n    while (true) {\n        int r = reader.read(buffer);\n        if (r <= 0) {\n            break;\n        }\n        writer.write(buffer, 0, r);\n    }\nreader.close();\noutputText = writer.toString();\n",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.ncbi.ProteinGBSeqWorker",
-  "inputPorts" : [ {
-    "name" : "id",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "outputText",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.ProteinINSDSeqXMLWorker b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.ProteinINSDSeqXMLWorker
deleted file mode 100644
index c82209f..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.ProteinINSDSeqXMLWorker
+++ /dev/null
@@ -1,45 +0,0 @@
-<activity  xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap><map from="outputText" to="outputText" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>if ((id == void) || (id == null) || id.equals("")) {

-	throw new RunTimeException("port id must have a non-empty value");

-}

-

-URL url = new URL ("http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?rettype=gbc&amp;db=protein&amp;retmode=xml&amp;id=" + id);

-

-BufferedReader reader = new BufferedReader (new InputStreamReader(url.openStream()));

-StringWriter writer = new StringWriter();

-

-char[] buffer = new char[1024];

-    while (true) {

-        int r = reader.read(buffer);

-        if (r &lt;= 0) {

-            break;

-        }

-        writer.write(buffer, 0, r);

-    }

-reader.close();

-outputText = writer.toString();

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>id</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>outputText</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.ProteinINSDSeqXMLWorker.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.ProteinINSDSeqXMLWorker.json
deleted file mode 100644
index 6e36120..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.ProteinINSDSeqXMLWorker.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "if ((id == void) || (id == null) || id.equals(\"\")) {\n\tthrow new RunTimeException(\"port id must have a non-empty value\");\n}\n\nURL url = new URL (\"http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?rettype=gbc&db=protein&retmode=xml&id=\" + id);\n\nBufferedReader reader = new BufferedReader (new InputStreamReader(url.openStream()));\nStringWriter writer = new StringWriter();\n\nchar[] buffer = new char[1024];\n    while (true) {\n        int r = reader.read(buffer);\n        if (r <= 0) {\n            break;\n        }\n        writer.write(buffer, 0, r);\n    }\nreader.close();\noutputText = writer.toString();\n",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.ncbi.ProteinINSDSeqXMLWorker",
-  "inputPorts" : [ {
-    "name" : "id",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "outputText",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.ProteinTinySeqXMLWorker b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.ProteinTinySeqXMLWorker
deleted file mode 100644
index b6f9337..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.ProteinTinySeqXMLWorker
+++ /dev/null
@@ -1,45 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap><map from="outputText" to="outputText" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>if ((id == void) || (id == null) || id.equals("")) {

-	throw new RunTimeException("port id must have a non-empty value");

-}

-

-URL url = new URL ("http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?rettype=fasta&amp;db=protein&amp;retmode=xml&amp;id=" + id);

-

-BufferedReader reader = new BufferedReader (new InputStreamReader(url.openStream()));

-StringWriter writer = new StringWriter();

-

-char[] buffer = new char[1024];

-    while (true) {

-        int r = reader.read(buffer);

-        if (r &lt;= 0) {

-            break;

-        }

-        writer.write(buffer, 0, r);

-    }

-reader.close();

-outputText = writer.toString();

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>id</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>outputText</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.ProteinTinySeqXMLWorker.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.ProteinTinySeqXMLWorker.json
deleted file mode 100644
index 471e000..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.ProteinTinySeqXMLWorker.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "if ((id == void) || (id == null) || id.equals(\"\")) {\n\tthrow new RunTimeException(\"port id must have a non-empty value\");\n}\n\nURL url = new URL (\"http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?rettype=fasta&db=protein&retmode=xml&id=\" + id);\n\nBufferedReader reader = new BufferedReader (new InputStreamReader(url.openStream()));\nStringWriter writer = new StringWriter();\n\nchar[] buffer = new char[1024];\n    while (true) {\n        int r = reader.read(buffer);\n        if (r <= 0) {\n            break;\n        }\n        writer.write(buffer, 0, r);\n    }\nreader.close();\noutputText = writer.toString();\n",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.ncbi.ProteinTinySeqXMLWorker",
-  "inputPorts" : [ {
-    "name" : "id",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "outputText",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.PubMedEFetchWorker b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.PubMedEFetchWorker
deleted file mode 100644
index 71fef3c..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.PubMedEFetchWorker
+++ /dev/null
@@ -1,68 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap><map from="outputText" to="outputText" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>if ((id == void) || (id == null) || id.equals("")) {

-	throw new RunTimeException("port id must have a non-empty value");

-}

-

-URL url = new URL ("http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed" +

-"&amp;rettype=" + (((rettype == void ) || (rettype == null)) ? "full" : rettype) +

-"&amp;retmode=" + (((retmode == void) || (retmode == null)) ? "xml" : retmode) +

-"&amp;id=" + id);

-

-BufferedReader reader = new BufferedReader (new InputStreamReader(url.openStream()));

-StringWriter writer = new StringWriter();

-

-char[] buffer = new char[1024];

-    while (true) {

-        int r = reader.read(buffer);

-        if (r &lt;= 0) {

-            break;

-        }

-        writer.write(buffer, 0, r);

-    }

-reader.close();

-outputText = writer.toString();

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>id</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>rettype</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>retmode</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>outputText</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.PubMedEFetchWorker.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.PubMedEFetchWorker.json
deleted file mode 100644
index 5e2a7df..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.PubMedEFetchWorker.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "if ((id == void) || (id == null) || id.equals(\"\")) {\n\tthrow new RunTimeException(\"port id must have a non-empty value\");\n}\n\nURL url = new URL (\"http://eutils.ncbi.nlm.nih.gov/entrez/eutils/efetch.fcgi?db=pubmed\" +\n\"&rettype=\" + (((rettype == void ) || (rettype == null)) ? \"full\" : rettype) +\n\"&retmode=\" + (((retmode == void) || (retmode == null)) ? \"xml\" : retmode) +\n\"&id=\" + id);\n\nBufferedReader reader = new BufferedReader (new InputStreamReader(url.openStream()));\nStringWriter writer = new StringWriter();\n\nchar[] buffer = new char[1024];\n    while (true) {\n        int r = reader.read(buffer);\n        if (r <= 0) {\n            break;\n        }\n        writer.write(buffer, 0, r);\n    }\nreader.close();\noutputText = writer.toString();\n",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.ncbi.PubMedEFetchWorker",
-  "inputPorts" : [ {
-    "name" : "id",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "rettype",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "retmode",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "outputText",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.PubMedESearchWorker b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.PubMedESearchWorker
deleted file mode 100644
index 37c440c..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.PubMedESearchWorker
+++ /dev/null
@@ -1,124 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap><map from="outputText" to="outputText" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>if ((term == void) || (term == null) || term.equals("")) {

-	throw new RunTimeException("port term must have a non-empty value");

-}

-

-URL url = new URL ("http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed" +

-(field == void ? "" : ("&amp;field=" + field)) +

-(retstart == void ? "" : ("&amp;retstart=" + retstart)) +

-(retmax == void ? "" : ("&amp;retmax=" + retmax)) +

-(mindate == void ? "" : ("&amp;mindate=" + mindate)) +

-(maxdate == void ? "" : ("&amp;maxdate=" + maxdate)) +

-"&amp;rettype=" + (rettype == void ? "full" : rettype) +

-"&amp;retmode=" + (retmode == void ? "xml" : retmode) +

-"&amp;tool=taverna" +

-"&amp;term=" + term);

-

-BufferedReader reader = new BufferedReader (new InputStreamReader(url.openStream()));

-StringWriter writer = new StringWriter();

-

-char[] buffer = new char[1024];

-    while (true) {

-        int r = reader.read(buffer);

-        if (r &lt;= 0) {

-            break;

-        }

-        writer.write(buffer, 0, r);

-    }

-reader.close();

-outputText = writer.toString();

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>term</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>db</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>field</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>retstart</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>retmax</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>mindate</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>maxdate</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>rettype</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>outputText</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.PubMedESearchWorker.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.PubMedESearchWorker.json
deleted file mode 100644
index bd29f82..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ncbi.PubMedESearchWorker.json
+++ /dev/null
@@ -1,44 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "if ((term == void) || (term == null) || term.equals(\"\")) {\n\tthrow new RunTimeException(\"port term must have a non-empty value\");\n}\n\nURL url = new URL (\"http://eutils.ncbi.nlm.nih.gov/entrez/eutils/esearch.fcgi?db=pubmed\" +\n(field == void ? \"\" : (\"&field=\" + field)) +\n(retstart == void ? \"\" : (\"&retstart=\" + retstart)) +\n(retmax == void ? \"\" : (\"&retmax=\" + retmax)) +\n(mindate == void ? \"\" : (\"&mindate=\" + mindate)) +\n(maxdate == void ? \"\" : (\"&maxdate=\" + maxdate)) +\n\"&rettype=\" + (rettype == void ? \"full\" : rettype) +\n\"&retmode=\" + (retmode == void ? \"xml\" : retmode) +\n\"&tool=taverna\" +\n\"&term=\" + term);\n\nBufferedReader reader = new BufferedReader (new InputStreamReader(url.openStream()));\nStringWriter writer = new StringWriter();\n\nchar[] buffer = new char[1024];\n    while (true) {\n        int r = reader.read(buffer);\n        if (r <= 0) {\n            break;\n        }\n        writer.write(buffer, 0, r);\n    }\nreader.close();\noutputText = writer.toString();\n",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.ncbi.PubMedESearchWorker",
-  "inputPorts" : [ {
-    "name" : "term",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "db",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "field",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "retstart",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "retmax",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "mindate",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "maxdate",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "rettype",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "outputText",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.net.BrowseUrl b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.net.BrowseUrl
deleted file mode 100644
index a2317c5..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.net.BrowseUrl
+++ /dev/null
@@ -1,31 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <name>url</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>text/plain</string>

-      </mimeTypes>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs />

-  <classLoaderSharing>workflow</classLoaderSharing>

-  <localDependencies />

-  <artifactDependencies />

-  <script>import java.awt.Desktop;

-import java.net.URI;

-

-if ((url == void) || (url == null)) {

-	throw new RuntimeException("Url must be specified");

-}

-

-URI uri = null;

-

-uri = new URI(url);

-

-Desktop.getDesktop().browse(uri);</script>

-  <dependencies />

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean><annotations /></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.net.BrowseUrl.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.net.BrowseUrl.json
deleted file mode 100644
index 1a2155e..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.net.BrowseUrl.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "import java.awt.Desktop;\nimport java.net.URI;\n\nif ((url == void) || (url == null)) {\n\tthrow new RuntimeException(\"Url must be specified\");\n}\n\nURI uri = null;\n\nuri = new URI(url);\n\nDesktop.getDesktop().browse(uri);",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.net.BrowseUrl",
-  "inputPorts" : [ {
-    "name" : "url",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.net.ExtractHeader b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.net.ExtractHeader
deleted file mode 100644
index d3149d6..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.net.ExtractHeader
+++ /dev/null
@@ -1,55 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
-  <inputs>
-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-      <name>headers</name>
-      <depth>1</depth>
-      <mimeTypes>
-        <string>text/plain</string>
-      </mimeTypes>
-      <handledReferenceSchemes />
-      <translatedElementType>java.lang.String</translatedElementType>
-      <allowsLiteralValues>true</allowsLiteralValues>
-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-      <name>header_key</name>
-      <depth>0</depth>
-      <mimeTypes>
-        <string>text/plain</string>
-      </mimeTypes>
-      <handledReferenceSchemes />
-      <translatedElementType>java.lang.String</translatedElementType>
-      <allowsLiteralValues>true</allowsLiteralValues>
-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-  </inputs>
-  <outputs>
-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
-      <name>header_value</name>
-      <depth>0</depth>
-      <mimeTypes />
-      <granularDepth>0</granularDepth>
-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
-  </outputs>
-  <classLoaderSharing>workflow</classLoaderSharing>
-  <localDependencies />
-  <artifactDependencies />
-  <script>if ((headers == void) || (headers == null)) {
-	throw new RuntimeException("Headers must be specified");
-}
-
-if ((header_key == void) || (header_key == null)) {
-	throw new RuntimeException("Header_key must be specified");
-}
-
-String header_value = "";
-if (!header_key.endsWith(":")) {
-	header_key += ":";
-}
-for (String h : headers) {
-	if (h.startsWith(header_key)) {
-		header_value = h.substring(header_key.length());
-		header_value = header_value.trim();
-		break;
-	}
-}</script>
-  <dependencies />
-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean><annotations /></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.net.ExtractHeader.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.net.ExtractHeader.json
deleted file mode 100644
index 0e510fa..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.net.ExtractHeader.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "if ((headers == void) || (headers == null)) {\n\tthrow new RuntimeException(\"Headers must be specified\");\n}\n\nif ((header_key == void) || (header_key == null)) {\n\tthrow new RuntimeException(\"Header_key must be specified\");\n}\n\nString header_value = \"\";\nif (!header_key.endsWith(\":\")) {\n\theader_key += \":\";\n}\nfor (String h : headers) {\n\tif (h.startsWith(header_key)) {\n\t\theader_value = h.substring(header_key.length());\n\t\theader_value = header_value.trim();\n\t\tbreak;\n\t}\n}",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.net.ExtractHeader",
-  "inputPorts" : [ {
-    "name" : "headers",
-    "depth" : 1,
-    "type" : "String"
-  }, {
-    "name" : "header_key",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "header_value",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.AskWorker b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.AskWorker
deleted file mode 100644
index f094efa..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.AskWorker
+++ /dev/null
@@ -1,41 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>import javax.swing.JOptionPane;

-

-answer = JOptionPane.showInputDialog(null, (message == void ? null : message), (title == void ? null : title), JOptionPane.QUESTION_MESSAGE);

-

-

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>title</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>message</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>answer</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.AskWorker.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.AskWorker.json
deleted file mode 100644
index c2095cc..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.AskWorker.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "import javax.swing.JOptionPane;\n\nanswer = JOptionPane.showInputDialog(null, (message == void ? null : message), (title == void ? null : title), JOptionPane.QUESTION_MESSAGE);\n\n\n",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.ui.AskWorker",
-  "inputPorts" : [ {
-    "name" : "title",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "message",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "answer",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.ChooseWorker b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.ChooseWorker
deleted file mode 100644
index 5244d77..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.ChooseWorker
+++ /dev/null
@@ -1,80 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>import javax.swing.BoxLayout;

-import javax.swing.ButtonGroup;

-import javax.swing.JLabel;

-import javax.swing.JOptionPane;

-import javax.swing.JPanel;

-import javax.swing.JRadioButton;

-

-if ((selectionValues == void) || (selectionValues == null) || (selectionValues.isEmpty())) {

-    throw new RuntimeException("selectionValues must be specified and non-empty");

-}

-

-ButtonGroup group = new ButtonGroup();

-JPanel messagePanel = new JPanel();

-messagePanel.setLayout(new BoxLayout(messagePanel,BoxLayout.Y_AXIS));

-

-messagePanel.add(new JLabel((message == void ? null : message)));

-		

-JRadioButton[] buttonArray = new JRadioButton[selectionValues.size()];

-for (int i = 0; i &lt; buttonArray.length; i++) {			

-	buttonArray[i] = new JRadioButton(selectionValues.get(i));

-	if (i==0) buttonArray[i].setSelected(true);

-	group.add(buttonArray[i]);

-	messagePanel.add(buttonArray[i]);

-}				

-

-JOptionPane.showOptionDialog(null, messagePanel, (title == void ? null : title),

-		JOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, new Object[]{"OK"}, null);

-		

-String answer="";

-for (JRadioButton button : buttonArray) {

-	if (button.isSelected()) {

-		answer=button.getText();

-	}

-}

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>title</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>message</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>selectionValues</name>

-      <depth>1</depth>

-      <mimeTypes>

-        <string>l('text/plain')</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>answer</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.ChooseWorker.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.ChooseWorker.json
deleted file mode 100644
index 0410fc7..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.ChooseWorker.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "import javax.swing.BoxLayout;\nimport javax.swing.ButtonGroup;\nimport javax.swing.JLabel;\nimport javax.swing.JOptionPane;\nimport javax.swing.JPanel;\nimport javax.swing.JRadioButton;\n\nif ((selectionValues == void) || (selectionValues == null) || (selectionValues.isEmpty())) {\n    throw new RuntimeException(\"selectionValues must be specified and non-empty\");\n}\n\nButtonGroup group = new ButtonGroup();\nJPanel messagePanel = new JPanel();\nmessagePanel.setLayout(new BoxLayout(messagePanel,BoxLayout.Y_AXIS));\n\nmessagePanel.add(new JLabel((message == void ? null : message)));\n\t\t\nJRadioButton[] buttonArray = new JRadioButton[selectionValues.size()];\nfor (int i = 0; i < buttonArray.length; i++) {\t\t\t\n\tbuttonArray[i] = new JRadioButton(selectionValues.get(i));\n\tif (i==0) buttonArray[i].setSelected(true);\n\tgroup.add(buttonArray[i]);\n\tmessagePanel.add(buttonArray[i]);\n}\t\t\t\t\n\nJOptionPane.showOptionDialog(null, messagePanel, (title == void ? null : title),\n\t\tJOptionPane.YES_NO_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE, null, new Object[]{\"OK\"}, null);\n\t\t\nString answer=\"\";\nfor (JRadioButton button : buttonArray) {\n\tif (button.isSelected()) {\n\t\tanswer=button.getText();\n\t}\n}\n",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.ui.ChooseWorker",
-  "inputPorts" : [ {
-    "name" : "title",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "message",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "selectionValues",
-    "depth" : 1,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "answer",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.SelectFileWorker b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.SelectFileWorker
deleted file mode 100644
index e594b7f..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.SelectFileWorker
+++ /dev/null
@@ -1,116 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>import java.awt.CardLayout;

-import java.awt.Image;

-import java.awt.Toolkit;

-import java.io.File;

-import java.util.HashMap;

-import java.util.Map;

-

-import javax.swing.ImageIcon;

-import javax.swing.JEditorPane;

-import javax.swing.JFileChooser;

-import javax.swing.JLabel;

-import javax.swing.JPanel;

-import javax.swing.filechooser.FileFilter;

-

-class FileExtFilter extends FileFilter {

-

-	public FileExtFilter(String ext, String label, boolean includeDir) {

-		this.ext = ext;

-		this.label = label;

-		this.includeDir = includeDir;

-	}

-

-	public String getDescription() {

-		return this.label;

-	}

-

-	public boolean accept(File file) {

-		if (file.isDirectory() &amp;&amp; includeDir) {

-			return true;

-		} else {

-			return file.getName().endsWith(this.ext);

-		}

-	}

-

-	String ext, label;

-

-	boolean includeDir;

-}

-

-if (title == void) {

-	title = null;

-}

-

-if ((fileExtensions == void) || (fileExtensions == null)) {

-	fileExtensions = "";

-}

-

-if ((fileExtLabels == void) || (fileExtLabels == null)) {

-	fileExtLabels = "";

-}

-

-JFileChooser chooser = new JFileChooser();

-chooser.setDialogTitle(title);

-

-String[] fileTypeList = fileExtensions.split(",");

-String[] filterLabelList = fileExtLabels.split(",");

-

-if (fileTypeList != null &amp;&amp; filterLabelList != null &amp;&amp; fileTypeList.length != filterLabelList.length) {

-	throw new RuntimeException("The list of extensions and file filter labels must be the same length");

-}

-

-// create the file filters

-for (int i = 0; i &lt; fileTypeList.length; i++) {

-	FileExtFilter filter = new FileExtFilter(fileTypeList[i], filterLabelList[i], true);

-	chooser.setFileFilter(filter);

-}

-

-chooser.showOpenDialog(null);

-File file = chooser.getSelectedFile();

-selectedFile = file.getAbsolutePath();

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>title</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>fileExtensions</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>fileExtLabels</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>selectedFile</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.SelectFileWorker.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.SelectFileWorker.json
deleted file mode 100644
index 1d71cef..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.SelectFileWorker.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "import java.awt.CardLayout;\nimport java.awt.Image;\nimport java.awt.Toolkit;\nimport java.io.File;\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport javax.swing.ImageIcon;\nimport javax.swing.JEditorPane;\nimport javax.swing.JFileChooser;\nimport javax.swing.JLabel;\nimport javax.swing.JPanel;\nimport javax.swing.filechooser.FileFilter;\n\nclass FileExtFilter extends FileFilter {\n\n\tpublic FileExtFilter(String ext, String label, boolean includeDir) {\n\t\tthis.ext = ext;\n\t\tthis.label = label;\n\t\tthis.includeDir = includeDir;\n\t}\n\n\tpublic String getDescription() {\n\t\treturn this.label;\n\t}\n\n\tpublic boolean accept(File file) {\n\t\tif (file.isDirectory() && includeDir) {\n\t\t\treturn true;\n\t\t} else {\n\t\t\treturn file.getName().endsWith(this.ext);\n\t\t}\n\t}\n\n\tString ext, label;\n\n\tboolean includeDir;\n}\n\nif (title == void) {\n\ttitle = null;\n}\n\nif ((fileExtensions == void) || (fileExtensions == null)) {\n\tfileExtensions = \"\";\n}\n\nif ((fileExtLabels == void) || (fileExtLabels == null)) {\n\tfileExtLabels = \"\";\n}\n\nJFileChooser chooser = new JFileChooser();\nchooser.setDialogTitle(title);\n\nString[] fileTypeList = fileExtensions.split(\",\");\nString[] filterLabelList = fileExtLabels.split(\",\");\n\nif (fileTypeList != null && filterLabelList != null && fileTypeList.length != filterLabelList.length) {\n\tthrow new RuntimeException(\"The list of extensions and file filter labels must be the same length\");\n}\n\n// create the file filters\nfor (int i = 0; i < fileTypeList.length; i++) {\n\tFileExtFilter filter = new FileExtFilter(fileTypeList[i], filterLabelList[i], true);\n\tchooser.setFileFilter(filter);\n}\n\nchooser.showOpenDialog(null);\nFile file = chooser.getSelectedFile();\nselectedFile = file.getAbsolutePath();\n",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.ui.SelectFileWorker",
-  "inputPorts" : [ {
-    "name" : "title",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "fileExtensions",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "fileExtLabels",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "selectedFile",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.SelectWorker b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.SelectWorker
deleted file mode 100644
index 1745844..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.SelectWorker
+++ /dev/null
@@ -1,53 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>import javax.swing.JOptionPane;

-

-if ((valueList == void) || (valueList == null) || (valueList.isEmpty())) {

-    throw new RuntimeException("valueList must be specified and non-empty");

-}

-

-answer = (String) JOptionPane.showInputDialog(null, (message == void ? null : message), (title == void ? null : title), JOptionPane.QUESTION_MESSAGE, null, valueList.toArray(), valueList.get(0));

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>valueList</name>

-      <depth>1</depth>

-      <mimeTypes>

-        <string>l('text/plain')</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>message</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>title</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>answer</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.SelectWorker.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.SelectWorker.json
deleted file mode 100644
index 6c287b6..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.SelectWorker.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "import javax.swing.JOptionPane;\n\nif ((valueList == void) || (valueList == null) || (valueList.isEmpty())) {\n    throw new RuntimeException(\"valueList must be specified and non-empty\");\n}\n\nanswer = (String) JOptionPane.showInputDialog(null, (message == void ? null : message), (title == void ? null : title), JOptionPane.QUESTION_MESSAGE, null, valueList.toArray(), valueList.get(0));\n",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.ui.SelectWorker",
-  "inputPorts" : [ {
-    "name" : "valueList",
-    "depth" : 1,
-    "type" : "String"
-  }, {
-    "name" : "message",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "title",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "answer",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.TellWorker b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.TellWorker
deleted file mode 100644
index 99ee6ab..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.TellWorker
+++ /dev/null
@@ -1,42 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>import javax.swing.JOptionPane;

-

-JOptionPane.showMessageDialog(null, (message == void ? null : message), (title == void ? null : title),	JOptionPane.INFORMATION_MESSAGE);

-

-answer = "answer";

-

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>title</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>message</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>answer</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.TellWorker.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.TellWorker.json
deleted file mode 100644
index 8037a42..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.TellWorker.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "import javax.swing.JOptionPane;\n\nJOptionPane.showMessageDialog(null, (message == void ? null : message), (title == void ? null : title),\tJOptionPane.INFORMATION_MESSAGE);\n\nanswer = \"answer\";\n\n",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.ui.TellWorker",
-  "inputPorts" : [ {
-    "name" : "title",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "message",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "answer",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.WarnWorker b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.WarnWorker
deleted file mode 100644
index b211ba5..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.WarnWorker
+++ /dev/null
@@ -1,42 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>import javax.swing.JOptionPane;

-

-JOptionPane.showMessageDialog(null, (message == void ? null : message), (title == void ? null : title),	JOptionPane.WARNING_MESSAGE);

-

-answer = "answer";

-  

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>title</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>message</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>answer</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.WarnWorker.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.WarnWorker.json
deleted file mode 100644
index eaa8c93..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.ui.WarnWorker.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "import javax.swing.JOptionPane;\n\nJOptionPane.showMessageDialog(null, (message == void ? null : message), (title == void ? null : title),\tJOptionPane.WARNING_MESSAGE);\n\nanswer = \"answer\";\n  \n",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.ui.WarnWorker",
-  "inputPorts" : [ {
-    "name" : "title",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "message",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "answer",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.xml.XPathTextWorker b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.xml.XPathTextWorker
deleted file mode 100644
index 0395225..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.xml.XPathTextWorker
+++ /dev/null
@@ -1,75 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>import org.dom4j.Document;

-import org.dom4j.Node;

-import org.dom4j.io.SAXReader;

-

-SAXReader reader = new SAXReader(false);

-reader.setIncludeInternalDTDDeclarations(false);

-reader.setIncludeExternalDTDDeclarations(false);

-

-Document document = reader.read(new StringReader(xmltext));

-List nodelist = document.selectNodes(xpath);

-

-// Process the elements in the nodelist

-ArrayList outputList = new ArrayList();

-ArrayList outputXmlList = new ArrayList();

-

-String val = null;

-String xmlVal = null;

-for (Iterator iter = nodelist.iterator(); iter.hasNext();) {

-	Node element = (Node) iter.next();

-	xmlVal = element.asXML();

-	val = element.getStringValue();

-	if (val != null &amp;&amp; !val.equals("")) {

-		outputList.add(val);

-		outputXmlList.add(xmlVal);

-	}

-

-}

-

-List nodelist=outputList;

-List nodelistAsXML=outputXmlList;</script>

-  <dependencies>

-    <string>dom4j:dom4j:1.6</string>

-  </dependencies>

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>xpath</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>xml-text</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/xml'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>1</granularDepth>

-      <name>nodelist</name>

-      <depth>1</depth>

-      <mimeTypes>

-        <string>l('text/plain')</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>1</granularDepth>

-      <name>nodelistAsXML</name>

-      <depth>1</depth>

-      <mimeTypes>

-        <string>l('text/plain')</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.xml.XPathTextWorker.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.xml.XPathTextWorker.json
deleted file mode 100644
index 3fa2385..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.xml.XPathTextWorker.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "import org.dom4j.Document;\nimport org.dom4j.Node;\nimport org.dom4j.io.SAXReader;\n\nSAXReader reader = new SAXReader(false);\nreader.setIncludeInternalDTDDeclarations(false);\nreader.setIncludeExternalDTDDeclarations(false);\n\nDocument document = reader.read(new StringReader(xmltext));\nList nodelist = document.selectNodes(xpath);\n\n// Process the elements in the nodelist\nArrayList outputList = new ArrayList();\nArrayList outputXmlList = new ArrayList();\n\nString val = null;\nString xmlVal = null;\nfor (Iterator iter = nodelist.iterator(); iter.hasNext();) {\n\tNode element = (Node) iter.next();\n\txmlVal = element.asXML();\n\tval = element.getStringValue();\n\tif (val != null && !val.equals(\"\")) {\n\t\toutputList.add(val);\n\t\toutputXmlList.add(xmlVal);\n\t}\n\n}\n\nList nodelist=outputList;\nList nodelistAsXML=outputXmlList;",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.xml.XPathTextWorker",
-  "inputPorts" : [ {
-    "name" : "xpath",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "xml-text",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "nodelist",
-    "depth" : 1,
-    "granularDepth" : 1
-  }, {
-    "name" : "nodelistAsXML",
-    "depth" : 1,
-    "granularDepth" : 1
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.xml.XSLTWorker b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.xml.XSLTWorker
deleted file mode 100644
index 1532b63..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.xml.XSLTWorker
+++ /dev/null
@@ -1,152 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap><map from="outputStr" to="outputStr" /></outputMap><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>import java.io.BufferedReader;

-import java.io.BufferedWriter;

-import java.io.FileInputStream;

-import java.io.FileNotFoundException;

-import java.io.FileReader;

-import java.io.FileWriter;

-import java.io.IOException;

-import java.io.InputStreamReader;

-import java.io.OutputStreamWriter;

-import java.io.StringWriter;

-import java.io.Writer;

-import java.net.URL;

-import java.util.HashMap;

-import java.util.Map;

-

-import javax.xml.transform.Result;

-import javax.xml.transform.Source;

-import javax.xml.transform.SourceLocator;

-import javax.xml.transform.Templates;

-import javax.xml.transform.Transformer;

-import javax.xml.transform.TransformerConfigurationException;

-import javax.xml.transform.TransformerException;

-import javax.xml.transform.TransformerFactory;

-import javax.xml.transform.stream.StreamResult;

-import javax.xml.transform.stream.StreamSource;

-

-BufferedReader getReader (String fileUrl) throws IOException {

-		InputStreamReader reader;

-		try {

-			reader = new FileReader(fileUrl);

-		}

-		catch (FileNotFoundException e) {

-			// try a real URL instead

-			URL url = new URL(fileUrl);

-			reader = new InputStreamReader (url.openStream());

-		}

-		return new BufferedReader(reader);

-	}

-	

-BufferedWriter getWriter (String fileUrl) throws IOException {

-		Writer writer;

-		try {

-			writer = new FileWriter(fileUrl);

-		}

-		catch (FileNotFoundException e) {

-			// try a real URL instead

-			URL url = new URL(fileUrl);

-			writer = new OutputStreamWriter (url.openConnection().getOutputStream());

-		}

-		return new BufferedWriter(writer);

-	}

-	

-String xslFilename = xslFileURL;

-String outFilename;

-if (outFileURL != void) {

-    outFilename = outFileURL;

-}

-

-String ext;

-if (outputExt != void) {

-    ext = outputExt;

-}

-

-if (((outFilename == null) || outFilename.equals("")) &amp;&amp; (ext != null)) {

-		outFilename = inFileURL.substring(0, inFileURL.indexOf(".")+1) + ext;

-}

-

-// Create transformer factory

-TransformerFactory factory = TransformerFactory.newInstance();

-

-// Use the factory to create a template containing the xsl file

-Templates template = factory.newTemplates(new StreamSource(getReader(xslFilename)));

-

-// Use the template to create a transformer

-Transformer xformer = template.newTransformer();

-

-// Prepare the input and output files

-Reader sourceReader = getReader(inFileURL);

-Source source = new StreamSource(sourceReader);

-StringWriter resultStr = new StringWriter();

-Result result = new StreamResult(resultStr);

-

-// Apply the xsl file to the source file and write the result to the

-// output file

-xformer.transform(source, result);

-

-outputStr = resultStr.toString();

-

-if ((outFilename != null) &amp;&amp; !outFilename.equals("")) {

-

-	BufferedWriter out = getWriter(outFilename);

-

-	out.write(outputStr);

-	out.close();

-}

-sourceReader.close();

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>xslFileURL</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>outFileURL</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>inFileURL</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>outputExt</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>outputStr</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/xml'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.xml.XSLTWorker.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.xml.XSLTWorker.json
deleted file mode 100644
index 09aff0d..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.xml.XSLTWorker.json
+++ /dev/null
@@ -1,28 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "import java.io.BufferedReader;\nimport java.io.BufferedWriter;\nimport java.io.FileInputStream;\nimport java.io.FileNotFoundException;\nimport java.io.FileReader;\nimport java.io.FileWriter;\nimport java.io.IOException;\nimport java.io.InputStreamReader;\nimport java.io.OutputStreamWriter;\nimport java.io.StringWriter;\nimport java.io.Writer;\nimport java.net.URL;\nimport java.util.HashMap;\nimport java.util.Map;\n\nimport javax.xml.transform.Result;\nimport javax.xml.transform.Source;\nimport javax.xml.transform.SourceLocator;\nimport javax.xml.transform.Templates;\nimport javax.xml.transform.Transformer;\nimport javax.xml.transform.TransformerConfigurationException;\nimport javax.xml.transform.TransformerException;\nimport javax.xml.transform.TransformerFactory;\nimport javax.xml.transform.stream.StreamResult;\nimport javax.xml.transform.stream.StreamSource;\n\nBufferedReader getReader (String fileUrl) throws IOException {\n\t\tInputStreamReader reader;\n\t\ttry {\n\t\t\treader = new FileReader(fileUrl);\n\t\t}\n\t\tcatch (FileNotFoundException e) {\n\t\t\t// try a real URL instead\n\t\t\tURL url = new URL(fileUrl);\n\t\t\treader = new InputStreamReader (url.openStream());\n\t\t}\n\t\treturn new BufferedReader(reader);\n\t}\n\t\nBufferedWriter getWriter (String fileUrl) throws IOException {\n\t\tWriter writer;\n\t\ttry {\n\t\t\twriter = new FileWriter(fileUrl);\n\t\t}\n\t\tcatch (FileNotFoundException e) {\n\t\t\t// try a real URL instead\n\t\t\tURL url = new URL(fileUrl);\n\t\t\twriter = new OutputStreamWriter (url.openConnection().getOutputStream());\n\t\t}\n\t\treturn new BufferedWriter(writer);\n\t}\n\t\nString xslFilename = xslFileURL;\nString outFilename;\nif (outFileURL != void) {\n    outFilename = outFileURL;\n}\n\nString ext;\nif (outputExt != void) {\n    ext = outputExt;\n}\n\nif (((outFilename == null) || outFilename.equals(\"\")) && (ext != null)) {\n\t\toutFilename = inFileURL.substring(0, inFileURL.indexOf(\".\")+1) + ext;\n}\n\n// Create transformer factory\nTransformerFactory factory = TransformerFactory.newInstance();\n\n// Use the factory to create a template containing the xsl file\nTemplates template = factory.newTemplates(new StreamSource(getReader(xslFilename)));\n\n// Use the template to create a transformer\nTransformer xformer = template.newTransformer();\n\n// Prepare the input and output files\nReader sourceReader = getReader(inFileURL);\nSource source = new StreamSource(sourceReader);\nStringWriter resultStr = new StringWriter();\nResult result = new StreamResult(resultStr);\n\n// Apply the xsl file to the source file and write the result to the\n// output file\nxformer.transform(source, result);\n\noutputStr = resultStr.toString();\n\nif ((outFilename != null) && !outFilename.equals(\"\")) {\n\n\tBufferedWriter out = getWriter(outFilename);\n\n\tout.write(outputStr);\n\tout.close();\n}\nsourceReader.close();\n",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.xml.XSLTWorker",
-  "inputPorts" : [ {
-    "name" : "xslFileURL",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "outFileURL",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "inFileURL",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "outputExt",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "outputStr",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.xml.XSLTWorkerWithParameters b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.xml.XSLTWorkerWithParameters
deleted file mode 100644
index 768c8f9..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.xml.XSLTWorkerWithParameters
+++ /dev/null
@@ -1,100 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow">
-  <class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class>
-  <inputMap>
-    <map from="xsltString" to="xsltString" />
-    <map from="paramList" to="paramList" />
-    <map from="sourceString" to="sourceString" />
-  </inputMap>
-  <outputMap>
-    <map from="outputString" to="outputString" />
-  </outputMap>
-  <configBean encoding="xstream">
-    <net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">
-  <inputs>
-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-      <name>sourceString</name>
-      <depth>0</depth>
-      <mimeTypes>
-        <string>text/plain</string>
-      </mimeTypes>
-      <handledReferenceSchemes />
-      <translatedElementType>java.lang.String</translatedElementType>
-      <allowsLiteralValues>true</allowsLiteralValues>
-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-      <name>xsltString</name>
-      <depth>0</depth>
-      <mimeTypes>
-        <string>text/plain</string>
-      </mimeTypes>
-      <handledReferenceSchemes />
-      <translatedElementType>java.lang.String</translatedElementType>
-      <allowsLiteralValues>true</allowsLiteralValues>
-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-      <name>paramList</name>
-      <depth>1</depth>
-      <mimeTypes>
-        <string>text/plain</string>
-      </mimeTypes>
-      <handledReferenceSchemes />
-      <translatedElementType>java.lang.String</translatedElementType>
-      <allowsLiteralValues>true</allowsLiteralValues>
-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>
-  </inputs>
-  <outputs>
-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
-      <name>outputString</name>
-      <depth>0</depth>
-      <mimeTypes />
-      <granularDepth>0</granularDepth>
-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>
-  </outputs>
-  <classLoaderSharing>workflow</classLoaderSharing>
-  <localDependencies />
-  <artifactDependencies />
-  <script>//From a proposal by Mikolaj Rybinski
-import javax.xml.transform.Source;
-import javax.xml.transform.Transformer;
-import javax.xml.transform.TransformerFactory;
-import javax.xml.transform.stream.StreamResult;
-import javax.xml.transform.stream.StreamSource;
-
-param(paramstr) {
-    nameAndValue = paramstr.split("=");
-    if (nameAndValue.length != 2) {
-        throw new RuntimeException("Wrong parameter format: \"" + paramstr + "\".");
-    }
-    name = nameAndValue[0].trim();
-    value = nameAndValue[1].trim();
-    return this;
-}
-
-if ((sourceString == void) || (sourceString == null)) {
-        throw new RuntimeException("sourceString must be specified");
-}
-
-if ((xsltString == void) || (xsltString == null)) {
-        throw new RuntimeException("xsltString must be specified");
-}
-
-Source inSource = new StreamSource(new StringReader(sourceString));
-Source xslSource = new StreamSource(new StringReader(xsltString));
-
-// the factory pattern supports different XSLT processors
-// e.g. set the "javax.xml.transform.TransformerFactory" system property
-TransformerFactory tnfFact = TransformerFactory.newInstance();
-Transformer tnf = tnfFact.newTransformer(xslSource);
-
-if (paramList != void) {
-  for (String paramstr : paramList) {
-    p = param(paramstr);
-    tnf.setParameter(p.name, p.value);
-  }
-}
-
-Writer outputWriter = new StringWriter();
-tnf.transform(inSource, new StreamResult(outputWriter));
-outputString = outputWriter.toString();</script>
-  <dependencies />
-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean><annotations /></activity>
diff --git a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.xml.XSLTWorkerWithParameters.json b/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.xml.XSLTWorkerWithParameters.json
deleted file mode 100644
index 0800c76..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/net.sourceforge.taverna.scuflworkers.xml.XSLTWorkerWithParameters.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "//From a proposal by Mikolaj Rybinski\nimport javax.xml.transform.Source;\nimport javax.xml.transform.Transformer;\nimport javax.xml.transform.TransformerFactory;\nimport javax.xml.transform.stream.StreamResult;\nimport javax.xml.transform.stream.StreamSource;\n\nparam(paramstr) {\n    nameAndValue = paramstr.split(\"=\");\n    if (nameAndValue.length != 2) {\n        throw new RuntimeException(\"Wrong parameter format: \\\"\" + paramstr + \"\\\".\");\n    }\n    name = nameAndValue[0].trim();\n    value = nameAndValue[1].trim();\n    return this;\n}\n\nif ((sourceString == void) || (sourceString == null)) {\n        throw new RuntimeException(\"sourceString must be specified\");\n}\n\nif ((xsltString == void) || (xsltString == null)) {\n        throw new RuntimeException(\"xsltString must be specified\");\n}\n\nSource inSource = new StreamSource(new StringReader(sourceString));\nSource xslSource = new StreamSource(new StringReader(xsltString));\n\n// the factory pattern supports different XSLT processors\n// e.g. set the \"javax.xml.transform.TransformerFactory\" system property\nTransformerFactory tnfFact = TransformerFactory.newInstance();\nTransformer tnf = tnfFact.newTransformer(xslSource);\n\nif (paramList != void) {\n  for (String paramstr : paramList) {\n    p = param(paramstr);\n    tnf.setParameter(p.name, p.value);\n  }\n}\n\nWriter outputWriter = new StringWriter();\ntnf.transform(inSource, new StreamResult(outputWriter));\noutputString = outputWriter.toString();",
-  "localworkerName" : "net.sourceforge.taverna.scuflworkers.xml.XSLTWorkerWithParameters",
-  "inputPorts" : [ {
-    "name" : "sourceString",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "xsltString",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "paramList",
-    "depth" : 1,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "outputString",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.ByteArrayToString b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.ByteArrayToString
deleted file mode 100644
index 35b50d0..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.ByteArrayToString
+++ /dev/null
@@ -1,44 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>if ((bytes == void) || (bytes == null)) {

-	throw new RuntimeException("The 'bytes' parameter must be specified");

-}

-if (encoding == void) {

-	string = new String(bytes);

-} else {

-	string = new String(bytes, encoding);

-}

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>[B</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>bytes</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'application/octet-stream'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>encoding</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>string</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.ByteArrayToString.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.ByteArrayToString.json
deleted file mode 100644
index ae7f934..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.ByteArrayToString.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "if ((bytes == void) || (bytes == null)) {\n\tthrow new RuntimeException(\"The 'bytes' parameter must be specified\");\n}\nif (encoding == void) {\n\tstring = new String(bytes);\n} else {\n\tstring = new String(bytes, encoding);\n}\n",
-  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.ByteArrayToString",
-  "inputPorts" : [ {
-    "name" : "bytes",
-    "depth" : 0,
-    "type" : "byte[]"
-  }, {
-    "name" : "encoding",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "string",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.DecodeBase64 b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.DecodeBase64
deleted file mode 100644
index 62c01bd..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.DecodeBase64
+++ /dev/null
@@ -1,31 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>import org.apache.commons.codec.binary.Base64;

-

-bytes = Base64.decodeBase64(base64.getBytes());

-</script>

-  <dependencies class="java.util.Collections$SingletonList">

-    <element class="string">commons-codec:commons-codec:1.3</element>

-  </dependencies>

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>base64</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>bytes</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'application/octet-stream'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.DecodeBase64.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.DecodeBase64.json
deleted file mode 100644
index 1cb0f62..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.DecodeBase64.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "import org.apache.commons.codec.binary.Base64;\n\nbytes = Base64.decodeBase64(base64.getBytes());\n",
-  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.DecodeBase64",
-  "inputPorts" : [ {
-    "name" : "base64",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "bytes",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.EchoList b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.EchoList
deleted file mode 100644
index 615c762..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.EchoList
+++ /dev/null
@@ -1,26 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>outputlist = inputlist;</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>[B</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>inputlist</name>

-      <depth>1</depth>

-      <mimeTypes>

-        <string>l('')</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>1</granularDepth>

-      <name>outputlist</name>

-      <depth>1</depth>

-      <mimeTypes>

-        <string>l('')</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.EchoList.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.EchoList.json
deleted file mode 100644
index aa0d198..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.EchoList.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "outputlist = inputlist;",
-  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.EchoList",
-  "inputPorts" : [ {
-    "name" : "inputlist",
-    "depth" : 1,
-    "type" : "byte[]"
-  } ],
-  "outputPorts" : [ {
-    "name" : "outputlist",
-    "depth" : 1,
-    "granularDepth" : 1
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.EmitLotsOfStrings b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.EmitLotsOfStrings
deleted file mode 100644
index 6045d0a..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.EmitLotsOfStrings
+++ /dev/null
@@ -1,19 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>List strings = new ArrayList();

-for (int i = 0; i &lt; 40; i++) {

-	strings.add("String" + i);

-}

-</script>

-  <dependencies />

-  <inputs />

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>1</granularDepth>

-      <name>strings</name>

-      <depth>1</depth>

-      <mimeTypes>

-        <string>l('text/plain')</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.EmitLotsOfStrings.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.EmitLotsOfStrings.json
deleted file mode 100644
index 4afc1f8..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.EmitLotsOfStrings.json
+++ /dev/null
@@ -1,11 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "List strings = new ArrayList();\nfor (int i = 0; i < 40; i++) {\n\tstrings.add(\"String\" + i);\n}\n",
-  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.EmitLotsOfStrings",
-  "outputPorts" : [ {
-    "name" : "strings",
-    "depth" : 1,
-    "granularDepth" : 1
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.EncodeBase64 b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.EncodeBase64
deleted file mode 100644
index 8f6bcd0..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.EncodeBase64
+++ /dev/null
@@ -1,30 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>import org.apache.commons.codec.binary.Base64;

-

-base64 = new String(Base64.encodeBase64(bytes));</script>

-  <dependencies class="java.util.Collections$SingletonList">

-    <element class="string">commons-codec:commons-codec:1.3</element>

-  </dependencies>

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>[B</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>bytes</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'application/octet-stream'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>base64</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.EncodeBase64.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.EncodeBase64.json
deleted file mode 100644
index 5cbd786..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.EncodeBase64.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "import org.apache.commons.codec.binary.Base64;\n\nbase64 = new String(Base64.encodeBase64(bytes));",
-  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.EncodeBase64",
-  "inputPorts" : [ {
-    "name" : "bytes",
-    "depth" : 0,
-    "type" : "byte[]"
-  } ],
-  "outputPorts" : [ {
-    "name" : "base64",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.ExtractImageLinks b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.ExtractImageLinks
deleted file mode 100644
index 05946b1..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.ExtractImageLinks
+++ /dev/null
@@ -1,41 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>String lowerCaseContent = document.toLowerCase();

-int index = 0;

-List imagelinks = new ArrayList();

-while ((index = lowerCaseContent.indexOf("&lt;img", index)) != -1) {

-	if ((index = lowerCaseContent.indexOf("src", index)) == -1)

-		break;

-	if ((index = lowerCaseContent.indexOf("=", index)) == -1)

-		break;

-	index++;

-	String remaining = document.substring(index);

-	StringTokenizer st = new StringTokenizer(remaining, "\t\n\r\"&gt;#");

-	String strLink = st.nextToken();

-	imagelinks.add(strLink);

-}

-

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>document</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/html'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>1</granularDepth>

-      <name>imagelinks</name>

-      <depth>1</depth>

-      <mimeTypes>

-        <string>l('text/x-taverna-web-url')</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.ExtractImageLinks.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.ExtractImageLinks.json
deleted file mode 100644
index 2a23a47..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.ExtractImageLinks.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "String lowerCaseContent = document.toLowerCase();\nint index = 0;\nList imagelinks = new ArrayList();\nwhile ((index = lowerCaseContent.indexOf(\"<img\", index)) != -1) {\n\tif ((index = lowerCaseContent.indexOf(\"src\", index)) == -1)\n\t\tbreak;\n\tif ((index = lowerCaseContent.indexOf(\"=\", index)) == -1)\n\t\tbreak;\n\tindex++;\n\tString remaining = document.substring(index);\n\tStringTokenizer st = new StringTokenizer(remaining, \"\\t\\n\\r\\\">#\");\n\tString strLink = st.nextToken();\n\timagelinks.add(strLink);\n}\n\n",
-  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.ExtractImageLinks",
-  "inputPorts" : [ {
-    "name" : "document",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "imagelinks",
-    "depth" : 1,
-    "granularDepth" : 1
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.FilterStringList b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.FilterStringList
deleted file mode 100644
index 7b107e6..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.FilterStringList
+++ /dev/null
@@ -1,43 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>filteredlist = new ArrayList();

-for (Iterator i = stringlist.iterator(); i.hasNext();) {

-	String item = (String) i.next();

-	if (item.matches(regex)) {

-		filteredlist.add(item);

-	}

-}

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>stringlist</name>

-      <depth>1</depth>

-      <mimeTypes>

-        <string>l('text/plain')</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>regex</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>1</granularDepth>

-      <name>filteredlist</name>

-      <depth>1</depth>

-      <mimeTypes>

-        <string>l('text/plain')</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.FilterStringList.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.FilterStringList.json
deleted file mode 100644
index 0f26e3e..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.FilterStringList.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "filteredlist = new ArrayList();\nfor (Iterator i = stringlist.iterator(); i.hasNext();) {\n\tString item = (String) i.next();\n\tif (item.matches(regex)) {\n\t\tfilteredlist.add(item);\n\t}\n}\n",
-  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.FilterStringList",
-  "inputPorts" : [ {
-    "name" : "stringlist",
-    "depth" : 1,
-    "type" : "String"
-  }, {
-    "name" : "regex",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "filteredlist",
-    "depth" : 1,
-    "granularDepth" : 1
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.FlattenList b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.FlattenList
deleted file mode 100644
index 558cc99..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.FlattenList
+++ /dev/null
@@ -1,39 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>flatten(inputs, outputs, depth) {

-	for (i = inputs.iterator(); i.hasNext();) {

-	    element = i.next();

-		if (element instanceof Collection &amp;&amp; depth &gt; 0) {

-			flatten(element, outputs, depth - 1);

-		} else {

-			outputs.add(element);

-		}

-	}

-}

-

-outputlist = new ArrayList();

-

-flatten(inputlist, outputlist, 1);</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>[B</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>inputlist</name>

-      <depth>2</depth>

-      <mimeTypes>

-        <string>l(l(''))</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>1</granularDepth>

-      <name>outputlist</name>

-      <depth>1</depth>

-      <mimeTypes>

-        <string>l('')</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.FlattenList.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.FlattenList.json
deleted file mode 100644
index 4992e0b..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.FlattenList.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "flatten(inputs, outputs, depth) {\n\tfor (i = inputs.iterator(); i.hasNext();) {\n\t    element = i.next();\n\t\tif (element instanceof Collection && depth > 0) {\n\t\t\tflatten(element, outputs, depth - 1);\n\t\t} else {\n\t\t\toutputs.add(element);\n\t\t}\n\t}\n}\n\noutputlist = new ArrayList();\n\nflatten(inputlist, outputlist, 1);",
-  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.FlattenList",
-  "inputPorts" : [ {
-    "name" : "inputlist",
-    "depth" : 2,
-    "type" : "byte[]"
-  } ],
-  "outputPorts" : [ {
-    "name" : "outputlist",
-    "depth" : 1,
-    "granularDepth" : 1
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.PadNumber b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.PadNumber
deleted file mode 100644
index 3edd0cf..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.PadNumber
+++ /dev/null
@@ -1,44 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>int targetLengthInt = 7;

-if (targetlength != void) {

-	targetLengthInt = Integer.parseInt(targetlength);

-}

-int currentLength = input.length();

-while (input.length() &lt; targetLengthInt) {

-	input = "0" + input;

-}

-padded = input;</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>input</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>targetlength</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>padded</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.PadNumber.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.PadNumber.json
deleted file mode 100644
index 37828ea..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.PadNumber.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "int targetLengthInt = 7;\nif (targetlength != void) {\n\ttargetLengthInt = Integer.parseInt(targetlength);\n}\nint currentLength = input.length();\nwhile (input.length() < targetLengthInt) {\n\tinput = \"0\" + input;\n}\npadded = input;",
-  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.PadNumber",
-  "inputPorts" : [ {
-    "name" : "input",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "targetlength",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "padded",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.RegularExpressionStringList b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.RegularExpressionStringList
deleted file mode 100644
index 7a4165a..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.RegularExpressionStringList
+++ /dev/null
@@ -1,60 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>import java.util.regex.*;

-

-filteredlist = new ArrayList();

-Pattern thePat = Pattern.compile(regex);

-int theGroup = Integer.parseInt(group);

-

-for (Iterator i = stringlist.iterator(); i.hasNext();) {

-	String item = (String) i.next();

-	Matcher matcher = thePat.matcher(item);

-

-	if (matcher.find()) {

-		filteredlist.add(matcher.group(theGroup));

-	}

-}

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>stringlist</name>

-      <depth>1</depth>

-      <mimeTypes>

-        <string>l('text/plain')</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>regex</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>group</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>1</granularDepth>

-      <name>filteredlist</name>

-      <depth>1</depth>

-      <mimeTypes>

-        <string>l('text/plain')</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.RegularExpressionStringList.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.RegularExpressionStringList.json
deleted file mode 100644
index 86378fb..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.RegularExpressionStringList.json
+++ /dev/null
@@ -1,24 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "import java.util.regex.*;\n\nfilteredlist = new ArrayList();\nPattern thePat = Pattern.compile(regex);\nint theGroup = Integer.parseInt(group);\n\nfor (Iterator i = stringlist.iterator(); i.hasNext();) {\n\tString item = (String) i.next();\n\tMatcher matcher = thePat.matcher(item);\n\n\tif (matcher.find()) {\n\t\tfilteredlist.add(matcher.group(theGroup));\n\t}\n}\n",
-  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.RegularExpressionStringList",
-  "inputPorts" : [ {
-    "name" : "stringlist",
-    "depth" : 1,
-    "type" : "String"
-  }, {
-    "name" : "regex",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "group",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "filteredlist",
-    "depth" : 1,
-    "granularDepth" : 1
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.SendEmail b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.SendEmail
deleted file mode 100644
index f847773..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.SendEmail
+++ /dev/null
@@ -1,85 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>import javax.mail.Message;

-import javax.mail.Session;

-import javax.mail.Transport;

-import javax.mail.internet.MimeMessage;

-import javax.mail.internet.InternetAddress;

-

-if (subject == void) {

-	subject = "No subject";

-}

-if (body == void) {

-	throw new Exception("No body specified for message");

-}

-

-Properties mailProps = System.getProperties();

-if (smtpserver != void) {

-	mailProps.put("mail.smtp.host", smtpserver);

-}

-

-Session session = Session.getDefaultInstance(mailProps, null);

-MimeMessage message = new MimeMessage(session);

-message.setFrom(new InternetAddress(from));

-message.addRecipient(Message.RecipientType.TO, new InternetAddress(to));

-message.setSubject(subject);

-message.setText(body);

-Transport.send(message);

-</script>

-  <dependencies>

-    <string>javax.mail:mail:1.4</string>

-    <string>javax.activation:activation:1.1</string>

-  </dependencies>

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>to</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>from</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>subject</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>body</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>smtpserver</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs />

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.SendEmail.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.SendEmail.json
deleted file mode 100644
index 9a7365d..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.SendEmail.json
+++ /dev/null
@@ -1,27 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "import javax.mail.Message;\nimport javax.mail.Session;\nimport javax.mail.Transport;\nimport javax.mail.internet.MimeMessage;\nimport javax.mail.internet.InternetAddress;\n\nif (subject == void) {\n\tsubject = \"No subject\";\n}\nif (body == void) {\n\tthrow new Exception(\"No body specified for message\");\n}\n\nProperties mailProps = System.getProperties();\nif (smtpserver != void) {\n\tmailProps.put(\"mail.smtp.host\", smtpserver);\n}\n\nSession session = Session.getDefaultInstance(mailProps, null);\nMimeMessage message = new MimeMessage(session);\nmessage.setFrom(new InternetAddress(from));\nmessage.addRecipient(Message.RecipientType.TO, new InternetAddress(to));\nmessage.setSubject(subject);\nmessage.setText(body);\nTransport.send(message);\n",
-  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.SendEmail",
-  "inputPorts" : [ {
-    "name" : "to",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "from",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "subject",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "body",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "smtpserver",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.SplitByRegex b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.SplitByRegex
deleted file mode 100644
index 7c296f3..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.SplitByRegex
+++ /dev/null
@@ -1,47 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>List split = new ArrayList();

-if (!string.equals("")) {

-	String regexString = ",";

-	if (regex != void) {

-		regexString = regex;

-	}

-	String[] result = string.split(regexString);

-	for (int i = 0; i &lt; result.length; i++) {

-		split.add(result[i]);

-	}

-}

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>string</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>regex</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>1</granularDepth>

-      <name>split</name>

-      <depth>1</depth>

-      <mimeTypes>

-        <string>l('text/plain')</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.SplitByRegex.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.SplitByRegex.json
deleted file mode 100644
index afbdc78..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.SplitByRegex.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "List split = new ArrayList();\nif (!string.equals(\"\")) {\n\tString regexString = \",\";\n\tif (regex != void) {\n\t\tregexString = regex;\n\t}\n\tString[] result = string.split(regexString);\n\tfor (int i = 0; i < result.length; i++) {\n\t\tsplit.add(result[i]);\n\t}\n}\n",
-  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.SplitByRegex",
-  "inputPorts" : [ {
-    "name" : "string",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "regex",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "split",
-    "depth" : 1,
-    "granularDepth" : 1
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringConcat b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringConcat
deleted file mode 100644
index 7993975..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringConcat
+++ /dev/null
@@ -1,36 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>output = string1 + string2;</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>string1</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>string2</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>output</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringConcat.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringConcat.json
deleted file mode 100644
index 24a3fa9..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringConcat.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "output = string1 + string2;",
-  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.StringConcat",
-  "inputPorts" : [ {
-    "name" : "string1",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "string2",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "output",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringListMerge b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringListMerge
deleted file mode 100644
index cdd408d..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringListMerge
+++ /dev/null
@@ -1,49 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>String seperatorString = "\n";

-if (seperator != void) {

-	seperatorString = seperator;

-}

-StringBuffer sb = new StringBuffer();

-for (Iterator i = stringlist.iterator(); i.hasNext();) {

-	String item = (String) i.next();

-	sb.append(item);

-	if (i.hasNext()) {

-		sb.append(seperatorString);

-	}

-}

-concatenated = sb.toString();

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>stringlist</name>

-      <depth>1</depth>

-      <mimeTypes>

-        <string>l('text/plain')</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>seperator</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>concatenated</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringListMerge.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringListMerge.json
deleted file mode 100644
index a0b860f..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringListMerge.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "String seperatorString = \"\\n\";\nif (seperator != void) {\n\tseperatorString = seperator;\n}\nStringBuffer sb = new StringBuffer();\nfor (Iterator i = stringlist.iterator(); i.hasNext();) {\n\tString item = (String) i.next();\n\tsb.append(item);\n\tif (i.hasNext()) {\n\t\tsb.append(seperatorString);\n\t}\n}\nconcatenated = sb.toString();\n",
-  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.StringListMerge",
-  "inputPorts" : [ {
-    "name" : "stringlist",
-    "depth" : 1,
-    "type" : "String"
-  }, {
-    "name" : "seperator",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "concatenated",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetDifference b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetDifference
deleted file mode 100644
index c7bb289..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetDifference
+++ /dev/null
@@ -1,49 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>List difference = new ArrayList();

-for (Iterator i = list1.iterator(); i.hasNext();) {

-	Object o = i.next();

-	if (!list2.contains(o)) {

-		difference.add(o);

-	}

-}

-for (Iterator i = list2.iterator(); i.hasNext();) {

-	Object o = i.next();

-	if (!list1.contains(o)) {

-		difference.add(o);

-	}

-}

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>list1</name>

-      <depth>1</depth>

-      <mimeTypes>

-        <string>l('text/plain')</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>list2</name>

-      <depth>1</depth>

-      <mimeTypes>

-        <string>l('text/plain')</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>1</granularDepth>

-      <name>difference</name>

-      <depth>1</depth>

-      <mimeTypes>

-        <string>l('text/plain')</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetDifference.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetDifference.json
deleted file mode 100644
index c844322..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetDifference.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "List difference = new ArrayList();\nfor (Iterator i = list1.iterator(); i.hasNext();) {\n\tObject o = i.next();\n\tif (!list2.contains(o)) {\n\t\tdifference.add(o);\n\t}\n}\nfor (Iterator i = list2.iterator(); i.hasNext();) {\n\tObject o = i.next();\n\tif (!list1.contains(o)) {\n\t\tdifference.add(o);\n\t}\n}\n",
-  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.StringSetDifference",
-  "inputPorts" : [ {
-    "name" : "list1",
-    "depth" : 1,
-    "type" : "String"
-  }, {
-    "name" : "list2",
-    "depth" : 1,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "difference",
-    "depth" : 1,
-    "granularDepth" : 1
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetIntersection b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetIntersection
deleted file mode 100644
index a4c2f5a..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetIntersection
+++ /dev/null
@@ -1,43 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>List intersection = new ArrayList();

-for (Iterator i = list1.iterator(); i.hasNext();) {

-	Object o = i.next();

-	if (list2.contains(o)) {

-		intersection.add(o);

-	}

-}

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>list1</name>

-      <depth>1</depth>

-      <mimeTypes>

-        <string>l('text/plain')</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>list2</name>

-      <depth>1</depth>

-      <mimeTypes>

-        <string>l('text/plain')</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>1</granularDepth>

-      <name>intersection</name>

-      <depth>1</depth>

-      <mimeTypes>

-        <string>l('text/plain')</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetIntersection.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetIntersection.json
deleted file mode 100644
index 0404922..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetIntersection.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "List intersection = new ArrayList();\nfor (Iterator i = list1.iterator(); i.hasNext();) {\n\tObject o = i.next();\n\tif (list2.contains(o)) {\n\t\tintersection.add(o);\n\t}\n}\n",
-  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.StringSetIntersection",
-  "inputPorts" : [ {
-    "name" : "list1",
-    "depth" : 1,
-    "type" : "String"
-  }, {
-    "name" : "list2",
-    "depth" : 1,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "intersection",
-    "depth" : 1,
-    "granularDepth" : 1
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetUnion b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetUnion
deleted file mode 100644
index 1ef0958..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetUnion
+++ /dev/null
@@ -1,43 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow">

-

-<class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>Set results = new HashSet();

-results.addAll(list1);

-results.addAll(list2);

-List union = new ArrayList();

-union.addAll(results);

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>list1</name>

-      <depth>1</depth>

-      <mimeTypes>

-        <string>l('text/plain')</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>list2</name>

-      <depth>1</depth>

-      <mimeTypes>

-        <string>l('text/plain')</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>1</granularDepth>

-      <name>union</name>

-      <depth>1</depth>

-      <mimeTypes>

-        <string>l('text/plain')</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetUnion.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetUnion.json
deleted file mode 100644
index 25960be..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringSetUnion.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "Set results = new HashSet();\nresults.addAll(list1);\nresults.addAll(list2);\nList union = new ArrayList();\nunion.addAll(results);\n",
-  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.StringSetUnion",
-  "inputPorts" : [ {
-    "name" : "list1",
-    "depth" : 1,
-    "type" : "String"
-  }, {
-    "name" : "list2",
-    "depth" : 1,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "union",
-    "depth" : 1,
-    "granularDepth" : 1
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringStripDuplicates b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringStripDuplicates
deleted file mode 100644
index 310dccc..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringStripDuplicates
+++ /dev/null
@@ -1,33 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>List strippedlist = new ArrayList();

-for (Iterator i = stringlist.iterator(); i.hasNext();) {

-	String item = (String) i.next();

-	if (strippedlist.contains(item) == false) {

-		strippedlist.add(item);

-	}

-}

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>stringlist</name>

-      <depth>1</depth>

-      <mimeTypes>

-        <string>l('text/plain')</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>1</granularDepth>

-      <name>strippedlist</name>

-      <depth>1</depth>

-      <mimeTypes>

-        <string>l('text/plain')</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringStripDuplicates.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringStripDuplicates.json
deleted file mode 100644
index c5fecee..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.StringStripDuplicates.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "List strippedlist = new ArrayList();\nfor (Iterator i = stringlist.iterator(); i.hasNext();) {\n\tString item = (String) i.next();\n\tif (strippedlist.contains(item) == false) {\n\t\tstrippedlist.add(item);\n\t}\n}\n",
-  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.StringStripDuplicates",
-  "inputPorts" : [ {
-    "name" : "stringlist",
-    "depth" : 1,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "strippedlist",
-    "depth" : 1,
-    "granularDepth" : 1
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.TestAlwaysFailingProcessor b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.TestAlwaysFailingProcessor
deleted file mode 100644
index 790073a..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.TestAlwaysFailingProcessor
+++ /dev/null
@@ -1,36 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>throw new Exception("This script fails");</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>foo</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>bar</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>urgle</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.TestAlwaysFailingProcessor.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.TestAlwaysFailingProcessor.json
deleted file mode 100644
index 4a5b7d8..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.TestAlwaysFailingProcessor.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "throw new Exception(\"This script fails\");",
-  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.TestAlwaysFailingProcessor",
-  "inputPorts" : [ {
-    "name" : "foo",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "bar",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "urgle",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.TestSometimesFails b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.TestSometimesFails
deleted file mode 100644
index 90e8ba8..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.TestSometimesFails
+++ /dev/null
@@ -1,34 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>import java.util.Random;

-

-Random r = new Random();

-

-if ((r.nextInt() % 4) == 0) {

-	throw new RuntimeException("Fails every four runs!");

-}

-

-out = in;</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>in</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>out</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.TestSometimesFails.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.TestSometimesFails.json
deleted file mode 100644
index 9ecf11d..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.TestSometimesFails.json
+++ /dev/null
@@ -1,16 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "import java.util.Random;\n\nRandom r = new Random();\n\nif ((r.nextInt() % 4) == 0) {\n\tthrow new RuntimeException(\"Fails every four runs!\");\n}\n\nout = in;",
-  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.TestSometimesFails",
-  "inputPorts" : [ {
-    "name" : "in",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "out",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.WebImageFetcher b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.WebImageFetcher
deleted file mode 100644
index db3a73a..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.WebImageFetcher
+++ /dev/null
@@ -1,64 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>if ((url == void) || (url == null)) {

-	throw new RuntimeException("The url must be specified");

-}

-

-URL inputURL = null;

-if (base != void) {

-	inputURL = new URL(new URL(base), url);

-} else {

-	inputURL = new URL(url);

-}

-

-int bytesRead = 0;

-int totalBytesRead = 0;

-InputStream is = inputURL.openStream();

-ByteArrayOutputStream os = new ByteArrayOutputStream();

-byte[] buffer = new byte[2048];

-while (true) {

-	bytesRead = is.read(buffer);

-	if (bytesRead == -1) {

-		break;	

-	}

-

-	os.write(buffer, 0, bytesRead);

-}

-

-image = os.toByteArray();

-is.close();

-os.close();

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>url</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/x-taverna-web-url'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>base</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/x-taverna-web-url'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>image</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'image/*'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.WebImageFetcher.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.WebImageFetcher.json
deleted file mode 100644
index a65b448..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.WebImageFetcher.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "if ((url == void) || (url == null)) {\n\tthrow new RuntimeException(\"The url must be specified\");\n}\n\nURL inputURL = null;\nif (base != void) {\n\tinputURL = new URL(new URL(base), url);\n} else {\n\tinputURL = new URL(url);\n}\n\nint bytesRead = 0;\nint totalBytesRead = 0;\nInputStream is = inputURL.openStream();\nByteArrayOutputStream os = new ByteArrayOutputStream();\nbyte[] buffer = new byte[2048];\nwhile (true) {\n\tbytesRead = is.read(buffer);\n\tif (bytesRead == -1) {\n\t\tbreak;\t\n\t}\n\n\tos.write(buffer, 0, bytesRead);\n}\n\nimage = os.toByteArray();\nis.close();\nos.close();\n",
-  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.WebImageFetcher",
-  "inputPorts" : [ {
-    "name" : "url",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "base",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "image",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.WebPageFetcher b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.WebPageFetcher
deleted file mode 100644
index dcd76a6..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.WebPageFetcher
+++ /dev/null
@@ -1,68 +0,0 @@
-<activity xmlns="http://taverna.sf.net/2008/xml/t2flow"><class>net.sf.taverna.t2.activities.localworker.LocalworkerActivity</class><inputMap /><outputMap /><configBean encoding="xstream"><net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean xmlns="">

-  <script>if ((url == void) || (url == null)) {

-	throw new RuntimeException("The url must be specified");

-}

-

-URL inputURL = null;

-if (base != void) {

-  inputURL = new URL(new URL(base), url);

-}

-else {

-  inputURL = new URL(url);

-}

-URLConnection con = inputURL.openConnection();

-InputStream in = con.getInputStream();

-

-StringBuffer result = new StringBuffer();

-BufferedReader reader;

-

-String encoding = con.getContentEncoding();

-if (encoding == null) {

-  reader = new BufferedReader(new InputStreamReader(in));

-} else {

-  reader = new BufferedReader(new InputStreamReader(in, encoding));

-}

-String line = null;

-String NEWLINE = System.getProperty("line.separator");

-while ((line = reader.readLine()) != null) {

-	result.append(line);

-	result.append(NEWLINE);

-}

-

-reader.close();

-contents = result.toString();

-</script>

-  <dependencies />

-  <inputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>url</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/x-taverna-web-url'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-      <handledReferenceSchemes />

-      <translatedElementType>java.lang.String</translatedElementType>

-      <allowsLiteralValues>true</allowsLiteralValues>

-      <name>base</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/x-taverna-web-url'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityInputPortDefinitionBean>

-  </inputs>

-  <outputs>

-    <net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-      <granularDepth>0</granularDepth>

-      <name>contents</name>

-      <depth>0</depth>

-      <mimeTypes>

-        <string>'text/plain,text/html'</string>

-      </mimeTypes>

-    </net.sf.taverna.t2.workflowmodel.processor.activity.config.ActivityOutputPortDefinitionBean>

-  </outputs>

-</net.sf.taverna.t2.activities.localworker.LocalworkerActivityConfigurationBean></configBean></activity>
\ No newline at end of file
diff --git a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.WebPageFetcher.json b/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.WebPageFetcher.json
deleted file mode 100644
index ad7a5b6..0000000
--- a/taverna-localworker-activity-ui/src/main/resources/org.embl.ebi.escience.scuflworkers.java.WebPageFetcher.json
+++ /dev/null
@@ -1,20 +0,0 @@
-{
-  "classLoaderSharing" : "workflow",
-  "script" : "if ((url == void) || (url == null)) {\n\tthrow new RuntimeException(\"The url must be specified\");\n}\n\nURL inputURL = null;\nif (base != void) {\n  inputURL = new URL(new URL(base), url);\n}\nelse {\n  inputURL = new URL(url);\n}\nURLConnection con = inputURL.openConnection();\nInputStream in = con.getInputStream();\n\nStringBuffer result = new StringBuffer();\nBufferedReader reader;\n\nString encoding = con.getContentEncoding();\nif (encoding == null) {\n  reader = new BufferedReader(new InputStreamReader(in));\n} else {\n  reader = new BufferedReader(new InputStreamReader(in, encoding));\n}\nString line = null;\nString NEWLINE = System.getProperty(\"line.separator\");\nwhile ((line = reader.readLine()) != null) {\n\tresult.append(line);\n\tresult.append(NEWLINE);\n}\n\nreader.close();\ncontents = result.toString();\n",
-  "localworkerName" : "org.embl.ebi.escience.scuflworkers.java.WebPageFetcher",
-  "inputPorts" : [ {
-    "name" : "url",
-    "depth" : 0,
-    "type" : "String"
-  }, {
-    "name" : "base",
-    "depth" : 0,
-    "type" : "String"
-  } ],
-  "outputPorts" : [ {
-    "name" : "contents",
-    "depth" : 0,
-    "granularDepth" : 0
-  } ],
-  "isAltered" : false
-}
\ No newline at end of file
diff --git a/taverna-rest-activity-ui/pom.xml b/taverna-rest-activity-ui/pom.xml
deleted file mode 100644
index 99ac649..0000000
--- a/taverna-rest-activity-ui/pom.xml
+++ /dev/null
@@ -1,74 +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</groupId>
-		<artifactId>taverna-parent</artifactId>
-		<version>3.0.1-SNAPSHOT</version>
-	</parent>
-	<groupId>net.sf.taverna.t2.ui-activities</groupId>
-	<artifactId>rest-activity-ui</artifactId>
-        <version>2.0-SNAPSHOT</version>
-	<packaging>bundle</packaging>
-	<name>REST Activity - UI bindings</name>
-
-	<dependencies>
-		<dependency>
-			<groupId>net.sf.taverna.t2.activities</groupId>
-			<artifactId>rest-activity</artifactId>
-			<version>${t2.activities.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>net.sf.taverna.t2.ui-api</groupId>
-			<artifactId>activity-palette-api</artifactId>
-			<version>${t2.ui.api.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>net.sf.taverna.t2.ui-api</groupId>
-			<artifactId>menu-api</artifactId>
-			<version>${t2.ui.api.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>net.sf.taverna.t2.ui-api</groupId>
-			<artifactId>contextual-views-api</artifactId>
-			<version>${t2.ui.api.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>net.sf.taverna.t2.ui-api</groupId>
-			<artifactId>workbench-api</artifactId>
-			<version>${t2.ui.api.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>net.sf.taverna.t2.ui-api</groupId>
-			<artifactId>report-api</artifactId>
-			<version>${t2.ui.api.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>net.sf.taverna.t2.ui-components</groupId>
-			<artifactId>workflow-view</artifactId>
-			<version>${t2.ui.components.version}</version>
-		</dependency>
-	</dependencies>
-	<repositories>
-		<repository>
-			<releases />
-			<snapshots>
-				<enabled>false</enabled>
-			</snapshots>
-			<id>mygrid-repository</id>
-			<name>myGrid Repository</name>
-			<url>http://www.mygrid.org.uk/maven/repository
-			</url>
-		</repository>
-		<repository>
-			<releases>
-				<enabled>false</enabled>
-			</releases>
-			<snapshots />
-			<id>mygrid-snapshot-repository</id>
-			<name>myGrid Snapshot Repository</name>
-			<url>http://www.mygrid.org.uk/maven/snapshot-repository</url>
-		</repository>
-	</repositories>
-</project>
diff --git a/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/config/HTTPHeadersTableModel.java b/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/config/HTTPHeadersTableModel.java
deleted file mode 100644
index 30507c9..0000000
--- a/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/config/HTTPHeadersTableModel.java
+++ /dev/null
@@ -1,119 +0,0 @@
-package net.sf.taverna.t2.activities.rest.ui.config;
-
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.Collections;
-
-import javax.swing.table.AbstractTableModel;
-
-@SuppressWarnings("serial")
-public class HTTPHeadersTableModel extends AbstractTableModel {
-
-    protected String[] columnNames;
-    protected ArrayList<ArrayList<String>> data;
-
-    public HTTPHeadersTableModel() {
-    	columnNames = new String[] {"HTTP Header Name", "HTTP Header Value"};
-    	data = new ArrayList<ArrayList<String>>();
-    }
-
-    public String getColumnName(int column) {
-        return columnNames[column];
-    }
-
-    public boolean isCellEditable(int row, int column) {
-        return true;
-    }
-
-    public int getColumnCount()
-    {
-        return columnNames.length;
-    }
-
-    public int getRowCount()
-    {
-        return data.size();
-    }
-
-    public Object getValueAt(int row, int column)
-    {
-        return data.get(row).get(column);
-    }
-
-    public void setValueAt(Object value, int row, int column) {
-        if ((row < 0) || (column < 0)) {
-          throw new IllegalArgumentException("Invalid row/column setting");
-        }
-        data.get(row).set(column, (String)value);
-      }
-    
-    /**
-     * Get the class at of the cells at the given column position.
-     */
-    public Class<? extends Object> getColumnClass(int iCol)
-    {
-        return getValueAt(0, iCol).getClass();
-    }
-
-    
-	public void addEmptyRow() {
-        data.add(new ArrayList<String>(Arrays.asList("", ""))); // add empty row
-        fireTableRowsInserted(
-           data.size() - 1,
-           data.size() - 1);
-    }
-	
-	public void addRow(ArrayList<String> headerValuePair) {
-        data.add(headerValuePair);
-        fireTableRowsInserted(
-           data.size() - 1,
-           data.size() - 1);
-    }
-	
-	public void removeRow(int row)
-	{
-		if (row >=0 && row < data.size()){
-			data.remove(row);
-			fireTableRowsDeleted(row, row);
-		}
-	}
-
-	public ArrayList<ArrayList<String>> getHTTPHeaderData(){
-		// Return a deep copy of the 2-dimensional array
-		return deepCopy(data);
-	}
-	
-	public void setHTTPHeaderData(ArrayList<ArrayList<String>> data){
-		this.data = deepCopy(data);
-		fireTableChanged(null);
-	}
-	
-	public ArrayList<String> getHTTPHeaderNames(){
-		ArrayList<String> headerNames = new ArrayList<String>();
-		for (ArrayList<String> headerNameValuePair : data){
-			headerNames.add(headerNameValuePair.get(0));
-		}
-		return headerNames;
-	}
-	
-	public ArrayList<String> getHTTPHeaderValues(){
-		ArrayList<String> headerValues = new ArrayList<String>();
-		for (ArrayList<String> headerNameValuePair : data){
-			headerValues.add(headerNameValuePair.get(1));
-		}
-		return headerValues;
-	}
-	
-	public static ArrayList<ArrayList<String>> deepCopy(ArrayList<ArrayList<String>> src)
-	{
-	    ArrayList<ArrayList<String>> dest = new ArrayList<ArrayList<String>>();
-
-	    for (int i = 0; i< src.size(); i++){ 	
-	    	dest.add(new ArrayList<String>(Arrays.asList(new String[src.get(i).size()])));  
-	    	Collections.copy(dest.get(i), src.get(i));
-	    }
-	    return dest;
-	}
-
-}
-
diff --git a/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/config/RESTActivityConfigurationPanel.java b/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/config/RESTActivityConfigurationPanel.java
deleted file mode 100644
index d6b46e1..0000000
--- a/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/config/RESTActivityConfigurationPanel.java
+++ /dev/null
@@ -1,670 +0,0 @@
-package net.sf.taverna.t2.activities.rest.ui.config;

-

-import java.awt.BorderLayout;

-import java.awt.Color;

-import java.awt.Dimension;

-import java.awt.FlowLayout;

-import java.awt.GridBagConstraints;

-import java.awt.GridBagLayout;

-import java.awt.Insets;

-import java.awt.event.ActionEvent;

-import java.awt.event.ActionListener;

-import java.awt.event.FocusEvent;

-import java.awt.event.FocusListener;

-import java.io.IOException;

-import java.io.InputStream;

-import java.util.ArrayList;

-import java.util.List;

-import java.util.Scanner;

-

-import javax.swing.Icon;

-import javax.swing.ImageIcon;

-import javax.swing.JButton;

-import javax.swing.JCheckBox;

-import javax.swing.JComboBox;

-import javax.swing.JLabel;

-import javax.swing.JOptionPane;

-import javax.swing.JPanel;

-import javax.swing.JScrollPane;

-import javax.swing.JTable;

-import javax.swing.JTextField;

-import javax.swing.ListSelectionModel;

-

-import net.sf.taverna.t2.activities.rest.RESTActivity;

-import net.sf.taverna.t2.activities.rest.RESTActivity.DATA_FORMAT;

-import net.sf.taverna.t2.activities.rest.RESTActivity.HTTP_METHOD;

-import net.sf.taverna.t2.activities.rest.RESTActivityConfigurationBean;

-import net.sf.taverna.t2.activities.rest.URISignatureHandler;

-import net.sf.taverna.t2.activities.rest.URISignatureHandler.URISignatureParsingException;

-import net.sf.taverna.t2.workbench.MainWindow;

-import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.MultiPageActivityConfigurationPanel;

-import uk.org.taverna.commons.services.ServiceRegistry;

-import uk.org.taverna.scufl2.api.activity.Activity;

-

-import com.fasterxml.jackson.databind.node.ArrayNode;

-import com.fasterxml.jackson.databind.node.ObjectNode;

-

-@SuppressWarnings("serial")

-public class RESTActivityConfigurationPanel extends MultiPageActivityConfigurationPanel {

-	private static final Icon infoIcon = new ImageIcon(

-			RESTActivityConfigurationPanel.class.getResource("information.png"));

-

-	// GENERAL tab

-	private JComboBox<HTTP_METHOD> cbHTTPMethod; // HTTP method of this REST activity

-	private JTextField tfURLSignature; // URL signature that determines its

-										// input ports

-	private JComboBox<String> cbAccepts; // for Accepts header

-	private JLabel jlContentTypeExplanation;

-	private JLabel jlContentTypeExplanationPlaceholder;

-	private JLabel jlContentType;

-	private JLabel jlContentTypeLabelPlaceholder; // this placeholder label will

-													// take up space of the

-													// ContentType combo-box

-													// when the latter is not

-													// shown

-	private JLabel jlContentTypeFieldPlaceholder;

-	private JComboBox<String> cbContentType; // for MIME type of data sent to the server

-										// by POST / PUT methods

-	private JLabel jlSendDataAs;

-	private JComboBox<DATA_FORMAT> cbSendDataAs;

-	private JLabel jlSendDataAsLabelPlaceholder;

-	private JLabel jlSendDataAsFieldPlaceholder;

-

-	// ADVANCED tab

-	private JCheckBox cbSendHTTPExpectHeader;

-	private JCheckBox cbShowRedirectionOutputPort;

-	private JCheckBox cbShowActualUrlPort;

-	private JCheckBox cbShowResponseHeadersPort;

-	private JCheckBox cbEscapeParameters;

-	private JButton addHeaderButton;

-	private JButton removeHeaderButton;

-	private JTable httpHeadersTable;

-	private HTTPHeadersTableModel httpHeadersTableModel;

-

-	private String[] mediaTypes;

-

-	private final ServiceRegistry serviceRegistry;

-

-	public RESTActivityConfigurationPanel(Activity activity, ServiceRegistry serviceRegistry) {

-		super(activity);

-		this.serviceRegistry = serviceRegistry;

-		initialise();

-	}

-

-	@Override

-	protected void initialise() {

-		super.initialise();

-		removeAllPages();

-		addPage("General", createGeneralTab());

-		addPage("Advanced", createAdvancedTab());

-		refreshConfiguration();

-	}

-

-	@Override

-	public void noteConfiguration() {

-		ObjectNode requestNode = json.objectNode();

-

-		String methodName = ((HTTP_METHOD) cbHTTPMethod.getSelectedItem()).name();

-		requestNode.put("httpMethod", methodName);

-		requestNode.put("absoluteURITemplate", tfURLSignature.getText().trim());

-

-		ArrayNode headersNode = requestNode.arrayNode();

-		headersNode.addObject().put("header", "Accept").put("value", (String) cbAccepts.getSelectedItem());

-		headersNode.addObject().put("header", "Content-Type").put("value", (String) cbContentType.getSelectedItem());

-		if (cbSendHTTPExpectHeader.isSelected()) {

-			headersNode.addObject().put("header", "Expect").put("value", "100-continue");

-		}

-		ArrayList<String> headerNames = httpHeadersTableModel.getHTTPHeaderNames();

-		ArrayList<String> headerValues = httpHeadersTableModel.getHTTPHeaderValues();

-		for (int i = 0; i < headerNames.size(); i++) {

-			headersNode.addObject().put("header", headerNames.get(i)).put("value", headerValues.get(i));

-		}

-

-		requestNode.set("headers", headersNode);

-		json.set("request", requestNode);

-

-		json.put("outgoingDataFormat", ((DATA_FORMAT) cbSendDataAs.getSelectedItem()).name());

-		json.put("showRedirectionOutputPort", cbShowRedirectionOutputPort

-				.isSelected());

-		json.put("showActualURLPort", cbShowActualUrlPort.isSelected());

-		json.put("showResponseHeadersPort", cbShowResponseHeadersPort.isSelected());

-		json.put("escapeParameters", cbEscapeParameters.isSelected());

-

-		configureInputPorts(serviceRegistry);

-		configureOutputPorts(serviceRegistry);

-	}

-

-	/**

-	 * Check that user values in the UI are valid.

-	 */

-	@Override

-	public boolean checkValues() {

-		// HTTP method is a fixed selection combo-box - no validation required

-

-		// URL signature must be present and be valid

-		String candidateURLSignature = tfURLSignature.getText().trim();

-		if (candidateURLSignature == null

-				|| candidateURLSignature.length() == 0) {

-			JOptionPane.showMessageDialog(MainWindow.getMainWindow(),

-					"URL signature must not be empty",

-					"REST Activity Configuration - Warning",

-					JOptionPane.WARNING_MESSAGE);

-			return (false);

-		} else {

-			try {

-				// Test if any exceptions will be thrown - if not, proceed to

-				// other validations

-				URISignatureHandler.validate(candidateURLSignature);

-			} catch (URISignatureParsingException e) {

-				JOptionPane.showMessageDialog(MainWindow.getMainWindow(), e

-						.getMessage(), "REST Activity Configuration - Warning",

-						JOptionPane.WARNING_MESSAGE);

-				return (false);

-			}

-

-			// Test if the URL string contains "unsafe" characters, i.e. characters

-			// that need URL-encoding.

-			// From RFC 1738: "...Only alphanumerics [0-9a-zA-Z], the special

-			// characters "$-_.+!*'()," (not including the quotes) and reserved

-			// characters used for their reserved purposes may be

-			// used unencoded within a URL."

-			// Reserved characters are: ";/?:@&=" ..." (excluding quotes) and "%" used

-			// for escaping.

-			// We do not warn the user if they have not properly enclosed parameter

-			// names in curly braces as this check is already being done elsewhere in the code.

-			// We do not check the characters in parameter names either.

-			try {

-				// Test if any exceptions will be thrown - if not, proceed to

-				// other validations

-				URISignatureHandler.checkForUnsafeCharacters(candidateURLSignature);

-			} catch (URISignatureParsingException e) {

-				JOptionPane.showMessageDialog(MainWindow.getMainWindow(), e

-						.getMessage(), "REST Activity Configuration - Warning",

-						JOptionPane.WARNING_MESSAGE);

-				return (false);

-			}

-

-			// Other HTTP headers configured must not have empty names

-			ArrayList<String> otherHTTPHeaderNames = httpHeadersTableModel.getHTTPHeaderNames();

-			for (String headerName : otherHTTPHeaderNames){

-				if (headerName.equals("")){

-					JOptionPane.showMessageDialog(MainWindow.getMainWindow(), "One of the HTTP header names is empty", "REST Activity Configuration - Warning",

-							JOptionPane.WARNING_MESSAGE);

-					return false;

-				}

-			}

-		}

-

-		// All valid, return true

-		return true;

-	}

-

-	/**

-	 * Update GUI from a changed configuration bean (perhaps by undo / redo).

-	 */

-	@Override

-	public void refreshConfiguration() {

-		RESTActivityConfigurationBean configBean = new RESTActivityConfigurationBean(json);

-

-		cbHTTPMethod.setSelectedItem(configBean.getHttpMethod());

-		tfURLSignature.setText(configBean.getUrlSignature());

-		tfURLSignature.setCaretPosition(0);

-		cbAccepts.setSelectedItem(configBean.getAcceptsHeaderValue());

-		cbContentType.setSelectedItem(configBean.getContentTypeForUpdates());

-		cbSendDataAs.setSelectedItem(configBean.getOutgoingDataFormat());

-		cbSendHTTPExpectHeader.setSelected(configBean

-				.getSendHTTPExpectRequestHeader());

-		cbShowRedirectionOutputPort.setSelected(configBean

-				.getShowRedirectionOutputPort());

-		cbShowActualUrlPort.setSelected(configBean.getShowActualUrlPort());

-		cbShowResponseHeadersPort.setSelected(configBean.getShowResponseHeadersPort());

-		cbEscapeParameters.setSelected(configBean.getEscapeParameters());

-		httpHeadersTableModel.setHTTPHeaderData(configBean.getOtherHTTPHeaders());

-	}

-

-	private JPanel createGeneralTab() {

-		JPanel jpGeneral = new JPanel(new GridBagLayout());

-		GridBagConstraints c = new GridBagConstraints();

-		// All components to be anchored WEST

-		c.anchor = GridBagConstraints.WEST;

-

-		c.gridx = 0;

-		c.gridy = 0;

-		c.gridwidth = 1;

-		c.insets = new Insets(7, 7, 3, 3);

-		c.weightx = 0.0;

-		c.fill = GridBagConstraints.NONE;

-		JLabel labelMethod = new JLabel("HTTP Method:", infoIcon, JLabel.LEFT);

-		labelMethod

-				.setToolTipText("<html>HTTP method determines how a request to the remote server will be made.<br><br>"

-						+ "Supported HTTP methods are normally used for different purposes:<br>"

-						+ "<b>GET</b> - to fetch data;<br>"

-						+ "<b>POST</b> - to create new resources;<br>"

-						+ "<b>PUT</b> - to update existing resources;<br>"

-						+ "<b>DELETE</b> - to remove existing resources.<br><br>"

-						+ "Documentation of the server that is about to be used may suggest the<br>"

-						+ "HTTP method that should be used.</html>");

-		jpGeneral.add(labelMethod, c);

-

-		// the HTTP method combo-box will always contain the same values - it is

-		// the selected

-		// method which is important; therefore, can prepopulate as the set of

-		// values is known

-		c.gridx++;

-		c.insets = new Insets(7, 3, 3, 7);

-		c.fill = GridBagConstraints.HORIZONTAL;

-		c.weightx = 1.0;

-		cbHTTPMethod = new JComboBox<>(HTTP_METHOD.values());

-		cbHTTPMethod.addActionListener(new ActionListener() {

-			public void actionPerformed(ActionEvent e) {

-				boolean contentTypeSelEnabled = RESTActivity

-						.hasMessageBodyInputPort((HTTP_METHOD) cbHTTPMethod

-								.getSelectedItem());

-

-				jlContentTypeExplanation.setVisible(contentTypeSelEnabled);

-				jlContentType.setVisible(contentTypeSelEnabled);

-				cbContentType.setVisible(contentTypeSelEnabled);

-				jlSendDataAs.setVisible(contentTypeSelEnabled);

-				cbSendDataAs.setVisible(contentTypeSelEnabled);

-

-				jlContentTypeExplanationPlaceholder

-						.setVisible(!contentTypeSelEnabled);

-				jlContentTypeLabelPlaceholder

-						.setVisible(!contentTypeSelEnabled);

-				jlContentTypeFieldPlaceholder

-						.setVisible(!contentTypeSelEnabled);

-				jlSendDataAsLabelPlaceholder.setVisible(!contentTypeSelEnabled);

-				jlSendDataAsFieldPlaceholder.setVisible(!contentTypeSelEnabled);

-			}

-		});

-		jpGeneral.add(cbHTTPMethod, c);

-

-		c.gridx = 0;

-		c.gridy++;

-		c.insets = new Insets(3, 7, 3, 3);

-		c.fill = GridBagConstraints.NONE;

-		c.weightx = 0.0;

-		JLabel labelString = new JLabel("URL Template:", infoIcon, JLabel.LEFT);

-		labelString

-				.setToolTipText("<html>URL template enables to define a URL with <b>configurable<br>"

-						+ "parameters</b> that will be used to access a remote server.<br><br>"

-						+ "The template may contain zero or more <b>parameters</b> - each<br>"

-						+ "enclosed within curly braces <b>\"{\"</b> and <b>\"}\"</b>.<br>"

-						+ "Taverna will automatically create an individual input port for<br>"

-						+ "this activity for each parameter.<br><br>"

-						+ "Values extracted from these input ports during the workflow<br>"

-						+ "execution these will be used to replace the parameters to<br>"

-						+ "produce complete URLs.<br><br>"

-						+ "For example, if the URL template is configured as<br>"

-						+ "\"<i>http://www.myexperiment.org/user.xml?id={userID}</i>\", a<br>"

-						+ "single input port with the name \"<i>userID</i>\" will be created.</html>");

-		labelString.setLabelFor(tfURLSignature);

-		jpGeneral.add(labelString, c);

-

-		c.gridx++;

-		c.insets = new Insets(3, 3, 3, 7);

-		c.fill = GridBagConstraints.HORIZONTAL;

-		c.weightx = 1.0;

-		tfURLSignature = new JTextField(40);

-		tfURLSignature.addFocusListener(new FocusListener() {

-			public void focusGained(FocusEvent e) {

-				tfURLSignature.selectAll();

-			}

-

-			public void focusLost(FocusEvent e) { /* do nothing */

-			}

-		});

-		jpGeneral.add(tfURLSignature, c);

-

-		c.gridx = 0;

-		c.gridwidth = 2;

-		c.gridy++;

-		c.weightx = 0.0;

-		c.fill = GridBagConstraints.NONE;

-		c.insets = new Insets(18, 7, 3, 7);

-		JLabel jlAcceptsExplanation = new JLabel(

-				"Preferred MIME type for data to be fetched from the remote server --");

-		jpGeneral.add(jlAcceptsExplanation, c);

-		c.gridwidth = 1;

-

-		c.gridx = 0;

-		c.gridy++;

-		c.insets = new Insets(3, 7, 3, 3);

-		c.weightx = 0.0;

-		c.fill = GridBagConstraints.NONE;

-		JLabel jlAccepts = new JLabel("'Accept' header:", infoIcon, JLabel.LEFT);

-		jlAccepts

-				.setToolTipText("<html>Select a MIME type from the drop-down menu or type your own.<br>Select blank if you do not want this header to be set.</br>");

-		jlAccepts.setLabelFor(cbAccepts);

-		jpGeneral.add(jlAccepts, c);

-

-		c.gridx++;

-		c.insets = new Insets(3, 3, 3, 7);

-		c.weightx = 1.0;

-		c.fill = GridBagConstraints.HORIZONTAL;

-		cbAccepts = new JComboBox<>(getMediaTypes());

-		cbAccepts.setEditable(true);

-		cbAccepts.getEditor().getEditorComponent().addFocusListener(

-				new FocusListener() {

-					public void focusGained(FocusEvent e) {

-						cbAccepts.getEditor().selectAll();

-					}

-

-					public void focusLost(FocusEvent e) { /* do nothing */

-					}

-				});

-		jpGeneral.add(cbAccepts, c);

-

-		c.gridx = 0;

-		c.gridwidth = 2;

-		c.gridy++;

-		c.insets = new Insets(18, 7, 3, 7);

-		c.weightx = 0.0;

-		c.fill = GridBagConstraints.NONE;

-		jlContentTypeExplanation = new JLabel(

-				"MIME type of data that will be sent to the remote server --");

-		jpGeneral.add(jlContentTypeExplanation, c);

-		c.gridwidth = 1;

-

-		c.gridx = 0;

-		c.gridy++;

-		c.insets = new Insets(3, 7, 3, 3);

-		c.weightx = 0.0;

-		c.fill = GridBagConstraints.NONE;

-		jlContentType = new JLabel("'Content-Type' header:", infoIcon,

-				JLabel.LEFT);

-		jlContentType

-				.setToolTipText("<html>Select a MIME type from the drop-down menu or type your own.<br>Select blank if you do not want this header to be set.</html>");

-		jlContentType.setLabelFor(cbContentType);

-		jpGeneral.add(jlContentType, c);

-

-		c.gridx++;

-		c.insets = new Insets(3, 3, 3, 7);

-		c.weightx = 1.0;

-		c.fill = GridBagConstraints.HORIZONTAL;

-		cbContentType = new JComboBox<>(getMediaTypes());

-		cbContentType.setEditable(true);

-		cbContentType.getEditor().getEditorComponent().addFocusListener(

-				new FocusListener() {

-					public void focusGained(FocusEvent e) {

-						cbContentType.getEditor().selectAll();

-					}

-

-					public void focusLost(FocusEvent e) { /* do nothing */

-					}

-				});

-		cbContentType.addActionListener(new ActionListener() {

-			public void actionPerformed(ActionEvent e) {

-				// change selection in the "Send data as" combo-box, based on

-				// the selection of Content-Type

-				String selectedContentType = (String) cbContentType

-						.getSelectedItem();

-				if (selectedContentType.startsWith("text")) {

-					cbSendDataAs.setSelectedItem(DATA_FORMAT.String);

-				} else {

-					cbSendDataAs.setSelectedItem(DATA_FORMAT.Binary);

-				}

-			}

-		});

-		jpGeneral.add(cbContentType, c);

-

-		c.gridx = 0;

-		c.gridwidth = 2;

-		c.gridy++;

-		c.insets = new Insets(18, 7, 3, 7);

-		c.weightx = 0.0;

-		c.fill = GridBagConstraints.NONE;

-		jlContentTypeExplanationPlaceholder = new JLabel();

-		jlContentTypeExplanationPlaceholder

-				.setPreferredSize(jlContentTypeExplanation.getPreferredSize());

-		jpGeneral.add(jlContentTypeExplanationPlaceholder, c);

-		c.gridwidth = 1;

-

-		c.gridx = 0;

-		c.gridy++;

-		c.insets = new Insets(3, 7, 3, 3);

-		c.weightx = 0.0;

-		c.fill = GridBagConstraints.NONE;

-		jlContentTypeLabelPlaceholder = new JLabel();

-		jlContentTypeLabelPlaceholder.setPreferredSize(jlContentType

-				.getPreferredSize());

-		jpGeneral.add(jlContentTypeLabelPlaceholder, c);

-

-		c.gridx++;

-		c.insets = new Insets(3, 3, 3, 7);

-		c.weightx = 1.0;

-		c.fill = GridBagConstraints.HORIZONTAL;

-		jlContentTypeFieldPlaceholder = new JLabel();

-		jlContentTypeFieldPlaceholder.setPreferredSize(cbContentType

-				.getPreferredSize());

-		jpGeneral.add(jlContentTypeFieldPlaceholder, c);

-

-		c.gridx = 0;

-		c.gridy++;

-		c.weightx = 0.0;

-		c.fill = GridBagConstraints.NONE;

-		c.insets = new Insets(3, 7, 8, 3);

-		jlSendDataAs = new JLabel("Send data as:", infoIcon, JLabel.LEFT);

-		jlSendDataAs

-				.setToolTipText("Select the format for the data to be sent to the remote server");

-		jlSendDataAs.setLabelFor(cbSendDataAs);

-		jpGeneral.add(jlSendDataAs, c);

-

-		c.gridx++;

-		c.insets = new Insets(3, 3, 8, 7);

-		c.weightx = 1.0;

-		c.fill = GridBagConstraints.HORIZONTAL;

-		cbSendDataAs = new JComboBox<>(DATA_FORMAT.values());

-		cbSendDataAs.setEditable(false);

-		jpGeneral.add(cbSendDataAs, c);

-

-		c.gridx = 0;

-		c.gridy++;

-		c.insets = new Insets(3, 7, 8, 3);

-		c.weightx = 0.0;

-		c.fill = GridBagConstraints.NONE;

-		jlSendDataAsLabelPlaceholder = new JLabel();

-		jlSendDataAsLabelPlaceholder.setPreferredSize(jlSendDataAs

-				.getPreferredSize());

-		jpGeneral.add(jlSendDataAsLabelPlaceholder, c);

-

-		c.gridx++;

-		c.insets = new Insets(3, 3, 8, 7);

-		c.weightx = 1.0;

-		c.fill = GridBagConstraints.HORIZONTAL;

-		jlSendDataAsFieldPlaceholder = new JLabel();

-		jlSendDataAsFieldPlaceholder.setPreferredSize(cbSendDataAs

-				.getPreferredSize());

-		jpGeneral.add(jlSendDataAsFieldPlaceholder, c);

-

-		JPanel finalPanel = new JPanel(new BorderLayout());

-		finalPanel.add(jpGeneral, BorderLayout.NORTH);

-		return (finalPanel);

-	}

-

-	private String[] getMediaTypes() {

-		if (mediaTypes != null) {

-			return mediaTypes;

-		}

-		List<String> types = new ArrayList<String>();

-		InputStream typesStream = getClass().getResourceAsStream(

-				"mediatypes.txt");

-		try {

-			// media types must be ASCII and can't have whitespace

-			Scanner scanner = new Scanner(typesStream, "ascii");

-			while (scanner.hasNext()) {

-				types.add(scanner.next());

-			}

-			scanner.close();

-		} finally {

-			try {

-				typesStream.close();

-			} catch (IOException ex) {

-			}

-		}

-		mediaTypes = types.toArray(new String[0]);

-

-		return mediaTypes;

-	}

-

-	private JPanel createAdvancedTab() {

-		JPanel jpAdvanced = new JPanel(new GridBagLayout());

-		GridBagConstraints c = new GridBagConstraints();

-

-		c.gridx = 0;

-		c.gridy = 0;

-		c.anchor = GridBagConstraints.WEST;

-		c.fill = GridBagConstraints.BOTH;

-		c.insets = new Insets(8, 10, 2, 4);

-		JLabel jlExpectHeaderInfoIcon = new JLabel(infoIcon);

-		jlExpectHeaderInfoIcon

-				.setToolTipText("<html>Ticking this checkbox may significantly improve performance when<br>"

-						+ "large volumes of data are sent to the remote server and a redirect<br>"

-						+ "from the original URL to the one specified by the server is likely.<br>"

-						+ "<br>"

-						+ "However, this checkbox <b>must not</b> be ticked to allow this activity<br>"

-						+ "to post updates to Twitter.</html>");

-		jpAdvanced.add(jlExpectHeaderInfoIcon, c);

-

-		c.gridx++;

-		c.weightx = 1.0;

-		c.insets = new Insets(8, 0, 2, 8);

-		cbSendHTTPExpectHeader = new JCheckBox(

-				"Send HTTP Expect request-header field");

-		jpAdvanced.add(cbSendHTTPExpectHeader, c);

-

-		c.gridx = 0;

-		c.gridy++;

-		c.weightx = 0;

-		c.insets = new Insets(2, 10, 5, 4);

-		JLabel jlShowRedirectionOutputPortInfoIcon = new JLabel(infoIcon);

-		jlShowRedirectionOutputPortInfoIcon

-				.setToolTipText("<html>\"Redirection\" output port displays the URL of the final redirect<br>"

-						+ "that has yielded the output data on the \"Response Body\" port.</html>");

-		jpAdvanced.add(jlShowRedirectionOutputPortInfoIcon, c);

-

-		c.gridx++;

-		c.weightx = 1.0;

-		c.insets = new Insets(2, 0, 5, 8);

-		cbShowRedirectionOutputPort = new JCheckBox(

-				"Show \"Redirection\" output port");

-		jpAdvanced.add(cbShowRedirectionOutputPort, c);

-

-		c.gridx = 0;

-		c.gridy++;

-		c.weightx = 0;

-		c.insets = new Insets(2, 10, 5, 4);

-		JLabel jlShowActualUrlPortInfoIcon = new JLabel(infoIcon);

-		jlShowActualUrlPortInfoIcon

-				.setToolTipText("<html>\"Actual URL\" output port displays the URL used by the REST service<br>"

-						+ "with the actual parameter values.</html>");

-		jpAdvanced.add(jlShowActualUrlPortInfoIcon, c);

-

-		c.gridx++;

-		c.weightx = 1.0;

-		c.insets = new Insets(2, 0, 5, 8);

-		cbShowActualUrlPort = new JCheckBox(

-				"Show \"Actual URL\" output port");

-		jpAdvanced.add(cbShowActualUrlPort, c);

-

-		c.gridx = 0;

-		c.gridy++;

-		c.weightx = 0;

-		c.insets = new Insets(2, 10, 5, 4);

-		JLabel jlShowResponseHeadersPortInfoIcon = new JLabel(infoIcon);

-		jlShowResponseHeadersPortInfoIcon

-				.setToolTipText("<html>\"Response headers\" output port displays the HTTP headers<br>"

-						+ "received from the final (after redirection) HTTP call.</html>");

-		jpAdvanced.add(jlShowResponseHeadersPortInfoIcon, c);

-

-		c.gridx++;

-		c.weightx = 1.0;

-		c.insets = new Insets(2, 0, 5, 8);

-		cbShowResponseHeadersPort = new JCheckBox(

-				"Show \"Response headers\" output port");

-		jpAdvanced.add(cbShowResponseHeadersPort, c);

-

-		c.gridx = 0;

-		c.gridy++;

-		c.weightx = 0;

-		c.insets = new Insets(2, 10, 5, 4);

-		JLabel jlEscapeParametersInfoIcon = new JLabel(infoIcon);

-		jlEscapeParametersInfoIcon

-				.setToolTipText("<html>Determines if parameters you pass to form the full URL<br>" +

-						" of the REST service will be URL-escaped.</html>");

-		jpAdvanced.add(jlEscapeParametersInfoIcon, c);

-

-		c.gridx++;

-		c.weightx = 1.0;

-		c.insets = new Insets(2, 0, 5, 8);

-		cbEscapeParameters = new JCheckBox("Escape URL parameter values");

-		jpAdvanced.add(cbEscapeParameters, c);

-

-		c.gridx = 0;

-		c.gridy++;

-		c.weightx = 0;

-		c.anchor = GridBagConstraints.WEST;

-		c.fill = GridBagConstraints.NONE;

-		c.insets = new Insets(2, 10, 5, 4);

-		JLabel jlHTTPHeadersInfoIcon = new JLabel(infoIcon);

-		jlHTTPHeadersInfoIcon

-				.setToolTipText("<html>Set additional HTTP headers</html>");

-		jpAdvanced.add(jlHTTPHeadersInfoIcon, c);

-

-		c.gridx = 1;

-		c.weightx = 0;

-		c.weighty = 0;

-		c.anchor = GridBagConstraints.WEST;

-		c.fill = GridBagConstraints.NONE;

-		c.insets = new Insets(2, 10, 5, 4);

-		addHeaderButton = new JButton("Add HTTP header");

-		addHeaderButton.addActionListener(new ActionListener() {

-			@Override

-			public void actionPerformed(ActionEvent e) {

-				httpHeadersTableModel.addEmptyRow();

-				httpHeadersTable.getSelectionModel().setSelectionInterval(httpHeadersTableModel.getRowCount() - 1, httpHeadersTableModel.getRowCount() - 1);			}

-		});

-		removeHeaderButton = new JButton("Remove HTTP header");

-		removeHeaderButton.addActionListener(new ActionListener() {

-			@Override

-			public void actionPerformed(ActionEvent e) {

-				int row = httpHeadersTable.getSelectedRow();

-				httpHeadersTableModel.removeRow(row);

-			}

-		});

-		JPanel buttonPanel = new JPanel();

-		buttonPanel.add(addHeaderButton, FlowLayout.LEFT);

-		buttonPanel.add(removeHeaderButton);

-		jpAdvanced.add(buttonPanel, c);

-

-		c.gridx = 1;

-		c.gridy++;

-		c.weightx = 0;

-		c.weighty = 1.0;

-		c.fill = GridBagConstraints.BOTH;

-		c.insets = new Insets(2, 10, 5, 4);

-		httpHeadersTableModel = new HTTPHeadersTableModel();

-		httpHeadersTable = new JTable(httpHeadersTableModel);

-		httpHeadersTable.setGridColor(Color.GRAY);

-		httpHeadersTable.setSelectionMode(ListSelectionModel.SINGLE_SELECTION);

-		setVisibleRowCount(httpHeadersTable, 3);

-		JScrollPane headersTableScrollPane = new JScrollPane(httpHeadersTable);

-		jpAdvanced.add(headersTableScrollPane, c);

-

-		return (jpAdvanced);

-	}

-

-	/*

-	 * Based on http://www.javalobby.org/java/forums/t19559.html

-	 */

-	public static void setVisibleRowCount(JTable table, int visibleRows){

-	    int height = 0;

-	    for(int row = 0; row < visibleRows; row++)

-	        height += table.getRowHeight(row);

-

-	    table.setPreferredScrollableViewportSize(new Dimension(

-	            table.getPreferredScrollableViewportSize().width,

-	            height));

-	}

-

-}

diff --git a/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/config/RESTActivityConfigureAction.java b/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/config/RESTActivityConfigureAction.java
deleted file mode 100644
index bfb50d0..0000000
--- a/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/config/RESTActivityConfigureAction.java
+++ /dev/null
@@ -1,51 +0,0 @@
-package net.sf.taverna.t2.activities.rest.ui.config;

-

-import java.awt.Frame;

-import java.awt.event.ActionEvent;

-

-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;

-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;

-import net.sf.taverna.t2.workbench.edits.EditManager;

-import net.sf.taverna.t2.workbench.file.FileManager;

-import net.sf.taverna.t2.workbench.ui.actions.activity.ActivityConfigurationAction;

-import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ActivityConfigurationDialog;

-import uk.org.taverna.commons.services.ServiceRegistry;

-import uk.org.taverna.scufl2.api.activity.Activity;

-

-@SuppressWarnings("serial")

-/**

- * @author Sergejs Aleksejevs

- * @author David Withers

- */

-public class RESTActivityConfigureAction extends ActivityConfigurationAction {

-

-	private final EditManager editManager;

-	private final FileManager fileManager;

-	private final ServiceRegistry serviceRegistry;

-

-	public RESTActivityConfigureAction(Activity activity, Frame owner, EditManager editManager,

-			FileManager fileManager, ActivityIconManager activityIconManager,

-			ServiceDescriptionRegistry serviceDescriptionRegistry, ServiceRegistry serviceRegistry) {

-		super(activity, activityIconManager, serviceDescriptionRegistry);

-		this.editManager = editManager;

-		this.fileManager = fileManager;

-		this.serviceRegistry = serviceRegistry;

-	}

-

-	public void actionPerformed(ActionEvent e) {

-		ActivityConfigurationDialog currentDialog = ActivityConfigurationAction

-				.getDialog(getActivity());

-

-		if (currentDialog != null) {

-			currentDialog.toFront();

-			return;

-		}

-

-		RESTActivityConfigurationPanel panel = new RESTActivityConfigurationPanel(getActivity(), serviceRegistry);

-		ActivityConfigurationDialog dialog = new ActivityConfigurationDialog(getActivity(), panel,

-				editManager);

-

-		ActivityConfigurationAction.setDialog(getActivity(), dialog, fileManager);

-	}

-

-}

diff --git a/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/menu/AddRESTTemplateAction.java b/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/menu/AddRESTTemplateAction.java
deleted file mode 100644
index 96326f6..0000000
--- a/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/menu/AddRESTTemplateAction.java
+++ /dev/null
@@ -1,107 +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.activities.rest.ui.menu;
-
-import java.awt.event.ActionEvent;
-import java.net.URI;
-
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-
-import net.sf.taverna.t2.activities.rest.ui.servicedescription.GenericRESTTemplateService;
-import net.sf.taverna.t2.ui.menu.AbstractContextualMenuAction;
-import net.sf.taverna.t2.ui.menu.MenuManager;
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.selection.SelectionManager;
-import net.sf.taverna.t2.workbench.ui.workflowview.WorkflowView;
-import uk.org.taverna.commons.services.ServiceRegistry;
-import uk.org.taverna.scufl2.api.core.Workflow;
-
-/**
- * An action to add a REST activity + a wrapping processor to the workflow.
- *
- * @author Alex Nenadic
- * @author David Withers
- */
-@SuppressWarnings("serial")
-public class AddRESTTemplateAction extends AbstractContextualMenuAction {
-
-	private static final String ADD_REST = "REST";
-
-	private static final URI insertSection = URI
-			.create("http://taverna.sf.net/2009/contextMenu/insert");
-
-	private EditManager editManager;
-	private MenuManager menuManager;
-	private SelectionManager selectionManager;
-	private ActivityIconManager activityIconManager;
-	private ServiceRegistry serviceRegistry;
-
-	public AddRESTTemplateAction() {
-		super(insertSection, 500);
-	}
-
-	@Override
-	public boolean isEnabled() {
-		return super.isEnabled() && getContextualSelection().getSelection() instanceof Workflow;
-	}
-
-	@Override
-	protected Action createAction() {
-
-		return new AddRestAction();
-	}
-
-	protected class AddRestAction extends AbstractAction {
-		AddRestAction() {
-			super(ADD_REST, activityIconManager
-					.iconForActivity(GenericRESTTemplateService.ACTIVITY_TYPE));
-		}
-
-		public void actionPerformed(ActionEvent e) {
-			WorkflowView.importServiceDescription(
-					GenericRESTTemplateService.getServiceDescription(), false, editManager,
-					menuManager, selectionManager, serviceRegistry);
-		}
-	}
-
-	public void setEditManager(EditManager editManager) {
-		this.editManager = editManager;
-	}
-
-	public void setMenuManager(MenuManager menuManager) {
-		this.menuManager = menuManager;
-	}
-
-	public void setSelectionManager(SelectionManager selectionManager) {
-		this.selectionManager = selectionManager;
-	}
-
-	public void setActivityIconManager(ActivityIconManager activityIconManager) {
-		this.activityIconManager = activityIconManager;
-	}
-
-	public void setServiceRegistry(ServiceRegistry serviceRegistry) {
-		this.serviceRegistry = serviceRegistry;
-	}
-
-}
diff --git a/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/menu/AddRESTTemplateMenuAction.java b/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/menu/AddRESTTemplateMenuAction.java
deleted file mode 100644
index ec738e2..0000000
--- a/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/menu/AddRESTTemplateMenuAction.java
+++ /dev/null
@@ -1,114 +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.activities.rest.ui.menu;
-
-import java.awt.event.ActionEvent;
-import java.awt.event.InputEvent;
-import java.awt.event.KeyEvent;
-import java.net.URI;
-
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-import javax.swing.KeyStroke;
-
-import net.sf.taverna.t2.activities.rest.ui.servicedescription.GenericRESTTemplateService;
-import net.sf.taverna.t2.ui.menu.AbstractMenuAction;
-import net.sf.taverna.t2.ui.menu.DesignOnlyAction;
-import net.sf.taverna.t2.ui.menu.MenuManager;
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.selection.SelectionManager;
-import net.sf.taverna.t2.workbench.ui.workflowview.WorkflowView;
-import uk.org.taverna.commons.services.ServiceRegistry;
-
-/**
- * An action to add a REST activity + a wrapping processor to the workflow.
- *
- * @author Alex Nenadic
- * @author alanrw
- * @author David Withers
- */
-@SuppressWarnings("serial")
-public class AddRESTTemplateMenuAction extends AbstractMenuAction {
-
-	private static final String ADD_REST = "REST";
-
-	private static final URI INSERT = URI
-			.create("http://taverna.sf.net/2008/t2workbench/menu#insert");
-
-	private static final URI ADD_REST_URI = URI
-			.create("http://taverna.sf.net/2008/t2workbench/menu#graphMenuAddREST");
-
-	private EditManager editManager;
-	private MenuManager menuManager;
-	private SelectionManager selectionManager;
-	private ActivityIconManager activityIconManager;
-	private ServiceRegistry serviceRegistry;
-
-	public AddRESTTemplateMenuAction() {
-		super(INSERT, 500, ADD_REST_URI);
-	}
-
-	@Override
-	protected Action createAction() {
-		return new AddRESTMenuAction();
-	}
-
-	protected class AddRESTMenuAction extends AbstractAction implements DesignOnlyAction {
-		AddRESTMenuAction() {
-			super();
-			putValue(SMALL_ICON, activityIconManager.iconForActivity(GenericRESTTemplateService.ACTIVITY_TYPE));
-			putValue(NAME, ADD_REST);
-			putValue(SHORT_DESCRIPTION, "REST service");
-			putValue(
-					Action.ACCELERATOR_KEY,
-					KeyStroke.getKeyStroke(KeyEvent.VK_H, InputEvent.SHIFT_DOWN_MASK
-							| InputEvent.ALT_DOWN_MASK));
-		}
-
-		public void actionPerformed(ActionEvent e) {
-			WorkflowView.importServiceDescription(
-					GenericRESTTemplateService.getServiceDescription(), false, editManager,
-					menuManager, selectionManager, serviceRegistry);
-		}
-	}
-
-	public void setEditManager(EditManager editManager) {
-		this.editManager = editManager;
-	}
-
-	public void setMenuManager(MenuManager menuManager) {
-		this.menuManager = menuManager;
-	}
-
-	public void setSelectionManager(SelectionManager selectionManager) {
-		this.selectionManager = selectionManager;
-	}
-
-	public void setActivityIconManager(ActivityIconManager activityIconManager) {
-		this.activityIconManager = activityIconManager;
-	}
-
-	public void setServiceRegistry(ServiceRegistry serviceRegistry) {
-		this.serviceRegistry = serviceRegistry;
-	}
-
-}
diff --git a/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/servicedescription/GenericRESTTemplateService.java b/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/servicedescription/GenericRESTTemplateService.java
deleted file mode 100644
index 69a3b96..0000000
--- a/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/servicedescription/GenericRESTTemplateService.java
+++ /dev/null
@@ -1,76 +0,0 @@
-package net.sf.taverna.t2.activities.rest.ui.servicedescription;

-

-import java.net.URI;

-

-import javax.swing.Icon;

-

-import net.sf.taverna.t2.activities.rest.RESTActivity;

-import net.sf.taverna.t2.servicedescriptions.AbstractTemplateService;

-import net.sf.taverna.t2.servicedescriptions.ServiceDescription;

-import uk.org.taverna.scufl2.api.configurations.Configuration;

-

-import com.fasterxml.jackson.databind.node.ArrayNode;

-import com.fasterxml.jackson.databind.node.ObjectNode;

-

-/**

- * @author Sergejs Aleksejevs

- * @author David Withers

- */

-public class GenericRESTTemplateService extends AbstractTemplateService {

-

-	public static final URI ACTIVITY_TYPE = URI.create("http://ns.taverna.org.uk/2010/activity/rest");

-

-	private static final String REST = "REST";

-

-	@Override

-	public URI getActivityType() {

-		return ACTIVITY_TYPE;

-	}

-

-	@Override

-	public Configuration getActivityConfiguration() {

-		Configuration configuration = new Configuration();

-		configuration.setType(ACTIVITY_TYPE.resolve("#Config"));

-		ObjectNode json = (ObjectNode) configuration.getJson();

-		ObjectNode requestNode = json.objectNode();

-

-		requestNode.put("httpMethod", RESTActivity.HTTP_METHOD.GET.name());

-		requestNode.put("absoluteURITemplate", "http://www.uniprot.org/uniprot/{id}.xml");

-

-		ArrayNode headersNode = requestNode.arrayNode();

-		headersNode.addObject().put("header", "Accept").put("value", "application/xml");

-		headersNode.addObject().put("header", "Content-Type").put("value", "application/xml");

-

-		requestNode.set("headers", headersNode);

-		json.set("request", requestNode);

-		json.put("outgoingDataFormat", RESTActivity.DATA_FORMAT.String.name());

-		json.put("showRedirectionOutputPort", false);

-		json.put("showActualURLPort", false);

-		json.put("showResponseHeadersPort", false);

-		json.put("escapeParameters", true);

-		return configuration;

-	}

-

-	@Override

-	public Icon getIcon() {

-		return RESTActivityIcon.getRESTActivityIcon();

-	}

-

-	public String getName() {

-		return REST;

-	}

-

-	public String getDescription() {

-		return "A generic REST service that can handle all HTTP methods";

-	}

-

-	public static ServiceDescription getServiceDescription() {

-		GenericRESTTemplateService gts = new GenericRESTTemplateService();

-		return gts.templateService;

-	}

-

-	public String getId() {

-		return "http://www.taverna.org.uk/2010/services/rest";

-	}

-

-}

diff --git a/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/servicedescription/RESTActivityIcon.java b/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/servicedescription/RESTActivityIcon.java
deleted file mode 100644
index c2309a9..0000000
--- a/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/servicedescription/RESTActivityIcon.java
+++ /dev/null
@@ -1,54 +0,0 @@
-package net.sf.taverna.t2.activities.rest.ui.servicedescription;

-

-import java.awt.Color;

-import java.net.URI;

-

-import javax.swing.Icon;

-import javax.swing.ImageIcon;

-

-import net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI;

-import net.sf.taverna.t2.workbench.configuration.colour.ColourManager;

-

-/**

- *

- * @author Sergejs Aleksejevs

- * @author David Withers

- */

-public class RESTActivityIcon implements ActivityIconSPI {

-	private static final Color PROCESSOR_COLOUR = Color.decode("#7AAFFF");

-

-	private static ImageIcon icon;

-

-	public int canProvideIconScore(URI activityType) {

-		if (GenericRESTTemplateService.ACTIVITY_TYPE.equals(activityType))

-			return DEFAULT_ICON + 1;

-		else

-			return NO_ICON;

-	}

-

-	public Icon getIcon(URI activityType) {

-		return getRESTActivityIcon();

-	}

-

-	public static Icon getRESTActivityIcon() {

-		if (icon == null) {

-			synchronized (RESTActivityIcon.class) {

-				if (icon == null) {

-					try {

-						icon = new ImageIcon(

-								RESTActivityIcon.class.getResource("service_type_rest.png"));

-					} catch (NullPointerException e) {

-						/* icon wasn't found - do nothing, but no icon will be available */

-					}

-				}

-			}

-		}

-		return (icon);

-	}

-

-	public void setColourManager(ColourManager colourManager) {

-		// set colour for REST processors in the workflow diagram

-		colourManager.setPreferredColour(GenericRESTTemplateService.ACTIVITY_TYPE.toString(), PROCESSOR_COLOUR);

-	}

-

-}

diff --git a/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/serviceprovider/ExampleServiceDesc.java.bak b/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/serviceprovider/ExampleServiceDesc.java.bak
deleted file mode 100644
index 5d9848d..0000000
--- a/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/serviceprovider/ExampleServiceDesc.java.bak
+++ /dev/null
@@ -1,99 +0,0 @@
-package net.sf.taverna.t2.activities.rest.ui.serviceprovider;

-

-import java.net.URI;

-import java.util.Arrays;

-import java.util.List;

-

-import javax.swing.Icon;

-import javax.swing.ImageIcon;

-

-import net.sf.taverna.t2.servicedescriptions.ServiceDescription;

-import net.sf.taverna.t2.workflowmodel.processor.activity.Activity;

-

-import net.sf.taverna.t2.activities.rest.RESTActivity;

-import net.sf.taverna.t2.activities.rest.RESTActivityConfigurationBean;

-

-public class ExampleServiceDesc extends ServiceDescription<RESTActivityConfigurationBean>

-{

-	/**

-	 * The subclass of Activity which should be instantiated when adding a service

-	 * for this description 

-	 */

-	@Override

-	public Class<? extends Activity<RESTActivityConfigurationBean>> getActivityClass() {

-		return RESTActivity.class;

-	}

-

-	/**

-	 * The configuration bean which is to be used for configuring the instantiated activity.

-	 * Making this bean will typically require some of the fields set on this service

-	 * description, like an endpoint URL or method name. 

-	 * 

-	 */

-	@Override

-	public RESTActivityConfigurationBean getActivityConfiguration() {

-		RESTActivityConfigurationBean bean = new RESTActivityConfigurationBean();

-		bean.setExampleString(exampleString);

-		bean.setExampleUri(exampleUri);

-		return bean;

-	}

-

-	/**

-	 * An icon to represent this service description in the service palette.

-	 */

-	@Override

-	public Icon getIcon() {

-	  return null;

-	}

-

-	/**

-	 * The display name that will be shown in service palette and will

-	 * be used as a template for processor name when added to workflow.

-	 */

-	@Override

-	public String getName() {

-		return exampleString;

-	}

-

-	/**

-	 * The path to this service description in the service palette. Folders

-	 * will be created for each element of the returned path.

-	 */

-	@Override

-	public List<String> getPath() {

-		// For deeper paths you may return several strings

-		return Arrays.asList("Service templates", "Examples " + exampleUri);

-	}

-

-	/**

-	 * Return a list of data values uniquely identifying this service

-	 * description (to avoid duplicates). Include only primary key like fields,

-	 * ie. ignore descriptions, icons, etc.

-	 */

-	@Override

-	protected List<? extends Object> getIdentifyingData() {

-		// FIXME: Use your fields instead of example fields

-		return Arrays.<Object>asList(exampleString, exampleUri);

-	}

-

-	

-	// FIXME: Replace example fields and getters/setters with any required

-	// and optional fields. (All fields are searchable in the Service palette,

-	// for instance try a search for exampleString:3)

-	private String exampleString;

-	private URI exampleUri;

-	public String getExampleString() {

-		return exampleString;

-	}

-	public URI getExampleUri() {

-		return exampleUri;

-	}

-	public void setExampleString(String exampleString) {

-		this.exampleString = exampleString;

-	}

-	public void setExampleUri(URI exampleUri) {

-		this.exampleUri = exampleUri;

-	}

-

-

-}

diff --git a/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/serviceprovider/ExampleServiceProvider.java.bak b/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/serviceprovider/ExampleServiceProvider.java.bak
deleted file mode 100644
index ff11dbe..0000000
--- a/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/serviceprovider/ExampleServiceProvider.java.bak
+++ /dev/null
@@ -1,106 +0,0 @@
-package net.sf.taverna.t2.activities.rest.ui.serviceprovider;

-

-import java.net.URI;

-import java.util.ArrayList;

-import java.util.Arrays;

-import java.util.List;

-

-import javax.swing.Icon;

-import javax.swing.ImageIcon;

-import javax.swing.JOptionPane;

-

-import net.sf.taverna.t2.servicedescriptions.AbstractConfigurableServiceProvider;

-import net.sf.taverna.t2.servicedescriptions.ConfigurableServiceProvider;

-import net.sf.taverna.t2.servicedescriptions.ServiceDescription;

-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider;

-import net.sf.taverna.t2.workflowmodel.ConfigurationException;

-

-public class ExampleServiceProvider extends AbstractConfigurableServiceProvider<ExampleServiceProviderConfig>

-                                    implements ConfigurableServiceProvider<ExampleServiceProviderConfig>

-{

-	public ExampleServiceProvider()

-	{

-    super(new ExampleServiceProviderConfig());

-  }

-

-  /**

-	 * Do the actual search for services. Return using the callBack parameter.

-	 */

-	@SuppressWarnings("unchecked")

-	public void findServiceDescriptionsAsync(

-			FindServiceDescriptionsCallBack callBack) {

-		// Use callback.status() for long-running searches

-		// callBack.status("Resolving example services");

-

-		List<ServiceDescription> results = new ArrayList<ServiceDescription>();

-

-		// FIXME: Implement the actual service search/lookup instead

-		// of dummy for-loop

-		for (int i = 1; i <= getConfiguration().getNumberOfServices(); i++) {

-			ExampleServiceDesc service = new ExampleServiceDesc();

-			// Populate the service description bean

-			service.setExampleString("Example " + i);

-			service.setExampleUri(getConfiguration().getUri());

-

-			// Optional: set description

-			service.setDescription("Service example number " + i);

-			results.add(service);

-		}

-		

-		// partialResults() can also be called several times from inside

-		// for-loop if the full search takes a long time

-		callBack.partialResults(results);

-

-		// No more results will be coming

-		callBack.finished();

-	}

-	

-	

-//	@Override

-//	/**

-//	 * This allows to have a few configured service providers in the Service Panel at startup;

-//	 * useful if there are some prototypical ones that are useful + need to allow users to add their own

-//	 * through manual config.

-//	 */

-//	public List<ExampleServiceProviderConfig> getDefaultConfigurations() {

-//	  ExampleServiceProviderConfig a = new ExampleServiceProviderConfig();

-//	  a.setUri(URI.create("http://localhost:8181/serviceA"));

-//	  ExampleServiceProviderConfig b = new ExampleServiceProviderConfig();

-//	  b.setUri(URI.create("http://fish.com/serviceB"));

-//	  b.setNumberOfServices(2);

-//	  return Arrays.asList(a, b);

-//	}

-

-	

-

-	/**

-	 * Icon for service provider

-	 */

-	public Icon getIcon() {

-		return null;

-	}

-

-	

-	/**

-	 * Appears in "Import new services..." in Service Panel

-	 */

-	public String getName() {

-		return "My example service";

-	}
-	

-	@Override

-	/**

-   * Name of service provider, appears in right click for 'Remove service

-   * provider'

-   */
-	public String toString() {
-		return getName() + " " + getConfiguration().getUri();
-	}

-

-  @Override

-  protected List<? extends Object> getIdentifyingData() {

-    return Arrays.asList(getConfiguration().getUri());

-  }

-

-

-}

diff --git a/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/serviceprovider/ExampleServiceProviderConfig.java.bak b/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/serviceprovider/ExampleServiceProviderConfig.java.bak
deleted file mode 100644
index 22d8546..0000000
--- a/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/serviceprovider/ExampleServiceProviderConfig.java.bak
+++ /dev/null
@@ -1,31 +0,0 @@
-package net.sf.taverna.t2.activities.rest.ui.serviceprovider;

-

-import java.net.URI;

-

-import net.sf.taverna.t2.lang.beans.PropertyAnnotated;

-import net.sf.taverna.t2.lang.beans.PropertyAnnotation;

-

-public class ExampleServiceProviderConfig extends PropertyAnnotated

-{

-  private URI uri = URI.create("http://www.example.com");

-  private int numberOfServices = 5;

-  

-  @PropertyAnnotation(displayName="Provider URI", preferred=true)

-  public URI getUri() {

-    return uri;

-  }

-  

-  public void setUri(URI uri) {

-    this.uri = uri;

-  }

-  

-  @PropertyAnnotation(displayName="Number of services")

-  public int getNumberOfServices() {

-    return numberOfServices;

-  }

-  

-  public void setNumberOfServices(int numberOfServices) {

-    this.numberOfServices = numberOfServices;

-  }

-  

-}

diff --git a/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/view/ConfigureRESTActivityMenuAction.java b/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/view/ConfigureRESTActivityMenuAction.java
deleted file mode 100644
index 91e198f..0000000
--- a/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/view/ConfigureRESTActivityMenuAction.java
+++ /dev/null
@@ -1,66 +0,0 @@
-package net.sf.taverna.t2.activities.rest.ui.view;

-

-import javax.swing.Action;

-

-import uk.org.taverna.commons.services.ServiceRegistry;

-

-import net.sf.taverna.t2.activities.rest.ui.config.RESTActivityConfigureAction;

-import net.sf.taverna.t2.activities.rest.ui.servicedescription.GenericRESTTemplateService;

-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;

-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;

-import net.sf.taverna.t2.workbench.activitytools.AbstractConfigureActivityMenuAction;

-import net.sf.taverna.t2.workbench.edits.EditManager;

-import net.sf.taverna.t2.workbench.file.FileManager;

-

-/**

- * This action is responsible for enabling the contextual menu entry on processors that perform

- * RESTActivity'ies.

- * NB! As a side-effect this also enables the pop-up with for configuration of the processor when it

- * is added to the workflow from the Service Panel.

- *

- * @author Sergejs Aleksejevs

- * @author David Withers

- */

-public class ConfigureRESTActivityMenuAction extends AbstractConfigureActivityMenuAction {

-

-	private EditManager editManager;

-	private FileManager fileManager;

-	private ActivityIconManager activityIconManager;

-	private ServiceDescriptionRegistry serviceDescriptionRegistry;

-	private ServiceRegistry serviceRegistry;

-

-	public ConfigureRESTActivityMenuAction() {

-		super(GenericRESTTemplateService.ACTIVITY_TYPE);

-	}

-

-	@Override

-	protected Action createAction() {

-		RESTActivityConfigureAction configAction = new RESTActivityConfigureAction(findActivity(),

-				getParentFrame(), editManager, fileManager, activityIconManager,

-				serviceDescriptionRegistry, serviceRegistry);

-		configAction.putValue(Action.NAME, "Configure REST service");

-		addMenuDots(configAction);

-		return configAction;

-	}

-

-	public void setEditManager(EditManager editManager) {

-		this.editManager = editManager;

-	}

-

-	public void setFileManager(FileManager fileManager) {

-		this.fileManager = fileManager;

-	}

-

-	public void setActivityIconManager(ActivityIconManager activityIconManager) {

-		this.activityIconManager = activityIconManager;

-	}

-

-	public void setServiceDescriptionRegistry(ServiceDescriptionRegistry serviceDescriptionRegistry) {

-		this.serviceDescriptionRegistry = serviceDescriptionRegistry;

-	}

-

-	public void setServiceRegistry(ServiceRegistry serviceRegistry) {

-		this.serviceRegistry = serviceRegistry;

-	}

-

-}

diff --git a/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/view/RESTActivityMainContextViewFactory.java b/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/view/RESTActivityMainContextViewFactory.java
deleted file mode 100644
index 5bea949..0000000
--- a/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/view/RESTActivityMainContextViewFactory.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package net.sf.taverna.t2.activities.rest.ui.view;

-

-import java.util.Arrays;

-import java.util.List;

-

-import net.sf.taverna.t2.activities.rest.ui.servicedescription.GenericRESTTemplateService;

-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;

-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;

-import net.sf.taverna.t2.workbench.configuration.colour.ColourManager;

-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;

-import uk.org.taverna.commons.services.ServiceRegistry;

-import uk.org.taverna.scufl2.api.activity.Activity;

-

-public class RESTActivityMainContextViewFactory implements ContextualViewFactory<Activity> {

-

-	private EditManager editManager;

-	private FileManager fileManager;

-	private ActivityIconManager activityIconManager;

-	private ColourManager colourManager;

-	private ServiceDescriptionRegistry serviceDescriptionRegistry;

-	private ServiceRegistry serviceRegistry;

-

-	public boolean canHandle(Object selection) {

-		return selection instanceof Activity

-				&& ((Activity) selection).getType()

-						.equals(GenericRESTTemplateService.ACTIVITY_TYPE);

-	}

-

-	public List<ContextualView> getViews(Activity selection) {

-		return Arrays.<ContextualView> asList(new RESTActivityMainContextualView(selection,

-				editManager, fileManager, activityIconManager, colourManager,

-				serviceDescriptionRegistry, serviceRegistry));

-	}

-

-	public void setEditManager(EditManager editManager) {

-		this.editManager = editManager;

-	}

-

-	public void setFileManager(FileManager fileManager) {

-		this.fileManager = fileManager;

-	}

-

-	public void setActivityIconManager(ActivityIconManager activityIconManager) {

-		this.activityIconManager = activityIconManager;

-	}

-

-	public void setColourManager(ColourManager colourManager) {

-		this.colourManager = colourManager;

-	}

-

-	public void setServiceDescriptionRegistry(ServiceDescriptionRegistry serviceDescriptionRegistry) {

-		this.serviceDescriptionRegistry = serviceDescriptionRegistry;

-	}

-

-	public void setServiceRegistry(ServiceRegistry serviceRegistry) {

-		this.serviceRegistry = serviceRegistry;

-	}

-

-}

diff --git a/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/view/RESTActivityMainContextualView.java b/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/view/RESTActivityMainContextualView.java
deleted file mode 100644
index f4ffe0f..0000000
--- a/taverna-rest-activity-ui/src/main/java/net/sf/taverna/t2/activities/rest/ui/view/RESTActivityMainContextualView.java
+++ /dev/null
@@ -1,220 +0,0 @@
-package net.sf.taverna.t2.activities.rest.ui.view;

-

-import java.awt.Font;

-import java.awt.Frame;

-import java.awt.GridBagConstraints;

-import java.awt.GridBagLayout;

-import java.awt.Insets;

-

-import javax.swing.Action;

-import javax.swing.BorderFactory;

-import javax.swing.JComponent;

-import javax.swing.JLabel;

-import javax.swing.JPanel;

-import javax.swing.JScrollPane;

-import javax.swing.JTextArea;

-import javax.swing.JTextField;

-

-import net.sf.taverna.t2.activities.rest.RESTActivity;

-import net.sf.taverna.t2.activities.rest.RESTActivity.HTTP_METHOD;

-import net.sf.taverna.t2.activities.rest.RESTActivityConfigurationBean;

-import net.sf.taverna.t2.activities.rest.ui.config.RESTActivityConfigureAction;

-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;

-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;

-import net.sf.taverna.t2.workbench.configuration.colour.ColourManager;

-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 uk.org.taverna.commons.services.ServiceRegistry;

-import uk.org.taverna.scufl2.api.activity.Activity;

-import uk.org.taverna.scufl2.api.common.Scufl2Tools;

-import uk.org.taverna.scufl2.api.configurations.Configuration;

-

-@SuppressWarnings("serial")

-public class RESTActivityMainContextualView extends ContextualView {

-

-	private final Scufl2Tools scufl2Tools = new Scufl2Tools();

-

-	private final Activity activity;

-

-	private JPanel jpMainPanel;

-	private JTextField tfHTTPMethod;

-	private JTextArea taURLSignature;

-	private JTextField tfAcceptHeader;

-	private JLabel jlContentType;

-	private JTextField tfContentTypeHeader;

-	private JLabel jlSendDataAs;

-	private JTextField tfSendDataAs;

-	private JLabel jlSendHTTPExpectRequestHeader;

-	private JTextField tfSendHTTPExpectRequestHeader;

-

-	private final EditManager editManager;

-	private final FileManager fileManager;

-	private final ActivityIconManager activityIconManager;

-	private final ColourManager colourManager;

-	private final ServiceDescriptionRegistry serviceDescriptionRegistry;

-	private final ServiceRegistry serviceRegistry;

-

-	public RESTActivityMainContextualView(Activity activity, EditManager editManager,

-			FileManager fileManager, ActivityIconManager activityIconManager,

-			ColourManager colourManager, ServiceDescriptionRegistry serviceDescriptionRegistry,

-			ServiceRegistry serviceRegistry) {

-		this.activity = activity;

-		this.editManager = editManager;

-		this.fileManager = fileManager;

-		this.activityIconManager = activityIconManager;

-		this.colourManager = colourManager;

-		this.serviceDescriptionRegistry = serviceDescriptionRegistry;

-		this.serviceRegistry = serviceRegistry;

-		initView();

-	}

-

-	@Override

-	public JComponent getMainFrame() {

-		jpMainPanel = new JPanel(new GridBagLayout());

-		jpMainPanel

-				.setBorder(BorderFactory.createCompoundBorder(BorderFactory.createEmptyBorder(4, 2,

-						4, 2), BorderFactory.createLineBorder(

-						colourManager.getPreferredColour(RESTActivity.class.getCanonicalName()), 2)));

-

-		GridBagConstraints c = new GridBagConstraints();

-		c.fill = GridBagConstraints.HORIZONTAL;

-		c.anchor = GridBagConstraints.WEST;

-		c.weighty = 0;

-

-		c.gridx = 0;

-		c.gridy = 0;

-		c.insets = new Insets(5, 5, 5, 5);

-		JLabel jlHTTPMethod = new JLabel("HTTP Method:");

-		jlHTTPMethod.setFont(jlHTTPMethod.getFont().deriveFont(Font.BOLD));

-		jpMainPanel.add(jlHTTPMethod, c);

-

-		c.gridx++;

-		c.weightx = 1.0;

-		tfHTTPMethod = new JTextField();

-		tfHTTPMethod.setEditable(false);

-		jpMainPanel.add(tfHTTPMethod, c);

-		c.weightx = 0;

-

-		c.gridx = 0;

-		c.gridy++;

-		JLabel jlURLSignature = new JLabel("URL Template:");

-		jlURLSignature.setFont(jlURLSignature.getFont().deriveFont(Font.BOLD));

-		jpMainPanel.add(jlURLSignature, c);

-

-		c.gridx++;

-		taURLSignature = new JTextArea(3, 30);

-		taURLSignature.setEditable(false);

-		taURLSignature.setLineWrap(true);

-		JScrollPane spURLSignature = new JScrollPane(taURLSignature);

-		jpMainPanel.add(spURLSignature, c);

-

-		c.gridx = 0;

-		c.gridy++;

-		JLabel jlAcceptHeader = new JLabel("'Accept' header:");

-		jlAcceptHeader.setFont(jlAcceptHeader.getFont().deriveFont(Font.BOLD));

-		jpMainPanel.add(jlAcceptHeader, c);

-

-		c.gridx++;

-		tfAcceptHeader = new JTextField();

-		tfAcceptHeader.setEditable(false);

-		jpMainPanel.add(tfAcceptHeader, c);

-

-		c.gridx = 0;

-		c.gridy++;

-		jlContentType = new JLabel("'Content-Type' header:");

-		jlContentType.setFont(jlContentType.getFont().deriveFont(Font.BOLD));

-		jlContentType.setVisible(false);

-		jpMainPanel.add(jlContentType, c);

-

-		c.gridx++;

-		tfContentTypeHeader = new JTextField();

-		tfContentTypeHeader.setEditable(false);

-		tfContentTypeHeader.setVisible(false);

-		jpMainPanel.add(tfContentTypeHeader, c);

-

-		c.gridx = 0;

-		c.gridy++;

-		jlSendDataAs = new JLabel("Send data as:");

-		jlSendDataAs.setFont(jlSendDataAs.getFont().deriveFont(Font.BOLD));

-		jlSendDataAs.setVisible(false);

-		jpMainPanel.add(jlSendDataAs, c);

-

-		c.gridx++;

-		tfSendDataAs = new JTextField();

-		tfSendDataAs.setEditable(false);

-		tfSendDataAs.setVisible(false);

-		jpMainPanel.add(tfSendDataAs, c);

-

-		c.gridx = 0;

-		c.gridy++;

-		jlSendHTTPExpectRequestHeader = new JLabel("Send HTTP 'Expect' header:");

-		jlSendHTTPExpectRequestHeader.setFont(jlSendHTTPExpectRequestHeader.getFont().deriveFont(

-				Font.BOLD));

-		jlSendHTTPExpectRequestHeader.setVisible(false);

-		jpMainPanel.add(jlSendHTTPExpectRequestHeader, c);

-

-		c.gridx++;

-		tfSendHTTPExpectRequestHeader = new JTextField();

-		tfSendHTTPExpectRequestHeader.setEditable(false);

-		tfSendHTTPExpectRequestHeader.setVisible(false);

-		jpMainPanel.add(tfSendHTTPExpectRequestHeader, c);

-

-		// populate the view with values

-		refreshView();

-

-		return jpMainPanel;

-	}

-

-	@Override

-	/**

-	 * This is the title of the contextual view - shown in the list of other available

-	 * views (even when this contextual view is collapsed).

-	 */

-	public String getViewTitle() {

-		return "REST Service Details";

-	}

-

-	/**

-	 * Typically called when the activity configuration has changed.

-	 */

-	@Override

-	public void refreshView() {

-		Configuration configuration = scufl2Tools.configurationFor(activity, activity.getParent());

-		RESTActivityConfigurationBean configurationBean = new RESTActivityConfigurationBean(configuration.getJson());

-

-		// toggle visibility of the elements that do not always appear

-		HTTP_METHOD httpMethod = configurationBean.getHttpMethod();

-		jlContentType.setVisible(httpMethod == HTTP_METHOD.POST || httpMethod == HTTP_METHOD.PUT);

-		tfContentTypeHeader.setVisible(httpMethod == HTTP_METHOD.POST || httpMethod == HTTP_METHOD.PUT);

-		jlSendDataAs.setVisible(httpMethod == HTTP_METHOD.POST || httpMethod == HTTP_METHOD.PUT);

-		tfSendDataAs.setVisible(httpMethod == HTTP_METHOD.POST || httpMethod == HTTP_METHOD.PUT);

-		jlSendHTTPExpectRequestHeader.setVisible(httpMethod == HTTP_METHOD.POST || httpMethod == HTTP_METHOD.PUT);

-		tfSendHTTPExpectRequestHeader.setVisible(httpMethod == HTTP_METHOD.POST || httpMethod == HTTP_METHOD.PUT);

-		jpMainPanel.revalidate();

-

-		tfHTTPMethod.setText("" + configurationBean.getHttpMethod());

-		taURLSignature.setText(configurationBean.getUrlSignature());

-		tfAcceptHeader.setText(configurationBean.getAcceptsHeaderValue());

-		tfContentTypeHeader.setText(configurationBean.getContentTypeForUpdates());

-		tfSendDataAs.setText("" + configurationBean.getOutgoingDataFormat());

-		tfSendHTTPExpectRequestHeader.setText("" + configurationBean.getSendHTTPExpectRequestHeader());

-	}

-

-	/**

-	 * View position hint

-	 */

-	@Override

-	public int getPreferredPosition() {

-		// want to be on top, as it's the main contextual view for this activity

-		return 100;

-	}

-

-	@Override

-	public Action getConfigureAction(final Frame owner) {

-		// "Configure" button appears because of this action being returned

-		return new RESTActivityConfigureAction(activity, owner, editManager, fileManager,

-				activityIconManager, serviceDescriptionRegistry, serviceRegistry);

-	}

-

-}

diff --git a/taverna-rest-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider b/taverna-rest-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider
deleted file mode 100644
index a7222c4..0000000
--- a/taverna-rest-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider
+++ /dev/null
@@ -1 +0,0 @@
-net.sf.taverna.t2.activities.rest.ui.servicedescription.GenericRESTTemplateService
\ No newline at end of file
diff --git a/taverna-rest-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent b/taverna-rest-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent
deleted file mode 100644
index a1e5390..0000000
--- a/taverna-rest-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent
+++ /dev/null
@@ -1,3 +0,0 @@
-net.sf.taverna.t2.activities.rest.ui.view.ConfigureRESTActivityMenuAction
-net.sf.taverna.t2.activities.rest.ui.menu.AddRESTTemplateAction
-net.sf.taverna.t2.activities.rest.ui.menu.AddRESTTemplateMenuAction
\ No newline at end of file
diff --git a/taverna-rest-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI b/taverna-rest-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI
deleted file mode 100644
index 9440d43..0000000
--- a/taverna-rest-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI
+++ /dev/null
@@ -1 +0,0 @@
-net.sf.taverna.t2.activities.rest.ui.servicedescription.RESTActivityIcon
\ No newline at end of file
diff --git a/taverna-rest-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory b/taverna-rest-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory
deleted file mode 100644
index 5325bf1..0000000
--- a/taverna-rest-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory
+++ /dev/null
@@ -1 +0,0 @@
- net.sf.taverna.t2.activities.rest.ui.view.RESTActivityMainContextViewFactory

diff --git a/taverna-rest-activity-ui/src/main/resources/META-INF/spring/rest-activity-ui-context-osgi.xml b/taverna-rest-activity-ui/src/main/resources/META-INF/spring/rest-activity-ui-context-osgi.xml
deleted file mode 100644
index 643d5be..0000000
--- a/taverna-rest-activity-ui/src/main/resources/META-INF/spring/rest-activity-ui-context-osgi.xml
+++ /dev/null
@@ -1,28 +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="RESTActivityIcon" interface="net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI" />
-
-	<service ref="GenericRESTTemplateService" interface="net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider" />
-
-	<service ref="ConfigureRESTActivityMenuAction" auto-export="interfaces" />
-	<service ref="AddRESTTemplateAction" auto-export="interfaces" />
-	<service ref="AddRESTTemplateMenuAction" auto-export="interfaces" />
-
-	<service ref="RESTActivityMainContextViewFactory" 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" />
-	<reference id="menuManager" interface="net.sf.taverna.t2.ui.menu.MenuManager" />
-	<reference id="selectionManager" interface="net.sf.taverna.t2.workbench.selection.SelectionManager" />
-	<reference id="activityIconManager" interface="net.sf.taverna.t2.workbench.activityicons.ActivityIconManager" />
-	<reference id="colourManager" interface="net.sf.taverna.t2.workbench.configuration.colour.ColourManager" />
-	<reference id="serviceDescriptionRegistry" interface="net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry" />
-	<reference id="serviceRegistry" interface="uk.org.taverna.commons.services.ServiceRegistry" />
-
-</beans:beans>
diff --git a/taverna-rest-activity-ui/src/main/resources/META-INF/spring/rest-activity-ui-context.xml b/taverna-rest-activity-ui/src/main/resources/META-INF/spring/rest-activity-ui-context.xml
deleted file mode 100644
index 2b699e7..0000000
--- a/taverna-rest-activity-ui/src/main/resources/META-INF/spring/rest-activity-ui-context.xml
+++ /dev/null
@@ -1,50 +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="RESTActivityIcon"
-		class="net.sf.taverna.t2.activities.rest.ui.servicedescription.RESTActivityIcon">
-		<property name="colourManager" ref="colourManager" />
-	</bean>
-
-	<bean id="GenericRESTTemplateService"
-		class="net.sf.taverna.t2.activities.rest.ui.servicedescription.GenericRESTTemplateService" />
-
-	<bean id="ConfigureRESTActivityMenuAction"
-		class="net.sf.taverna.t2.activities.rest.ui.view.ConfigureRESTActivityMenuAction">
-		<property name="editManager" ref="editManager" />
-		<property name="fileManager" ref="fileManager" />
-		<property name="activityIconManager" ref="activityIconManager" />
-		<property name="serviceDescriptionRegistry" ref="serviceDescriptionRegistry" />
-		<property name="serviceRegistry" ref="serviceRegistry" />
-	</bean>
-	<bean id="AddRESTTemplateAction"
-		class="net.sf.taverna.t2.activities.rest.ui.menu.AddRESTTemplateAction">
-		<property name="editManager" ref="editManager" />
-		<property name="menuManager" ref="menuManager" />
-		<property name="selectionManager" ref="selectionManager" />
-		<property name="activityIconManager" ref="activityIconManager" />
-		<property name="serviceRegistry" ref="serviceRegistry" />
-	</bean>
-	<bean id="AddRESTTemplateMenuAction"
-		class="net.sf.taverna.t2.activities.rest.ui.menu.AddRESTTemplateMenuAction">
-		<property name="editManager" ref="editManager" />
-		<property name="menuManager" ref="menuManager" />
-		<property name="selectionManager" ref="selectionManager" />
-		<property name="activityIconManager" ref="activityIconManager" />
-		<property name="serviceRegistry" ref="serviceRegistry" />
-	</bean>
-
-	<bean id="RESTActivityMainContextViewFactory"
-		class="net.sf.taverna.t2.activities.rest.ui.view.RESTActivityMainContextViewFactory">
-		<property name="editManager" ref="editManager" />
-		<property name="fileManager" ref="fileManager" />
-		<property name="activityIconManager" ref="activityIconManager" />
-		<property name="colourManager" ref="colourManager" />
-		<property name="serviceDescriptionRegistry" ref="serviceDescriptionRegistry" />
-		<property name="serviceRegistry" ref="serviceRegistry" />
-	</bean>
-
-</beans>
diff --git a/taverna-rest-activity-ui/src/main/resources/net/sf/taverna/t2/activities/rest/ui/config/information.png b/taverna-rest-activity-ui/src/main/resources/net/sf/taverna/t2/activities/rest/ui/config/information.png
deleted file mode 100644
index 12cd1ae..0000000
--- a/taverna-rest-activity-ui/src/main/resources/net/sf/taverna/t2/activities/rest/ui/config/information.png
+++ /dev/null
Binary files differ
diff --git a/taverna-rest-activity-ui/src/main/resources/net/sf/taverna/t2/activities/rest/ui/config/mediatypes.txt b/taverna-rest-activity-ui/src/main/resources/net/sf/taverna/t2/activities/rest/ui/config/mediatypes.txt
deleted file mode 100644
index 4f0f0f4..0000000
--- a/taverna-rest-activity-ui/src/main/resources/net/sf/taverna/t2/activities/rest/ui/config/mediatypes.txt
+++ /dev/null
@@ -1,65 +0,0 @@
-application/atom+xml

-application/http

-application/javascript

-application/json

-application/octet-stream

-application/ogg

-application/pdf

-application/postscript

-application/rdf+xml

-application/sparql-query

-application/sparql-results+xml

-application/vnd.taverna.scufl+xml

-application/vnd.taverna.t2flow+xml

-application/x-gzip

-application/x-rar-compressed

-application/x-shockwave-flash

-application/x-tar

-application/x-www-form-urlencoded

-application/xhtml+xml

-application/xml

-application/zip

-audio/mp4

-audio/mpeg

-audio/mpeg4-generic

-audio/ogg

-audio/vnd.wave

-audio/vorbis

-audio/webm

-audio/x-ms-wma

-image/gif

-image/jpeg

-image/png

-image/svg+xml

-image/tiff

-image/vnd.microsoft.icon

-message/http

-message/rfc822

-multipart/alternative

-multipart/byteranges

-multipart/digest

-multipart/encrypted

-multipart/form-data

-multipart/mixed

-multipart/related

-multipart/signed

-text/css

-text/csv

-text/html

-text/javascript

-text/n3

-text/plain

-text/tab-separated-values

-text/turtle

-text/uri-list

-text/vcard

-text/xml

-video/H264

-video/MPV

-video/mp4

-video/mpeg

-video/mpeg4-generic

-video/ogg

-video/quicktime

-video/webm

-video/x-ms-wmv

diff --git a/taverna-rest-activity-ui/src/main/resources/net/sf/taverna/t2/activities/rest/ui/servicedescription/service_type_rest.png b/taverna-rest-activity-ui/src/main/resources/net/sf/taverna/t2/activities/rest/ui/servicedescription/service_type_rest.png
deleted file mode 100644
index a4276c2..0000000
--- a/taverna-rest-activity-ui/src/main/resources/net/sf/taverna/t2/activities/rest/ui/servicedescription/service_type_rest.png
+++ /dev/null
Binary files differ
diff --git a/taverna-spreadsheet-import-activity-ui/pom.xml b/taverna-spreadsheet-import-activity-ui/pom.xml
deleted file mode 100644
index 1672ebf..0000000
--- a/taverna-spreadsheet-import-activity-ui/pom.xml
+++ /dev/null
@@ -1,107 +0,0 @@
-<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</groupId>
-		<artifactId>taverna-parent</artifactId>
-		<version>3.0.1-SNAPSHOT</version>
-	</parent>
-	<groupId>net.sf.taverna.t2.ui-activities</groupId>
-	<artifactId>spreadsheet-import-activity-ui</artifactId>
-        <version>2.0-SNAPSHOT</version>
-	<packaging>bundle</packaging>
-	<name>Taverna 2 Spreadsheet Import Activity UI</name>
-	<dependencies>
-		<dependency>
-			<groupId>net.sf.taverna.t2.activities</groupId>
-			<artifactId>spreadsheet-import-activity</artifactId>
-			<version>${t2.activities.version}</version>
-		</dependency>
-		<!-- taverna lang -->
-		<dependency>
-			<groupId>net.sf.taverna.t2.lang</groupId>
-			<artifactId>ui</artifactId>
-			<version>${t2.lang.version}</version>
-		</dependency>
-		<!-- taverna ui-api -->
-		<dependency>
-			<groupId>net.sf.taverna.t2.ui-api</groupId>
-			<artifactId>activity-icons-api</artifactId>
-			<version>${t2.ui.api.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>net.sf.taverna.t2.ui-api</groupId>
-			<artifactId>activity-palette-api</artifactId>
-			<version>${t2.ui.api.version}</version>
-		</dependency>
-		<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>menu-api</artifactId>
-			<version>${t2.ui.api.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>net.sf.taverna.t2.ui-api</groupId>
-			<artifactId>activity-tools</artifactId>
-			<version>${t2.ui.api.version}</version>
-		</dependency>
-		<!-- taverna ui-components -->
-		<dependency>
-			<groupId>net.sf.taverna.t2.ui-components</groupId>
-			<artifactId>workflow-view</artifactId>
-			<version>${t2.ui.components.version}
-			</version>
-		</dependency>
-		<dependency>
-			<groupId>uk.org.taverna.scufl2</groupId>
-			<artifactId>scufl2-api</artifactId>
-			<version>${scufl2.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>com.fasterxml.jackson.core</groupId>
-			<artifactId>jackson-databind</artifactId>
-			<version>${jackson-databind.version}</version>
-		</dependency>
-
-		<dependency>
-			<groupId>org.apache.commons</groupId>
-			<artifactId>com.springsource.org.apache.commons.lang</artifactId>
-			<version>${commons.lang.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>org.apache.log4j</groupId>
-			<artifactId>com.springsource.org.apache.log4j</artifactId>
-			<version>${log4j.version}</version>
-		</dependency>
-	</dependencies>
-	<repositories>
-		<repository>
-			<releases />
-			<snapshots>
-				<enabled>false</enabled>
-			</snapshots>
-			<id>mygrid-repository</id>
-			<name>myGrid Repository</name>
-			<url>http://www.mygrid.org.uk/maven/repository
-			</url>
-		</repository>
-		<repository>
-			<releases>
-				<enabled>false</enabled>
-			</releases>
-			<snapshots />
-			<id>mygrid-snapshot-repository</id>
-			<name>myGrid Snapshot Repository</name>
-			<url>http://www.mygrid.org.uk/maven/snapshot-repository</url>
-		</repository>
-	</repositories>
-</project>
diff --git a/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/actions/SpreadsheetImportActivityConfigurationAction.java b/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/actions/SpreadsheetImportActivityConfigurationAction.java
deleted file mode 100644
index 0a70680..0000000
--- a/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/actions/SpreadsheetImportActivityConfigurationAction.java
+++ /dev/null
@@ -1,72 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2009 The University of Manchester
- *
- *  Modifications to the initial code base are copyright of their
- *  respective authors, or their employers as appropriate.
- *
- *  This program is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU Lesser General Public License
- *  as published by the Free Software Foundation; either version 2.1 of
- *  the License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful, but
- *  WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  Lesser General Public License for more details.
- *
- *  You should have received a copy of the GNU Lesser General Public
- *  License along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.activities.spreadsheet.actions;
-
-import java.awt.Frame;
-import java.awt.event.ActionEvent;
-
-import net.sf.taverna.t2.activities.spreadsheet.views.SpreadsheetImportConfigView;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.file.FileManager;
-import net.sf.taverna.t2.workbench.ui.actions.activity.ActivityConfigurationAction;
-import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ActivityConfigurationDialog;
-import uk.org.taverna.commons.services.ServiceRegistry;
-import uk.org.taverna.scufl2.api.activity.Activity;
-
-/**
- * The configuration action for a SpreadsheetImport activity.
- *
- * @author David Withers
- */
-@SuppressWarnings("serial")
-public class SpreadsheetImportActivityConfigurationAction extends ActivityConfigurationAction {
-
-	private static final String CONFIGURE = "Configure";
-
-	private final EditManager editManager;
-
-	private final FileManager fileManager;
-
-	private final ServiceRegistry serviceRegistry;
-
-	public SpreadsheetImportActivityConfigurationAction(Activity activity,
-			Frame owner, EditManager editManager, FileManager fileManager,
-			ActivityIconManager activityIconManager,
-			ServiceDescriptionRegistry serviceDescriptionRegistry, ServiceRegistry serviceRegistry) {
-		super(activity, activityIconManager, serviceDescriptionRegistry);
-		this.editManager = editManager;
-		this.fileManager = fileManager;
-		this.serviceRegistry = serviceRegistry;
-		putValue(NAME, CONFIGURE);
-	}
-
-	public void actionPerformed(ActionEvent e) {
-		final SpreadsheetImportConfigView spreadsheetConfigView = new SpreadsheetImportConfigView(
-				getActivity(), serviceRegistry);
-		final ActivityConfigurationDialog dialog = new ActivityConfigurationDialog(getActivity(),
-				spreadsheetConfigView, editManager);
-
-		ActivityConfigurationAction.setDialog(getActivity(), dialog, fileManager);
-
-	}
-}
diff --git a/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/il8n/SpreadsheetImportUIText.java b/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/il8n/SpreadsheetImportUIText.java
deleted file mode 100644
index 82f8436..0000000
--- a/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/il8n/SpreadsheetImportUIText.java
+++ /dev/null
@@ -1,46 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2009 The University of Manchester   
- * 
- *  Modifications to the initial code base are copyright of their
- *  respective authors, or their employers as appropriate.
- * 
- *  This program is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU Lesser General Public License
- *  as published by the Free Software Foundation; either version 2.1 of
- *  the License, or (at your option) any later version.
- *    
- *  This program is distributed in the hope that it will be useful, but
- *  WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  Lesser General Public License for more details.
- *    
- *  You should have received a copy of the GNU Lesser General Public
- *  License along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.activities.spreadsheet.il8n;
-
-import java.util.MissingResourceException;
-import java.util.ResourceBundle;
-
-/**
- * Access to a resource bundle containing UI text.
- *
- * @author David Withers
- */
-public class SpreadsheetImportUIText {
-	private static final String BUNDLE_NAME = "net.sf.taverna.t2.activities.spreadsheet.iln8.ui-text";
-
-	private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME);
-
-	private SpreadsheetImportUIText() {
-	}
-
-	public static String getString(String key) {
-		try {
-			return RESOURCE_BUNDLE.getString(key);
-		} catch (MissingResourceException e) {
-			return '!' + key + '!';
-		}
-	}
-}
diff --git a/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/menu/SpreadsheetImportAddTemplateAction.java b/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/menu/SpreadsheetImportAddTemplateAction.java
deleted file mode 100644
index 3073acb..0000000
--- a/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/menu/SpreadsheetImportAddTemplateAction.java
+++ /dev/null
@@ -1,110 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2009 The University of Manchester
- *
- *  Modifications to the initial code base are copyright of their
- *  respective authors, or their employers as appropriate.
- *
- *  This program is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU Lesser General Public License
- *  as published by the Free Software Foundation; either version 2.1 of
- *  the License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful, but
- *  WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  Lesser General Public License for more details.
- *
- *  You should have received a copy of the GNU Lesser General Public
- *  License along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.activities.spreadsheet.menu;
-
-import java.awt.event.ActionEvent;
-import java.net.URI;
-
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-
-import net.sf.taverna.t2.activities.spreadsheet.il8n.SpreadsheetImportUIText;
-import net.sf.taverna.t2.activities.spreadsheet.servicedescriptions.SpreadsheetImportTemplateService;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;
-import net.sf.taverna.t2.ui.menu.AbstractContextualMenuAction;
-import net.sf.taverna.t2.ui.menu.MenuManager;
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.selection.SelectionManager;
-import net.sf.taverna.t2.workbench.ui.workflowview.WorkflowView;
-import uk.org.taverna.commons.services.ServiceRegistry;
-import uk.org.taverna.scufl2.api.core.Workflow;
-
-/**
- * An action to add a spreadsheet import activity + a wrapping processor to the workflow.
- *
- * @author David Withers
- */
-@SuppressWarnings("serial")
-public class SpreadsheetImportAddTemplateAction extends AbstractContextualMenuAction {
-
-	private static final URI insertSection = URI
-			.create("http://taverna.sf.net/2009/contextMenu/insert");
-
-	private EditManager editManager;
-	private MenuManager menuManager;
-	private SelectionManager selectionManager;
-	private ActivityIconManager activityIconManager;
-	private ServiceDescriptionRegistry serviceDescriptionRegistry;
-	private ServiceRegistry serviceRegistry;
-
-	public SpreadsheetImportAddTemplateAction() {
-		super(insertSection, 700);
-	}
-
-	@Override
-	public boolean isEnabled() {
-		return super.isEnabled() && getContextualSelection().getSelection() instanceof Workflow;
-	}
-
-	@Override
-	protected Action createAction() {
-
-		AbstractAction action = new AbstractAction(
-				SpreadsheetImportUIText.getString("SpreadsheetImportAddTemplateAction.addMenu"),
-				activityIconManager.iconForActivity(SpreadsheetImportTemplateService.ACTIVITY_TYPE)) {
-
-			public void actionPerformed(ActionEvent e) {
-				WorkflowView.importServiceDescription(serviceDescriptionRegistry
-						.getServiceDescription(SpreadsheetImportTemplateService.ACTIVITY_TYPE), false,
-						editManager, menuManager, selectionManager, serviceRegistry);
-			}
-
-		};
-
-		return action;
-	}
-
-	public void setEditManager(EditManager editManager) {
-		this.editManager = editManager;
-	}
-
-	public void setMenuManager(MenuManager menuManager) {
-		this.menuManager = menuManager;
-	}
-
-	public void setSelectionManager(SelectionManager selectionManager) {
-		this.selectionManager = selectionManager;
-	}
-
-	public void setActivityIconManager(ActivityIconManager activityIconManager) {
-		this.activityIconManager = activityIconManager;
-	}
-
-	public void setServiceDescriptionRegistry(ServiceDescriptionRegistry serviceDescriptionRegistry) {
-		this.serviceDescriptionRegistry = serviceDescriptionRegistry;
-	}
-
-	public void setServiceRegistry(ServiceRegistry serviceRegistry) {
-		this.serviceRegistry = serviceRegistry;
-	}
-
-}
diff --git a/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/menu/SpreadsheetImportAddTemplateMenuAction.java b/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/menu/SpreadsheetImportAddTemplateMenuAction.java
deleted file mode 100644
index 048073a..0000000
--- a/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/menu/SpreadsheetImportAddTemplateMenuAction.java
+++ /dev/null
@@ -1,124 +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.activities.spreadsheet.menu;
-
-import java.awt.event.ActionEvent;
-import java.awt.event.InputEvent;
-import java.awt.event.KeyEvent;
-import java.net.URI;
-
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-import javax.swing.KeyStroke;
-
-import net.sf.taverna.t2.activities.spreadsheet.il8n.SpreadsheetImportUIText;
-import net.sf.taverna.t2.activities.spreadsheet.servicedescriptions.SpreadsheetImportTemplateService;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;
-import net.sf.taverna.t2.ui.menu.AbstractMenuAction;
-import net.sf.taverna.t2.ui.menu.DesignOnlyAction;
-import net.sf.taverna.t2.ui.menu.MenuManager;
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.selection.SelectionManager;
-import net.sf.taverna.t2.workbench.ui.workflowview.WorkflowView;
-import uk.org.taverna.commons.services.ServiceRegistry;
-
-/**
- * An action to add a spreadsheet import activity + a wrapping processor to the workflow.
- *
- * @author Alan R Williams
- */
-@SuppressWarnings("serial")
-public class SpreadsheetImportAddTemplateMenuAction extends AbstractMenuAction {
-
-	private static final URI ADD_SPREADSHEET_IMPORT_URI = URI
-			.create("http://taverna.sf.net/2008/t2workbench/menu#graphMenuAddSpreadsheetImport");
-
-	private static final URI INSERT = URI
-			.create("http://taverna.sf.net/2008/t2workbench/menu#insert");
-
-	private static String ADD_SPREADSHEET_IMPORT = SpreadsheetImportUIText
-			.getString("SpreadsheetImportAddTemplateAction.addMenu");
-
-	private EditManager editManager;
-	private MenuManager menuManager;
-	private SelectionManager selectionManager;
-	private ActivityIconManager activityIconManager;
-	private ServiceDescriptionRegistry serviceDescriptionRegistry;
-	private ServiceRegistry serviceRegistry;
-
-	public SpreadsheetImportAddTemplateMenuAction() {
-		super(INSERT, 700, ADD_SPREADSHEET_IMPORT_URI);
-	}
-
-	@Override
-	protected Action createAction() {
-		return new AddSpreadsheetImportMenuAction();
-	}
-
-	protected class AddSpreadsheetImportMenuAction extends AbstractAction implements
-			DesignOnlyAction {
-		AddSpreadsheetImportMenuAction() {
-			super();
-			putValue(SMALL_ICON,
-					activityIconManager
-							.iconForActivity(SpreadsheetImportTemplateService.ACTIVITY_TYPE));
-			putValue(NAME, ADD_SPREADSHEET_IMPORT);
-			putValue(SHORT_DESCRIPTION, ADD_SPREADSHEET_IMPORT);
-			putValue(
-					Action.ACCELERATOR_KEY,
-					KeyStroke.getKeyStroke(KeyEvent.VK_X, InputEvent.SHIFT_DOWN_MASK
-							| InputEvent.ALT_DOWN_MASK));
-
-		}
-
-		public void actionPerformed(ActionEvent e) {
-			WorkflowView.importServiceDescription(serviceDescriptionRegistry
-					.getServiceDescription(SpreadsheetImportTemplateService.ACTIVITY_TYPE), false,
-					editManager, menuManager, selectionManager, serviceRegistry);
-		}
-	}
-
-	public void setEditManager(EditManager editManager) {
-		this.editManager = editManager;
-	}
-
-	public void setMenuManager(MenuManager menuManager) {
-		this.menuManager = menuManager;
-	}
-
-	public void setSelectionManager(SelectionManager selectionManager) {
-		this.selectionManager = selectionManager;
-	}
-
-	public void setActivityIconManager(ActivityIconManager activityIconManager) {
-		this.activityIconManager = activityIconManager;
-	}
-
-	public void setServiceDescriptionRegistry(ServiceDescriptionRegistry serviceDescriptionRegistry) {
-		this.serviceDescriptionRegistry = serviceDescriptionRegistry;
-	}
-
-	public void setServiceRegistry(ServiceRegistry serviceRegistry) {
-		this.serviceRegistry = serviceRegistry;
-	}
-
-}
diff --git a/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/menu/SpreadsheetImportConfigureMenuAction.java b/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/menu/SpreadsheetImportConfigureMenuAction.java
deleted file mode 100644
index 7d1fa0a..0000000
--- a/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/menu/SpreadsheetImportConfigureMenuAction.java
+++ /dev/null
@@ -1,84 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2009 The University of Manchester
- *
- *  Modifications to the initial code base are copyright of their
- *  respective authors, or their employers as appropriate.
- *
- *  This program is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU Lesser General Public License
- *  as published by the Free Software Foundation; either version 2.1 of
- *  the License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful, but
- *  WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  Lesser General Public License for more details.
- *
- *  You should have received a copy of the GNU Lesser General Public
- *  License along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.activities.spreadsheet.menu;
-
-import javax.swing.Action;
-
-import uk.org.taverna.commons.services.ServiceRegistry;
-
-import net.sf.taverna.t2.activities.spreadsheet.actions.SpreadsheetImportActivityConfigurationAction;
-import net.sf.taverna.t2.activities.spreadsheet.il8n.SpreadsheetImportUIText;
-import net.sf.taverna.t2.activities.spreadsheet.servicedescriptions.SpreadsheetImportTemplateService;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;
-import net.sf.taverna.t2.workbench.activitytools.AbstractConfigureActivityMenuAction;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.file.FileManager;
-
-/**
- * Menu action for SpreadsheetImport activity configuration.
- *
- * @author David Withers
- */
-public class SpreadsheetImportConfigureMenuAction extends AbstractConfigureActivityMenuAction {
-
-	private EditManager editManager;
-	private FileManager fileManager;
-	private ActivityIconManager activityIconManager;
-	private ServiceDescriptionRegistry serviceDescriptionRegistry;
-	private ServiceRegistry serviceRegistry;
-
-	public SpreadsheetImportConfigureMenuAction() {
-		super(SpreadsheetImportTemplateService.ACTIVITY_TYPE);
-	}
-
-	@Override
-	protected Action createAction() {
-		Action result = new SpreadsheetImportActivityConfigurationAction(findActivity(),
-				getParentFrame(), editManager, fileManager, activityIconManager,
-				serviceDescriptionRegistry, serviceRegistry);
-		result.putValue(Action.NAME, SpreadsheetImportUIText
-				.getString("SpreadsheetImportConfigureMenuAction.configureMenu"));
-		addMenuDots(result);
-		return result;
-	}
-
-	public void setEditManager(EditManager editManager) {
-		this.editManager = editManager;
-	}
-
-	public void setFileManager(FileManager fileManager) {
-		this.fileManager = fileManager;
-	}
-
-	public void setActivityIconManager(ActivityIconManager activityIconManager) {
-		this.activityIconManager = activityIconManager;
-	}
-
-	public void setServiceDescriptionRegistry(ServiceDescriptionRegistry serviceDescriptionRegistry) {
-		this.serviceDescriptionRegistry = serviceDescriptionRegistry;
-	}
-
-	public void setServiceRegistry(ServiceRegistry serviceRegistry) {
-		this.serviceRegistry = serviceRegistry;
-	}
-
-}
diff --git a/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/servicedescriptions/SpreadsheetImportActivityIcon.java b/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/servicedescriptions/SpreadsheetImportActivityIcon.java
deleted file mode 100644
index 1987364..0000000
--- a/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/servicedescriptions/SpreadsheetImportActivityIcon.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2009 The University of Manchester
- *
- *  Modifications to the initial code base are copyright of their
- *  respective authors, or their employers as appropriate.
- *
- *  This program is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU Lesser General Public License
- *  as published by the Free Software Foundation; either version 2.1 of
- *  the License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful, but
- *  WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  Lesser General Public License for more details.
- *
- *  You should have received a copy of the GNU Lesser General Public
- *  License along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.activities.spreadsheet.servicedescriptions;
-
-import java.awt.Color;
-import java.net.URI;
-
-import javax.swing.Icon;
-import javax.swing.ImageIcon;
-
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI;
-import net.sf.taverna.t2.workbench.configuration.colour.ColourManager;
-
-/**
- * UI icon for the SpreadsheetImport Activity.
- *
- * @author David Withers
- */
-public class SpreadsheetImportActivityIcon implements ActivityIconSPI {
-
-	public static final String SPREADSHEET_COLOUR_HTML = "#40e0d0";
-	public static final Color SPREADSHEET_COLOUR = Color.decode(SPREADSHEET_COLOUR_HTML);
-
-	private static Icon icon = null;
-
-	@Override
-	public int canProvideIconScore(URI activityType) {
-		if (SpreadsheetImportTemplateService.ACTIVITY_TYPE.equals(activityType))
-			return DEFAULT_ICON + 1;
-		else
-			return NO_ICON;
-	}
-
-	@Override
-	public Icon getIcon(URI activityType) {
-		return getSpreadsheetImportIcon();
-	}
-
-	public static Icon getSpreadsheetImportIcon() {
-		if (icon == null) {
-			icon = new ImageIcon(
-					SpreadsheetImportActivityIcon.class.getResource("/spreadsheet-import.png"));
-		}
-		return icon;
-	}
-
-	public void setColourManager(ColourManager colourManager) {
-		colourManager.setPreferredColour(
-				"http://ns.taverna.org.uk/2010/activity/spreadsheet-import",
-				SPREADSHEET_COLOUR);
-	}
-
-}
diff --git a/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/servicedescriptions/SpreadsheetImportTemplateService.java b/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/servicedescriptions/SpreadsheetImportTemplateService.java
deleted file mode 100644
index 8057f2d..0000000
--- a/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/servicedescriptions/SpreadsheetImportTemplateService.java
+++ /dev/null
@@ -1,95 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2009 The University of Manchester
- *
- *  Modifications to the initial code base are copyright of their
- *  respective authors, or their employers as appropriate.
- *
- *  This program is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU Lesser General Public License
- *  as published by the Free Software Foundation; either version 2.1 of
- *  the License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful, but
- *  WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  Lesser General Public License for more details.
- *
- *  You should have received a copy of the GNU Lesser General Public
- *  License along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.activities.spreadsheet.servicedescriptions;
-
-import java.net.URI;
-
-import javax.swing.Icon;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-import net.sf.taverna.t2.activities.spreadsheet.il8n.SpreadsheetImportUIText;
-import net.sf.taverna.t2.servicedescriptions.AbstractTemplateService;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescription;
-import uk.org.taverna.scufl2.api.configurations.Configuration;
-
-/**
- * Definition of the SpreadsheetImport spreadsheet import template service.
- *
- * @author David Withers
- */
-public class SpreadsheetImportTemplateService extends AbstractTemplateService {
-
-	public static final URI ACTIVITY_TYPE = URI
-			.create("http://ns.taverna.org.uk/2010/activity/spreadsheet-import");
-
-	private static final String SERVICE_NAME = SpreadsheetImportUIText
-			.getString("SpreadsheetImportTemplateService.serviceName");
-
-	private static final URI providerId = URI
-			.create("http://taverna.sf.net/2010/service-provider/spreadsheet");
-
-	public String getName() {
-		return SERVICE_NAME;
-	}
-
-	@Override
-	public URI getActivityType() {
-		return ACTIVITY_TYPE;
-	}
-
-	@Override
-	public Configuration getActivityConfiguration() {
-		Configuration configuration = new Configuration();
-		configuration.setType(ACTIVITY_TYPE.resolve("#Config"));
-		ObjectNode json = (ObjectNode) configuration.getJson();
-		json.put("columnRange", json.objectNode().put("start", 0).put("end", 1));
-		json.put("rowRange", json.objectNode().put("start", 0).put("end", -1));
-		json.put("emptyCellValue", "");
-		json.put("allRows", true);
-		json.put("excludeFirstRow", false);
-		json.put("ignoreBlankRows", false);
-		json.put("emptyCellPolicy", "EMPTY_STRING");
-		json.put("outputFormat", "PORT_PER_COLUMN");
-		json.put("csvDelimiter", ",");
-		return configuration;
-	}
-
-	@Override
-	public Icon getIcon() {
-		return SpreadsheetImportActivityIcon.getSpreadsheetImportIcon();
-	}
-
-	@Override
-	public String getDescription() {
-		return SpreadsheetImportUIText
-				.getString("SpreadsheetImportTemplateService.serviceDescription");
-	}
-
-	public static ServiceDescription getServiceDescription() {
-		SpreadsheetImportTemplateService bts = new SpreadsheetImportTemplateService();
-		return bts.templateService;
-	}
-
-	public String getId() {
-		return providerId.toString();
-	}
-}
diff --git a/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/views/SpreadsheetImportConfigTableModel.java b/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/views/SpreadsheetImportConfigTableModel.java
deleted file mode 100644
index 0409b8e..0000000
--- a/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/views/SpreadsheetImportConfigTableModel.java
+++ /dev/null
@@ -1,190 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2009 The University of Manchester
- *
- *  Modifications to the initial code base are copyright of their
- *  respective authors, or their employers as appropriate.
- *
- *  This program is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU Lesser General Public License
- *  as published by the Free Software Foundation; either version 2.1 of
- *  the License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful, but
- *  WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  Lesser General Public License for more details.
- *
- *  You should have received a copy of the GNU Lesser General Public
- *  License along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-
-package net.sf.taverna.t2.activities.spreadsheet.views;
-
-import java.util.HashMap;
-import java.util.Map;
-
-import javax.swing.table.AbstractTableModel;
-
-import net.sf.taverna.t2.activities.spreadsheet.SpreadsheetUtils;
-import net.sf.taverna.t2.activities.spreadsheet.il8n.SpreadsheetImportUIText;
-
-/**
- * TableModel for mapping column labels to port names.
- * <p>
- * The default mapping is for the port name to be the same as the column label. The
- * columnToPortMapping only contains entries for port names that are not the same as the column
- * label.
- *
- * @author David Withers
- */
-@SuppressWarnings("serial")
-public class SpreadsheetImportConfigTableModel extends AbstractTableModel {
-
-	private Map<String, String> columnToPortMapping;
-
-	private int fromColumn, toColumn;
-
-	/**
-	 * Constructs a TableModel that maps column labels to port names for the specified range of
-	 * columns.
-	 *
-	 * @param fromColumn
-	 *            the start of the column range
-	 * @param toColumn
-	 *            the end of the column range
-	 * @param columnToPortMapping
-	 *            existing column to port mappings (can be null)
-	 */
-	public SpreadsheetImportConfigTableModel(String fromColumn, String toColumn,
-			Map<String, String> columnToPortMapping) {
-		if (columnToPortMapping == null) {
-			this.columnToPortMapping = new HashMap<String, String>();
-		} else {
-			this.columnToPortMapping = new HashMap<String, String>(columnToPortMapping);
-		}
-		this.fromColumn = SpreadsheetUtils.getColumnIndex(fromColumn);
-		this.toColumn = SpreadsheetUtils.getColumnIndex(toColumn);
-	}
-
-	/**
-	 * Sets the start of the column range.
-	 *
-	 * @param fromColumn
-	 *            the start of the column range
-	 */
-	public void setFromColumn(int fromColumn) {
-		if (this.fromColumn != fromColumn) {
-			this.fromColumn = fromColumn;
-			fireTableStructureChanged();
-		}
-	}
-
-	/**
-	 * Sets the end of the column range.
-	 *
-	 * @param toColumn
-	 *            the end of the column range
-	 */
-	public void setToColumn(int toColumn) {
-		if (this.toColumn != toColumn) {
-			this.toColumn = toColumn;
-			fireTableStructureChanged();
-		}
-	}
-
-	/**
-	 * Returns the port name for the given column label.
-	 * <p>
-	 * If the columnLabel is the columnToPortMapping the value is returned; otherwise the
-	 * columnLabel is returned.
-	 *
-	 * @param columnLabel
-	 *            the column to find the port name for
-	 * @return the port name for the given column label
-	 */
-	public String getPortName(String columnLabel) {
-		String portName;
-		if (columnToPortMapping.containsKey(columnLabel)) {
-			portName = columnToPortMapping.get(columnLabel);
-		} else {
-			portName = columnLabel;
-		}
-		return portName;
-	}
-
-	/**
-	 * Sets the port name for the column label.
-	 * <p>
-	 * If the port name is not the same as the column label the port name is added the
-	 * columnToPortMapping.
-	 *
-	 * @param columnLabel
-	 * @param portName
-	 */
-	public void setPortName(String columnLabel, String portName) {
-		if (columnLabel.equals(portName)) {
-			columnToPortMapping.remove(columnLabel);
-		} else {
-			columnToPortMapping.put(columnLabel, portName);
-		}
-	}
-
-	/**
-	 * Returns the map of column labels to port names.
-	 * <p>
-	 * The map only contains entries for port names that are not the same as their corresponding
-	 * column label.
-	 *
-	 * @return the map of column labels to port names
-	 */
-	public Map<String, String> getColumnToPortMapping() {
-		return columnToPortMapping;
-	}
-
-	// TableModel methods
-
-	@Override
-	public Class<?> getColumnClass(int columnIndex) {
-		return String.class;
-	}
-
-	public int getColumnCount() {
-		return 2;
-	}
-
-	@Override
-	public String getColumnName(int columnIndex) {
-		if (columnIndex == 0) {
-			return SpreadsheetImportUIText.getString("SpreadsheetImportConfigTableModel.column");
-		} else {
-			return SpreadsheetImportUIText.getString("SpreadsheetImportConfigTableModel.portName");
-		}
-	}
-
-	public int getRowCount() {
-		return toColumn - fromColumn + 1;
-	}
-
-	public Object getValueAt(int rowIndex, int columnIndex) {
-		String columnLabel = SpreadsheetUtils.getColumnLabel(rowIndex + fromColumn);
-		if (columnIndex == 0) {
-			return columnLabel;
-		} else {
-			return getPortName(columnLabel);
-		}
-	}
-
-	@Override
-	public boolean isCellEditable(int rowIndex, int columnIndex) {
-		return columnIndex == 1;
-	}
-
-	@Override
-	public void setValueAt(Object value, int rowIndex, int columnIndex) {
-		if (columnIndex == 1) {
-			setPortName(SpreadsheetUtils.getColumnLabel(rowIndex + fromColumn), value.toString());
-		}
-	}
-
-}
diff --git a/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/views/SpreadsheetImportConfigView.java b/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/views/SpreadsheetImportConfigView.java
deleted file mode 100644
index af57c44..0000000
--- a/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/views/SpreadsheetImportConfigView.java
+++ /dev/null
@@ -1,1082 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2009 The University of Manchester
- *
- *  Modifications to the initial code base are copyright of their
- *  respective authors, or their employers as appropriate.
- *
- *  This program is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU Lesser General Public License
- *  as published by the Free Software Foundation; either version 2.1 of
- *  the License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful, but
- *  WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  Lesser General Public License for more details.
- *
- *  You should have received a copy of the GNU Lesser General Public
- *  License along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.activities.spreadsheet.views;
-
-import java.awt.BorderLayout;
-import java.awt.CardLayout;
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Dimension;
-import java.awt.FlowLayout;
-import java.awt.Font;
-import java.awt.Graphics;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.Insets;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.ItemEvent;
-import java.awt.event.ItemListener;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.Map;
-import java.util.Map.Entry;
-import java.util.Set;
-import java.util.Stack;
-
-import javax.swing.ButtonGroup;
-import javax.swing.DefaultCellEditor;
-import javax.swing.JButton;
-import javax.swing.JCheckBox;
-import javax.swing.JComponent;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JRadioButton;
-import javax.swing.JScrollPane;
-import javax.swing.JTable;
-import javax.swing.JTextField;
-import javax.swing.SwingConstants;
-import javax.swing.border.Border;
-import javax.swing.border.CompoundBorder;
-import javax.swing.border.EmptyBorder;
-import javax.swing.event.DocumentEvent;
-import javax.swing.event.DocumentListener;
-import javax.swing.table.DefaultTableColumnModel;
-import javax.swing.table.TableCellEditor;
-import javax.swing.table.TableColumn;
-import javax.swing.text.AttributeSet;
-import javax.swing.text.BadLocationException;
-import javax.swing.text.JTextComponent;
-import javax.swing.text.PlainDocument;
-
-import net.sf.taverna.t2.activities.spreadsheet.Range;
-import net.sf.taverna.t2.activities.spreadsheet.SpreadsheetUtils;
-import net.sf.taverna.t2.activities.spreadsheet.il8n.SpreadsheetImportUIText;
-import net.sf.taverna.t2.lang.ui.DialogTextArea;
-import net.sf.taverna.t2.lang.ui.icons.Icons;
-import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ActivityConfigurationPanel;
-
-import org.apache.commons.lang.StringEscapeUtils;
-import org.apache.log4j.Logger;
-
-import uk.org.taverna.commons.services.ServiceRegistry;
-import uk.org.taverna.scufl2.api.activity.Activity;
-
-import com.fasterxml.jackson.databind.JsonNode;
-import com.fasterxml.jackson.databind.node.ArrayNode;
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-/**
- * Configuration panel for the spreadsheet import activity.
- *
- * @author David Withers
- */
-@SuppressWarnings("serial")
-public class SpreadsheetImportConfigView extends ActivityConfigurationPanel {
-
-	private static final String INCONSISTENT_ROW_MESSAGE = SpreadsheetImportUIText
-			.getString("SpreadsheetImportConfigView.INCONSISTENT_ROW_MESSAGE");
-
-	private static final String INCONSISTENT_COLUMN_MESSAGE = SpreadsheetImportUIText
-			.getString("SpreadsheetImportConfigView.INCONSISTENT_COLUMN_MESSAGE");
-
-	private static final String FROM_COLUMN_ERROR_MESSAGE = SpreadsheetImportUIText
-			.getString("SpreadsheetImportConfigView.FROM_COLUMN_ERROR_MESSAGE");
-
-	private static final String TO_COLUMN_ERROR_MESSAGE = SpreadsheetImportUIText
-			.getString("SpreadsheetImportConfigView.TO_COLUMN_ERROR_MESSAGE");
-
-	private static final String FROM_ROW_ERROR_MESSAGE = SpreadsheetImportUIText
-			.getString("SpreadsheetImportConfigView.FROM_ROW_ERROR_MESSAGE");
-
-	private static final String TO_ROW_ERROR_MESSAGE = SpreadsheetImportUIText
-			.getString("SpreadsheetImportConfigView.TO_ROW_ERROR_MESSAGE");
-
-	private static final String DEFAULT_MESSAGE = SpreadsheetImportUIText
-			.getString("SpreadsheetImportConfigView.DEFAULT_MESSAGE");
-
-	private static final String EMPTY_FROM_ROW_ERROR_MESSAGE = SpreadsheetImportUIText
-			.getString("SpreadsheetImportConfigView.EMPTY_FROM_ROW_ERROR_MESSAGE");
-
-	private static final String EMPTY_FROM_COLUMN_ERROR_MESSAGE = SpreadsheetImportUIText
-			.getString("SpreadsheetImportConfigView.EMPTY_FROM_COLUMN_ERROR_MESSAGE");
-
-	private static final String EMPTY_TO_COLUMN_ERROR_MESSAGE = SpreadsheetImportUIText
-			.getString("SpreadsheetImportConfigView.EMPTY_TO_COLUMN_ERROR_MESSAGE");
-
-	private static final String DUPLICATE_PORT_NAME_ERROR_MESSAGE = SpreadsheetImportUIText
-			.getString("SpreadsheetImportConfigView.DUPLICATE_PORT_NAME_ERROR_MESSAGE");
-
-	private static Logger logger = Logger.getLogger(SpreadsheetImportConfigView.class);
-
-	private JPanel titlePanel, contentPanel, buttonPanel, page1, page2;
-
-	private JLabel titleLabel, titleIcon, rowLabel, columnLabel;
-
-	private JLabel emptyCellLabel, outputFormatLabel, outputFormatDelimiterLabel, columnMappingLabel;
-
-	private DialogTextArea titleMessage;
-
-	private JTextField columnFromValue, columnToValue, rowFromValue, rowToValue;
-
-	private JTextField emptyCellUserDefinedValue, outputFormatDelimiter;
-
-	private JCheckBox rowSelectAllOption, rowExcludeFirstOption, rowIgnoreBlankRows;
-
-	private ButtonGroup emptyCellButtonGroup, outputFormatButtonGroup;
-
-	private JRadioButton emptyCellEmptyStringOption, emptyCellUserDefinedOption,
-	emptyCellErrorValueOption;
-
-	private JRadioButton outputFormatMultiplePort, outputFormatSinglePort;
-
-	private JTable columnMappingTable;
-
-	private SpreadsheetImportConfigTableModel columnMappingTableModel;
-
-	private JButton nextButton, backButton;
-
-	private CardLayout cardLayout = new CardLayout();
-
-	private Stack<String> warningMessages = new Stack<String>();
-
-	private Stack<String> errorMessages = new Stack<String>();
-
-	private ObjectNode newConfiguration;
-
-	private final ServiceRegistry serviceRegistry;
-
-	/**
-	 * Constructs a configuration view for an SpreadsheetImport Activity.
-	 *
-	 * @param activity
-	 */
-	public SpreadsheetImportConfigView(Activity activity, ServiceRegistry serviceRegistry) {
-		super(activity);
-		this.serviceRegistry = serviceRegistry;
-		initialise();
-	}
-
-	@Override
-	protected void initialise() {
-		super.initialise();
-		newConfiguration = getJson().deepCopy();
-
-		// title
-		titlePanel = new JPanel(new BorderLayout());
-		titlePanel.setBackground(Color.WHITE);
-		addDivider(titlePanel, SwingConstants.BOTTOM, true);
-
-		titleLabel = new JLabel(SpreadsheetImportUIText.getString("SpreadsheetImportConfigView.panelTitle"));
-		titleLabel.setFont(titleLabel.getFont().deriveFont(Font.BOLD, 13.5f));
-		titleIcon = new JLabel("");
-		titleMessage = new DialogTextArea(DEFAULT_MESSAGE);
-		titleMessage.setMargin(new Insets(5, 10, 10, 10));
-		// titleMessage.setMinimumSize(new Dimension(0, 30));
-		titleMessage.setFont(titleMessage.getFont().deriveFont(11f));
-		titleMessage.setEditable(false);
-		titleMessage.setFocusable(false);
-		// titleMessage.setFont(titleLabel.getFont().deriveFont(Font.PLAIN,
-		// 12f));
-
-		// column range
-		columnLabel = new JLabel(SpreadsheetImportUIText
-				.getString("SpreadsheetImportConfigView.columnSectionLabel"));
-
-		JsonNode columnRange = newConfiguration.get("columnRange");
-		columnFromValue = new JTextField(new UpperCaseDocument(), SpreadsheetUtils.getColumnLabel(columnRange.get("start").intValue()), 4);
-		columnFromValue.setMinimumSize(columnFromValue.getPreferredSize());
-		columnToValue = new JTextField(new UpperCaseDocument(), SpreadsheetUtils.getColumnLabel(columnRange.get("end").intValue()), 4);
-		columnToValue.setMinimumSize(columnToValue.getPreferredSize());
-
-		columnFromValue.getDocument().addDocumentListener(new DocumentListener() {
-			public void changedUpdate(DocumentEvent e) {
-			}
-
-			public void insertUpdate(DocumentEvent e) {
-				checkValue(columnFromValue.getText());
-			}
-
-			public void removeUpdate(DocumentEvent e) {
-				checkValue(columnFromValue.getText());
-			}
-
-			private void checkValue(String text) {
-				if (text.trim().equals("")) {
-					addErrorMessage(EMPTY_FROM_COLUMN_ERROR_MESSAGE);
-				} else if (text.trim().matches("[A-Za-z]+")) {
-					String fromColumn = columnFromValue.getText().toUpperCase();
-					String toColumn = columnToValue.getText().toUpperCase();
-					int fromColumnIndex = SpreadsheetUtils.getColumnIndex(fromColumn);
-					int toColumnIndex = SpreadsheetUtils.getColumnIndex(toColumn);
-					if (checkColumnRange(fromColumnIndex, toColumnIndex)) {
-						columnMappingTableModel.setFromColumn(fromColumnIndex);
-						columnMappingTableModel.setToColumn(toColumnIndex);
-						newConfiguration.set("columnRange", newConfiguration.objectNode().put("start", fromColumnIndex).put("end", toColumnIndex));
-						validatePortNames();
-					}
-					removeErrorMessage(FROM_COLUMN_ERROR_MESSAGE);
-					removeErrorMessage(EMPTY_FROM_COLUMN_ERROR_MESSAGE);
-				} else {
-					addErrorMessage(FROM_COLUMN_ERROR_MESSAGE);
-					removeErrorMessage(EMPTY_FROM_COLUMN_ERROR_MESSAGE);
-				}
-			}
-
-		});
-
-		columnToValue.getDocument().addDocumentListener(new DocumentListener() {
-			public void changedUpdate(DocumentEvent e) {
-			}
-
-			public void insertUpdate(DocumentEvent e) {
-				checkValue(columnToValue.getText());
-			}
-
-			public void removeUpdate(DocumentEvent e) {
-				checkValue(columnToValue.getText());
-			}
-
-			private void checkValue(String text) {
-				if (text.trim().equals("")) {
-					addErrorMessage(EMPTY_TO_COLUMN_ERROR_MESSAGE);
-				} else if (text.trim().matches("[A-Za-z]+")) {
-					String fromColumn = columnFromValue.getText().toUpperCase();
-					String toColumn = columnToValue.getText().toUpperCase();
-					int fromColumnIndex = SpreadsheetUtils.getColumnIndex(fromColumn);
-					int toColumnIndex = SpreadsheetUtils.getColumnIndex(toColumn);
-					if (checkColumnRange(fromColumnIndex, toColumnIndex)) {
-						columnMappingTableModel.setFromColumn(fromColumnIndex);
-						columnMappingTableModel.setToColumn(toColumnIndex);
-						newConfiguration.set("columnRange", newConfiguration.objectNode().put("start", fromColumnIndex).put("end", toColumnIndex));
-						validatePortNames();
-					}
-					removeErrorMessage(TO_COLUMN_ERROR_MESSAGE);
-					removeErrorMessage(EMPTY_TO_COLUMN_ERROR_MESSAGE);
-
-				} else {
-					addErrorMessage(TO_COLUMN_ERROR_MESSAGE);
-					removeErrorMessage(EMPTY_TO_COLUMN_ERROR_MESSAGE);
-				}
-			}
-		});
-
-		// row range
-		rowLabel = new JLabel(SpreadsheetImportUIText.getString("SpreadsheetImportConfigView.rowSectionLabel"));
-		addDivider(rowLabel, SwingConstants.TOP, false);
-
-		rowSelectAllOption = new JCheckBox(SpreadsheetImportUIText
-				.getString("SpreadsheetImportConfigView.selectAllRowsOption"));
-		rowExcludeFirstOption = new JCheckBox(SpreadsheetImportUIText
-				.getString("SpreadsheetImportConfigView.excludeHeaderRowOption"));
-		rowIgnoreBlankRows = new JCheckBox(SpreadsheetImportUIText
-				.getString("SpreadsheetImportConfigView.ignoreBlankRowsOption"));
-		rowSelectAllOption.setFocusable(false);
-		rowExcludeFirstOption.setFocusable(false);
-
-		JsonNode rowRange = newConfiguration.get("rowRange");
-		rowFromValue = new JTextField(new NumericDocument(), String.valueOf(rowRange.get("start").intValue() + 1), 4);
-		if (rowRange.get("end").intValue() == -1) {
-			rowToValue = new JTextField(new NumericDocument(), "", 4);
-		} else {
-			rowToValue = new JTextField(new NumericDocument(), String.valueOf(rowRange.get("end").intValue() + 1), 4);
-		}
-		rowFromValue.setMinimumSize(rowFromValue.getPreferredSize());
-		rowToValue.setMinimumSize(rowToValue.getPreferredSize());
-
-		if (newConfiguration.get("allRows").booleanValue()) {
-			rowSelectAllOption.setSelected(true);
-			rowFromValue.setEditable(false);
-			rowFromValue.setEnabled(false);
-			rowToValue.setEditable(false);
-			rowToValue.setEnabled(false);
-		} else {
-			rowExcludeFirstOption.setEnabled(false);
-		}
-		rowExcludeFirstOption.setSelected(newConfiguration.get("excludeFirstRow").booleanValue());
-		rowIgnoreBlankRows.setSelected(newConfiguration.get("ignoreBlankRows").booleanValue());
-
-		rowFromValue.getDocument().addDocumentListener(new DocumentListener() {
-			public void changedUpdate(DocumentEvent e) {
-			}
-
-			public void insertUpdate(DocumentEvent e) {
-				checkValue(rowFromValue.getText());
-			}
-
-			public void removeUpdate(DocumentEvent e) {
-				checkValue(rowFromValue.getText());
-			}
-
-			private void checkValue(String text) {
-				if (text.trim().equals("")) {
-					addErrorMessage(EMPTY_FROM_ROW_ERROR_MESSAGE);
-				} else if (text.trim().matches("[1-9][0-9]*")) {
-					checkRowRange(rowFromValue.getText(), rowToValue.getText());
-					int fromRow = Integer.parseInt(rowFromValue.getText());
-					((ObjectNode) newConfiguration.get("rowRange")).put("start", fromRow - 1);
-					removeErrorMessage(FROM_ROW_ERROR_MESSAGE);
-					removeErrorMessage(EMPTY_FROM_ROW_ERROR_MESSAGE);
-				} else {
-					addErrorMessage(FROM_ROW_ERROR_MESSAGE);
-					removeErrorMessage(EMPTY_FROM_ROW_ERROR_MESSAGE);
-				}
-			}
-		});
-
-		rowToValue.getDocument().addDocumentListener(new DocumentListener() {
-			public void changedUpdate(DocumentEvent e) {
-			}
-
-			public void insertUpdate(DocumentEvent e) {
-				checkValue(rowToValue.getText());
-			}
-
-			public void removeUpdate(DocumentEvent e) {
-				checkValue(rowToValue.getText());
-			}
-
-			private void checkValue(String text) {
-				if (text.trim().equals("")) {
-					((ObjectNode) newConfiguration.get("rowRange")).put("end", -1);
-					removeErrorMessage(TO_ROW_ERROR_MESSAGE);
-					removeErrorMessage(INCONSISTENT_ROW_MESSAGE);
-				} else if (text.trim().matches("[0-9]+")) {
-					checkRowRange(rowFromValue.getText(), rowToValue.getText());
-					int toRow = Integer.parseInt(rowToValue.getText());
-					((ObjectNode) newConfiguration.get("rowRange")).put("end", toRow - 1);
-					removeErrorMessage(TO_ROW_ERROR_MESSAGE);
-				} else {
-					addErrorMessage(TO_ROW_ERROR_MESSAGE);
-				}
-			}
-		});
-
-		rowSelectAllOption.addItemListener(new ItemListener() {
-			public void itemStateChanged(ItemEvent e) {
-				if (e.getStateChange() == ItemEvent.SELECTED) {
-					newConfiguration.put("allRows", true);
-					rowExcludeFirstOption.setEnabled(true);
-					if (rowExcludeFirstOption.isSelected()) {
-						rowFromValue.setText("2");
-					} else {
-						rowFromValue.setText("1");
-					}
-					rowToValue.setText("");
-					rowFromValue.setEditable(false);
-					rowFromValue.setEnabled(false);
-					rowToValue.setEditable(false);
-					rowToValue.setEnabled(false);
-				} else {
-					newConfiguration.put("allRows", false);
-					rowExcludeFirstOption.setEnabled(false);
-					rowFromValue.setEditable(true);
-					rowFromValue.setEnabled(true);
-					rowToValue.setEditable(true);
-					rowToValue.setEnabled(true);
-				}
-			}
-		});
-
-		rowExcludeFirstOption.addItemListener(new ItemListener() {
-			public void itemStateChanged(ItemEvent e) {
-				if (e.getStateChange() == ItemEvent.SELECTED) {
-					newConfiguration.put("excludeFirstRow", true);
-					rowFromValue.setText("2");
-					((ObjectNode) newConfiguration.get("rowRange")).put("start", 1);
-				} else {
-					newConfiguration.put("excludeFirstRow", false);
-					rowFromValue.setText("1");
-					((ObjectNode) newConfiguration.get("rowRange")).put("start", 0);
-				}
-			}
-		});
-
-		rowIgnoreBlankRows.addItemListener(new ItemListener() {
-			public void itemStateChanged(ItemEvent e) {
-				newConfiguration.put("ignoreBlankRows", e.getStateChange() == ItemEvent.SELECTED);
-			}
-		});
-
-		// empty cells
-		emptyCellLabel = new JLabel(SpreadsheetImportUIText
-				.getString("SpreadsheetImportConfigView.emptyCellSectionLabel"));
-		addDivider(emptyCellLabel, SwingConstants.TOP, false);
-
-		emptyCellButtonGroup = new ButtonGroup();
-		emptyCellEmptyStringOption = new JRadioButton(SpreadsheetImportUIText
-				.getString("SpreadsheetImportConfigView.emptyStringOption"));
-		emptyCellUserDefinedOption = new JRadioButton(SpreadsheetImportUIText
-				.getString("SpreadsheetImportConfigView.userDefinedOption"));
-		emptyCellErrorValueOption = new JRadioButton(SpreadsheetImportUIText
-				.getString("SpreadsheetImportConfigView.generateErrorOption"));
-		emptyCellEmptyStringOption.setFocusable(false);
-		emptyCellUserDefinedOption.setFocusable(false);
-		emptyCellErrorValueOption.setFocusable(false);
-
-		emptyCellUserDefinedValue = new JTextField(newConfiguration.get("emptyCellValue").textValue());
-
-		emptyCellButtonGroup.add(emptyCellEmptyStringOption);
-		emptyCellButtonGroup.add(emptyCellUserDefinedOption);
-		emptyCellButtonGroup.add(emptyCellErrorValueOption);
-
-		if (newConfiguration.get("emptyCellPolicy").textValue().equals("GENERATE_ERROR")) {
-			emptyCellErrorValueOption.setSelected(true);
-			emptyCellUserDefinedValue.setEnabled(false);
-			emptyCellUserDefinedValue.setEditable(false);
-		} else if (newConfiguration.get("emptyCellPolicy").textValue().equals("EMPTY_STRING")) {
-			emptyCellEmptyStringOption.setSelected(true);
-			emptyCellUserDefinedValue.setEnabled(false);
-			emptyCellUserDefinedValue.setEditable(false);
-		} else {
-			emptyCellUserDefinedOption.setSelected(true);
-			emptyCellUserDefinedValue.setText(newConfiguration.get("emptyCellValue").textValue());
-			emptyCellUserDefinedValue.setEnabled(true);
-			emptyCellUserDefinedValue.setEditable(true);
-		}
-
-		emptyCellEmptyStringOption.addActionListener(new ActionListener() {
-			public void actionPerformed(ActionEvent e) {
-				newConfiguration.put("emptyCellPolicy", "EMPTY_STRING");
-				emptyCellUserDefinedValue.setEnabled(false);
-				emptyCellUserDefinedValue.setEditable(false);
-			}
-		});
-		emptyCellUserDefinedOption.addActionListener(new ActionListener() {
-			public void actionPerformed(ActionEvent e) {
-				newConfiguration.put("emptyCellPolicy", "USER_DEFINED");
-				emptyCellUserDefinedValue.setEnabled(true);
-				emptyCellUserDefinedValue.setEditable(true);
-				emptyCellUserDefinedValue.requestFocusInWindow();
-			}
-		});
-		emptyCellErrorValueOption.addActionListener(new ActionListener() {
-			public void actionPerformed(ActionEvent e) {
-				newConfiguration.put("emptyCellPolicy", "GENERATE_ERROR");
-				emptyCellUserDefinedValue.setEnabled(false);
-				emptyCellUserDefinedValue.setEditable(false);
-			}
-		});
-
-		emptyCellUserDefinedValue.getDocument().addDocumentListener(new DocumentListener() {
-			public void changedUpdate(DocumentEvent e) {
-				newConfiguration.put("emptyCellValue", emptyCellUserDefinedValue.getText());
-			}
-
-			public void insertUpdate(DocumentEvent e) {
-				newConfiguration.put("emptyCellValue", emptyCellUserDefinedValue.getText());
-			}
-
-			public void removeUpdate(DocumentEvent e) {
-				newConfiguration.put("emptyCellValue", emptyCellUserDefinedValue.getText());
-			}
-		});
-
-		// column mappings
-		columnMappingLabel = new JLabel(SpreadsheetImportUIText
-				.getString("SpreadsheetImportConfigView.columnMappingSectionLabel"));
-		addDivider(columnMappingLabel, SwingConstants.TOP, false);
-
-		Map<String, String> columnToPortMapping = new HashMap<>();
-		if (newConfiguration.has("columnNames")) {
-			for (JsonNode columnName : newConfiguration.get("columnNames")) {
-				columnToPortMapping.put(columnName.get("column").textValue(), columnName.get("port").textValue());
-			}
-		}
-		columnMappingTableModel = new SpreadsheetImportConfigTableModel(columnFromValue.getText(),
-				columnToValue.getText(), columnToPortMapping);
-
-		columnMappingTable = new JTable();
-		columnMappingTable.setRowSelectionAllowed(false);
-		columnMappingTable.getTableHeader().setReorderingAllowed(false);
-		columnMappingTable.setGridColor(Color.LIGHT_GRAY);
-		// columnMappingTable.setFocusable(false);
-
-		columnMappingTable.setColumnModel(new DefaultTableColumnModel() {
-			public TableColumn getColumn(int columnIndex) {
-				TableColumn column = super.getColumn(columnIndex);
-				if (columnIndex == 0) {
-					column.setMaxWidth(100);
-				}
-				return column;
-			}
-		});
-
-		TableCellEditor defaultEditor = columnMappingTable.getDefaultEditor(String.class);
-		if (defaultEditor instanceof DefaultCellEditor) {
-			DefaultCellEditor defaultCellEditor = (DefaultCellEditor) defaultEditor;
-			defaultCellEditor.setClickCountToStart(1);
-			Component editorComponent = defaultCellEditor.getComponent();
-			if (editorComponent instanceof JTextComponent) {
-				final JTextComponent textField = (JTextComponent) editorComponent;
-				textField.getDocument().addDocumentListener(new DocumentListener() {
-					public void changedUpdate(DocumentEvent e) {
-						updateModel(textField.getText());
-					}
-
-					public void insertUpdate(DocumentEvent e) {
-						updateModel(textField.getText());
-					}
-
-					public void removeUpdate(DocumentEvent e) {
-						updateModel(textField.getText());
-					}
-
-					private void updateModel(String text) {
-						int row = columnMappingTable.getEditingRow();
-						int column = columnMappingTable.getEditingColumn();
-						columnMappingTableModel.setValueAt(text, row, column);
-
-						ArrayNode columnNames = newConfiguration.arrayNode();
-						Map<String, String> columnToPortMapping = columnMappingTableModel.getColumnToPortMapping();
-						for (Entry<String,String> entry : columnToPortMapping.entrySet()) {
-							columnNames.add(newConfiguration.objectNode().put("column", entry.getKey()).put("port", entry.getValue()));
-						}
-						newConfiguration.put("columnNames", columnNames);
-						validatePortNames();
-					}
-
-				});
-			}
-		}
-
-		columnMappingTable.setModel(columnMappingTableModel);
-
-		// output format
-		outputFormatLabel = new JLabel(SpreadsheetImportUIText
-				.getString("SpreadsheetImportConfigView.outputFormatSectionLabel"));
-
-		outputFormatMultiplePort = new JRadioButton(SpreadsheetImportUIText
-				.getString("SpreadsheetImportConfigView.multiplePortOption"));
-		outputFormatSinglePort = new JRadioButton(SpreadsheetImportUIText
-				.getString("SpreadsheetImportConfigView.singlePortOption"));
-		outputFormatMultiplePort.setFocusable(false);
-		outputFormatSinglePort.setFocusable(false);
-
-		outputFormatDelimiterLabel = new JLabel(SpreadsheetImportUIText
-				.getString("SpreadsheetImportConfigView.userDefinedCsvDelimiter"));
-		outputFormatDelimiter = new JTextField(newConfiguration.get("csvDelimiter").textValue(), 5);
-
-		outputFormatButtonGroup = new ButtonGroup();
-		outputFormatButtonGroup.add(outputFormatMultiplePort);
-		outputFormatButtonGroup.add(outputFormatSinglePort);
-
-		if (newConfiguration.get("outputFormat").textValue().equals("PORT_PER_COLUMN")) {
-			outputFormatMultiplePort.setSelected(true);
-			outputFormatDelimiterLabel.setEnabled(false);
-			outputFormatDelimiter.setEnabled(false);
-		} else {
-			outputFormatSinglePort.setSelected(true);
-			columnMappingLabel.setEnabled(false);
-			enableTable(columnMappingTable, false);
-		}
-
-		outputFormatMultiplePort.addActionListener(new ActionListener() {
-			public void actionPerformed(ActionEvent e) {
-				outputFormatDelimiterLabel.setEnabled(false);
-				outputFormatDelimiter.setEnabled(false);
-				columnMappingLabel.setEnabled(true);
-				enableTable(columnMappingTable, true);
-				newConfiguration.put("outputFormat", "PORT_PER_COLUMN");
-			}
-		});
-		outputFormatSinglePort.addActionListener(new ActionListener() {
-			public void actionPerformed(ActionEvent e) {
-				outputFormatDelimiterLabel.setEnabled(true);
-				outputFormatDelimiter.setEnabled(true);
-				columnMappingLabel.setEnabled(false);
-				enableTable(columnMappingTable, false);
-				newConfiguration.put("outputFormat", "SINGLE_PORT");
-			}
-
-		});
-		outputFormatDelimiter.getDocument().addDocumentListener(new DocumentListener() {
-			public void changedUpdate(DocumentEvent e) {
-				handleUpdate();
-			}
-
-			public void insertUpdate(DocumentEvent e) {
-				handleUpdate();
-			}
-
-			public void removeUpdate(DocumentEvent e) {
-				handleUpdate();
-			}
-
-			private void handleUpdate() {
-				String text = null;
-				try {
-					text = StringEscapeUtils.unescapeJava(outputFormatDelimiter.getText());
-				} catch (RuntimeException re) {}
-				if (text == null || text.length() == 0) {
-					newConfiguration.put("csvDelimiter", ",");
-				} else {
-					newConfiguration.put("csvDelimiter", text.substring(0, 1));
-				}
-			}
-
-		});
-
-		// buttons
-		nextButton = new JButton(SpreadsheetImportUIText.getString("SpreadsheetImportConfigView.nextButton"));
-		nextButton.setFocusable(false);
-		nextButton.addActionListener(new ActionListener() {
-			public void actionPerformed(ActionEvent e) {
-				backButton.setVisible(true);
-				nextButton.setVisible(false);
-				cardLayout.last(contentPanel);
-			}
-		});
-
-		backButton = new JButton(SpreadsheetImportUIText.getString("SpreadsheetImportConfigView.backButton"));
-		backButton.setFocusable(false);
-		backButton.setVisible(false);
-		backButton.addActionListener(new ActionListener() {
-			public void actionPerformed(ActionEvent e) {
-				nextButton.setVisible(true);
-				backButton.setVisible(false);
-				cardLayout.first(contentPanel);
-			}
-		});
-
-		buttonPanel = new JPanel(new FlowLayout(FlowLayout.RIGHT));
-		addDivider(buttonPanel, SwingConstants.TOP, true);
-
-		removeAll();
-		layoutPanel();
-	}
-
-	@Override
-	public void noteConfiguration() {
-		setJson(newConfiguration);
-		configureInputPorts(serviceRegistry);
-		configureOutputPorts(serviceRegistry);
-	}
-
-	@Override
-	public boolean checkValues() {
-		return errorMessages.isEmpty();
-	}
-
-	private void layoutPanel() {
-		setPreferredSize(new Dimension(450, 400));
-		setLayout(new BorderLayout());
-
-		page1 = new JPanel(new GridBagLayout());
-		page2 = new JPanel(new GridBagLayout());
-
-		contentPanel = new JPanel(cardLayout);
-		contentPanel.add(page1, "page1");
-		contentPanel.add(page2, "page2");
-		add(contentPanel, BorderLayout.CENTER);
-
-		// title
-		titlePanel.setBorder(new CompoundBorder(titlePanel.getBorder(), new EmptyBorder(10, 10, 0, 10)));
-		add(titlePanel, BorderLayout.NORTH);
-		titlePanel.add(titleLabel, BorderLayout.NORTH);
-		titlePanel.add(titleIcon, BorderLayout.WEST);
-		titlePanel.add(titleMessage, BorderLayout.CENTER);
-
-		GridBagConstraints c = new GridBagConstraints();
-		c.anchor = GridBagConstraints.WEST;
-		c.fill = GridBagConstraints.HORIZONTAL;
-		c.weightx = 1;
-		c.gridx = 0;
-		c.gridwidth = GridBagConstraints.REMAINDER;
-
-		// column range
-		c.insets = new Insets(10, 10, 0, 10);
-		page1.add(columnLabel, c);
-
-		c.insets = new Insets(10, 25, 0, 0);
-		c.gridwidth = 1;
-		c.weightx = 0;
-		page1.add(new JLabel(SpreadsheetImportUIText.getString("SpreadsheetImportConfigView.from")), c);
-		c.insets = new Insets(10, 0, 0, 0);
-		c.gridx = 1;
-		page1.add(columnFromValue, c);
-		c.gridx = 2;
-		page1.add(new JLabel(SpreadsheetImportUIText.getString("SpreadsheetImportConfigView.to")), c);
-		c.gridx = 3;
-		page1.add(columnToValue, c);
-
-		c.gridx = 0;
-		c.weightx = 1;
-		c.insets = new Insets(10, 10, 0, 10);
-		c.gridwidth = GridBagConstraints.REMAINDER;
-
-		// row range
-		page1.add(rowLabel, c);
-
-		c.insets = new Insets(10, 25, 0, 0);
-		c.gridwidth = 1;
-		c.gridx = 0;
-		c.weightx = 0;
-		page1.add(new JLabel(SpreadsheetImportUIText.getString("SpreadsheetImportConfigView.from")), c);
-		c.insets = new Insets(10, 0, 0, 0);
-		c.gridx = 1;
-		page1.add(rowFromValue, c);
-		c.gridx = 2;
-		page1.add(new JLabel(SpreadsheetImportUIText.getString("SpreadsheetImportConfigView.to")), c);
-		c.gridx = 3;
-		page1.add(rowToValue, c);
-		c.gridx = 4;
-		page1.add(rowSelectAllOption, c);
-		c.gridx = 5;
-		c.gridwidth = GridBagConstraints.REMAINDER;
-		c.insets = new Insets(10, 0, 0, 10);
-		page1.add(rowExcludeFirstOption, c);
-		c.insets = new Insets(10, 25, 0, 0);
-		c.gridx = 0;
-		page1.add(rowIgnoreBlankRows, c);
-
-		c.gridx = 0;
-
-		// empty cells
-		c.insets = new Insets(10, 10, 10, 10);
-		page1.add(emptyCellLabel, c);
-
-		c.insets = new Insets(0, 25, 0, 10);
-		page1.add(emptyCellEmptyStringOption, c);
-		JPanel userDefinedPanel = new JPanel(new BorderLayout());
-		userDefinedPanel.add(emptyCellUserDefinedOption, BorderLayout.WEST);
-		userDefinedPanel.add(emptyCellUserDefinedValue, BorderLayout.CENTER);
-		page1.add(userDefinedPanel, c);
-		c.weighty = 1;
-		c.anchor = GridBagConstraints.NORTHWEST;
-		page1.add(emptyCellErrorValueOption, c);
-
-		// output format
-		c.insets = new Insets(10, 10, 10, 10);
-		c.weighty = 0;
-		c.weightx = 1;
-		page2.add(outputFormatLabel, c);
-
-		c.insets = new Insets(0, 25, 0, 10);
-		page2.add(outputFormatMultiplePort, c);
-		page2.add(outputFormatSinglePort, c);
-
-		c.insets = new Insets(0, 50, 0, 10);
-		JPanel outputFormatDelimiterPanel = new JPanel(new FlowLayout(FlowLayout.LEFT));
-		outputFormatDelimiterPanel.add(outputFormatDelimiterLabel);
-		outputFormatDelimiterPanel.add(outputFormatDelimiter);
-		page2.add(outputFormatDelimiterPanel, c);
-
-		// column mapping
-		c.insets = new Insets(10, 10, 0, 10);
-		page2.add(columnMappingLabel, c);
-
-		c.insets = new Insets(10, 10, 10, 10);
-		c.fill = GridBagConstraints.BOTH;
-		c.weighty = 1;
-		page2.add(new JScrollPane(columnMappingTable), c);
-
-		buttonPanel.add(backButton);
-		buttonPanel.add(nextButton);
-		add(buttonPanel, BorderLayout.SOUTH);
-	}
-
-	/**
-	 * Displays the message with no icon.
-	 *
-	 * @param message
-	 *            the message to display
-	 */
-	public void setMessage(String message) {
-		titleIcon.setIcon(null);
-		titleMessage.setText(message);
-	}
-
-	/**
-	 * Adds the message to the top of the warning message stack. If the message is already in the
-	 * stack it is moved to the top. If there are no error messages the message is displayed.
-	 *
-	 * @param message
-	 *            the warning message to add
-	 */
-	public void addWarningMessage(String message) {
-		if (warningMessages.contains(message)) {
-			warningMessages.remove(message);
-		}
-		warningMessages.push(message);
-		if (errorMessages.isEmpty()) {
-			setWarningMessage(message);
-		}
-	}
-
-	/**
-	 * Removes the message from the warning message stack. If there are no error messages the next
-	 * warning message is displayed. If there are no warning messages the default message is
-	 * displayed.
-	 *
-	 * @param message
-	 *            the warning message to remove
-	 */
-	public void removeWarningMessage(String message) {
-		warningMessages.remove(message);
-		if (errorMessages.isEmpty()) {
-			if (warningMessages.isEmpty()) {
-				setMessage(DEFAULT_MESSAGE);
-			} else {
-				setWarningMessage(warningMessages.peek());
-			}
-		}
-	}
-
-	/**
-	 * Displays the message and a warning icon.
-	 *
-	 * @param message
-	 *            the warning message to display
-	 */
-	public void setWarningMessage(String message) {
-		titleIcon.setIcon(Icons.warningIcon);
-		titleMessage.setText(message);
-	}
-
-	/**
-	 * Adds the message to the top of the error message stack. If the message is already in the
-	 * stack it is moved to the top. The message is then displayed.
-	 *
-	 * @param message
-	 *            the error message to add
-	 */
-	public void addErrorMessage(String message) {
-		if (errorMessages.contains(message)) {
-			errorMessages.remove(message);
-		}
-		errorMessages.push(message);
-		setErrorMessage(message);
-	}
-
-	/**
-	 * Removes the message from the error message stack and displays the next error message. If
-	 * there are no error messages the next warning message is displayed. If there are no warning
-	 * messages the default message is displayed.
-	 *
-	 * @param message
-	 *            the error message to remove
-	 */
-	public void removeErrorMessage(String message) {
-		errorMessages.remove(message);
-		if (errorMessages.isEmpty()) {
-			if (warningMessages.isEmpty()) {
-				setMessage(DEFAULT_MESSAGE);
-			} else {
-				setWarningMessage(warningMessages.peek());
-			}
-		} else {
-			setErrorMessage(errorMessages.peek());
-		}
-	}
-
-	/**
-	 * Displays the message and an error icon.
-	 *
-	 * @param message
-	 *            the error message to display
-	 */
-	public void setErrorMessage(String message) {
-		titleIcon.setIcon(Icons.severeIcon);
-		titleMessage.setText(message);
-	}
-
-	protected boolean validatePortNames() {
-		boolean isValid = true;
-		Range columnRange = SpreadsheetUtils.getRange(newConfiguration.get("columnRange"));
-		Map<String, String> mapping = new HashMap<>();
-		if (newConfiguration.has("columnNames")) {
-			for (JsonNode columnName : newConfiguration.get("columnNames")) {
-				mapping.put(columnName.get("column").textValue(), columnName.get("port").textValue());
-			}
-		}
-		Set<String> usedNames = new HashSet<String>();
-		for (Entry<String, String> entry : mapping.entrySet()) {
-			if (columnRange.contains(SpreadsheetUtils.getColumnIndex(entry.getKey()))) {
-				String portName = entry.getValue();
-				if (!usedNames.add(portName)) {
-					isValid = false;
-					break;
-				}
-				if (portName.matches("[A-Z]+")) {
-					if (!mapping.containsKey(portName)) {
-						int columnIndex = SpreadsheetUtils.getColumnIndex(portName);
-						if (columnRange.contains(columnIndex)) {
-							isValid = false;
-							break;
-						}
-					}
-				}
-			}
-		}
-		if (isValid) {
-			removeErrorMessage(DUPLICATE_PORT_NAME_ERROR_MESSAGE);
-		} else {
-			addErrorMessage(DUPLICATE_PORT_NAME_ERROR_MESSAGE);
-		}
-		return isValid;
-	}
-
-	protected boolean checkRowRange(String from, String to) {
-		boolean result = false;
-		try {
-			int fromRow = Integer.parseInt(from);
-			int toRow = Integer.parseInt(to);
-			if (toRow < fromRow) {
-				addErrorMessage(INCONSISTENT_ROW_MESSAGE);
-			} else {
-				removeErrorMessage(INCONSISTENT_ROW_MESSAGE);
-				result = true;
-			}
-		} catch (NumberFormatException e) {
-			logger.warn("Problem checking row range", e);
-		}
-		return result;
-	}
-
-	protected boolean checkColumnRange(int fromColumn, int toColumn) {
-		boolean result = false;
-		if (toColumn < fromColumn) {
-			addErrorMessage(INCONSISTENT_COLUMN_MESSAGE);
-		} else {
-			removeErrorMessage(INCONSISTENT_COLUMN_MESSAGE);
-			result = true;
-		}
-		return result;
-	}
-
-	/**
-	 * Adds a light gray or etched border to the top or bottom of a JComponent.
-	 *
-	 * @param component
-	 */
-	protected void addDivider(JComponent component, final int position, final boolean etched) {
-		component.setBorder(new Border() {
-			private final Color borderColor = new Color(.6f, .6f, .6f);
-
-			public Insets getBorderInsets(Component c) {
-				if (position == SwingConstants.TOP) {
-					return new Insets(5, 0, 0, 0);
-				} else {
-					return new Insets(0, 0, 5, 0);
-				}
-			}
-
-			public boolean isBorderOpaque() {
-				return false;
-			}
-
-			public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
-				if (position == SwingConstants.TOP) {
-					if (etched) {
-						g.setColor(borderColor);
-						g.drawLine(x, y, x + width, y);
-						g.setColor(Color.WHITE);
-						g.drawLine(x, y + 1, x + width, y + 1);
-					} else {
-						g.setColor(Color.LIGHT_GRAY);
-						g.drawLine(x, y, x + width, y);
-					}
-				} else {
-					if (etched) {
-						g.setColor(borderColor);
-						g.drawLine(x, y + height - 2, x + width, y + height - 2);
-						g.setColor(Color.WHITE);
-						g.drawLine(x, y + height - 1, x + width, y + height - 1);
-					} else {
-						g.setColor(Color.LIGHT_GRAY);
-						g.drawLine(x, y + height - 1, x + width, y + height - 1);
-					}
-				}
-			}
-
-		});
-	}
-
-	private void enableTable(JTable table, boolean enabled) {
-		table.setEnabled(enabled);
-		Component editor = table.getEditorComponent();
-		if (editor != null) {
-			editor.setEnabled(enabled);
-		}
-		if (enabled) {
-			table.setForeground(Color.BLACK);
-			table.getTableHeader().setForeground(Color.BLACK);
-		} else {
-			table.setForeground(Color.LIGHT_GRAY);
-			table.getTableHeader().setForeground(Color.LIGHT_GRAY);
-		}
-	}
-
-	static class UpperCaseDocument extends PlainDocument {
-        @Override
-        public void replace(int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
-        	if (text.matches("[A-Za-z]+")) {
-        		text = text.toUpperCase();
-        		super.replace(offset, length, text, attrs);
-        	}
-        }
-     }
-
-	static class NumericDocument extends PlainDocument {
-        @Override
-        public void replace(int offset, int length, String text, AttributeSet attrs) throws BadLocationException {
-        	if (text.length() == 0 || text.matches("[0-9]+")) {
-        		text = text.toUpperCase();
-        		super.replace(offset, length, text, attrs);
-        	}
-        }
-     }
-
-	/**
-	 * Main method for testing the panel.
-	 *
-	 * @param args
-	 * @throws ActivityConfigurationException
-	 */
-//	public static void main(String[] args) throws ActivityConfigurationException {
-//		final JFrame frame = new JFrame();
-//		SpreadsheetImportActivity activity = new SpreadsheetImportActivity();
-//		activity.configure(new SpreadsheetImportConfiguration());
-//		final SpreadsheetImportConfigView config = new SpreadsheetImportConfigView(activity);
-//		config.setOkAction(new AbstractAction("Finish") {
-//			public void actionPerformed(ActionEvent arg0) {
-//				Range columnRange = config.getConfiguration().getColumnRange();
-//				String fromColumn = SpreadsheetUtils.getColumnLabel(columnRange.getStart());
-//				String toColumn = SpreadsheetUtils.getColumnLabel(columnRange.getEnd());
-//				System.out.printf("%s (%s) - %s (%s)", fromColumn, columnRange.getStart(),
-//						toColumn, columnRange.getEnd());
-//				frame.setVisible(false);
-//				frame.dispose();
-//			}
-//		});
-//		config.setCancelAction(new AbstractAction("Cancel") {
-//			public void actionPerformed(ActionEvent arg0) {
-//				frame.setVisible(false);
-//				frame.dispose();
-//			}
-//		});
-//		frame.add(config);
-//		frame.pack();
-//		frame.setVisible(true);
-//	}
-
-}
diff --git a/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/views/SpreadsheetImportContextualView.java b/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/views/SpreadsheetImportContextualView.java
deleted file mode 100644
index 2078faa..0000000
--- a/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/views/SpreadsheetImportContextualView.java
+++ /dev/null
@@ -1,121 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2009 The University of Manchester
- *
- *  Modifications to the initial code base are copyright of their
- *  respective authors, or their employers as appropriate.
- *
- *  This program is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU Lesser General Public License
- *  as published by the Free Software Foundation; either version 2.1 of
- *  the License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful, but
- *  WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  Lesser General Public License for more details.
- *
- *  You should have received a copy of the GNU Lesser General Public
- *  License along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.activities.spreadsheet.views;
-
-import java.awt.Frame;
-
-import javax.swing.Action;
-
-import net.sf.taverna.t2.activities.spreadsheet.actions.SpreadsheetImportActivityConfigurationAction;
-import net.sf.taverna.t2.activities.spreadsheet.il8n.SpreadsheetImportUIText;
-import net.sf.taverna.t2.activities.spreadsheet.servicedescriptions.SpreadsheetImportActivityIcon;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;
-import net.sf.taverna.t2.workbench.configuration.colour.ColourManager;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.file.FileManager;
-import net.sf.taverna.t2.workbench.ui.actions.activity.HTMLBasedActivityContextualView;
-import uk.org.taverna.commons.services.ServiceRegistry;
-import uk.org.taverna.scufl2.api.activity.Activity;
-import uk.org.taverna.scufl2.api.port.InputActivityPort;
-import uk.org.taverna.scufl2.api.port.OutputActivityPort;
-
-/**
- * A simple non editable HTML table view over a {@link SpreadsheetImportActivity}. Clicking on the
- * configure button shows the editable {@link SpreadsheetImportConfigView}
- *
- * @author David Withers
- */
-public class SpreadsheetImportContextualView extends HTMLBasedActivityContextualView {
-
-	private static final long serialVersionUID = 1L;
-	private final EditManager editManager;
-	private final FileManager fileManager;
-	private final ActivityIconManager activityIconManager;
-	private final ServiceDescriptionRegistry serviceDescriptionRegistry;
-	private final ServiceRegistry serviceRegistry;
-
-	public SpreadsheetImportContextualView(Activity activity, EditManager editManager,
-			FileManager fileManager, ActivityIconManager activityIconManager,
-			ColourManager colourManager, ServiceDescriptionRegistry serviceDescriptionRegistry, ServiceRegistry serviceRegistry) {
-		super(activity, colourManager);
-		this.editManager = editManager;
-		this.fileManager = fileManager;
-		this.activityIconManager = activityIconManager;
-		this.serviceDescriptionRegistry = serviceDescriptionRegistry;
-		this.serviceRegistry = serviceRegistry;
-	}
-
-	@Override
-	protected String getRawTableRowsHtml() {
-		StringBuilder html = new StringBuilder();
-		html.append("<tr><th>");
-		html.append(SpreadsheetImportUIText
-				.getString("SpreadsheetImportContextualView.inputPortName"));
-		html.append("</th><th>");
-		html.append(SpreadsheetImportUIText.getString("SpreadsheetImportContextualView.depth"));
-		html.append("</th></tr>");
-		for (InputActivityPort port : getActivity().getInputPorts()) {
-			html.append("<tr><td>");
-			html.append(port.getName());
-			html.append("</td><td>");
-			html.append(port.getDepth());
-			html.append("</td></tr>");
-		}
-		html.append("<tr><th>");
-		html.append(SpreadsheetImportUIText
-				.getString("SpreadsheetImportContextualView.outputPortName"));
-		html.append("</th><th>");
-		html.append(SpreadsheetImportUIText.getString("SpreadsheetImportContextualView.depth"));
-		html.append("</th></tr>");
-		for (OutputActivityPort port : getActivity().getOutputPorts()) {
-			html.append("<tr><td>");
-			html.append(port.getName());
-			html.append("</td><td>");
-			html.append(port.getDepth());
-			html.append("</td></tr>");
-		}
-		return html.toString();
-	}
-
-	@Override
-	public String getViewTitle() {
-		return SpreadsheetImportUIText.getString("SpreadsheetImportContextualView.activityName");
-	}
-
-	@Override
-	public Action getConfigureAction(Frame owner) {
-		return new SpreadsheetImportActivityConfigurationAction(
-				getActivity(), owner, editManager, fileManager,
-				activityIconManager, serviceDescriptionRegistry, serviceRegistry);
-	}
-
-	@Override
-	public String getBackgroundColour() {
-		return SpreadsheetImportActivityIcon.SPREADSHEET_COLOUR_HTML;
-	}
-
-	@Override
-	public int getPreferredPosition() {
-		return 100;
-	}
-
-}
diff --git a/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/views/SpreadsheetImportContextualViewFactory.java b/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/views/SpreadsheetImportContextualViewFactory.java
deleted file mode 100644
index 7e49168..0000000
--- a/taverna-spreadsheet-import-activity-ui/src/main/java/net/sf/taverna/t2/activities/spreadsheet/views/SpreadsheetImportContextualViewFactory.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2009 The University of Manchester
- *
- *  Modifications to the initial code base are copyright of their
- *  respective authors, or their employers as appropriate.
- *
- *  This program is free software; you can redistribute it and/or
- *  modify it under the terms of the GNU Lesser General Public License
- *  as published by the Free Software Foundation; either version 2.1 of
- *  the License, or (at your option) any later version.
- *
- *  This program is distributed in the hope that it will be useful, but
- *  WITHOUT ANY WARRANTY; without even the implied warranty of
- *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
- *  Lesser General Public License for more details.
- *
- *  You should have received a copy of the GNU Lesser General Public
- *  License along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- ******************************************************************************/
-package net.sf.taverna.t2.activities.spreadsheet.views;
-
-import java.util.Arrays;
-import java.util.List;
-
-import net.sf.taverna.t2.activities.spreadsheet.servicedescriptions.SpreadsheetImportTemplateService;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;
-import net.sf.taverna.t2.workbench.configuration.colour.ColourManager;
-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;
-import uk.org.taverna.commons.services.ServiceRegistry;
-import uk.org.taverna.scufl2.api.activity.Activity;
-
-/**
- * Factory for creating contextual a view of the SpreadsheetImport Activity
- *
- * @author David Withers
- */
-public class SpreadsheetImportContextualViewFactory implements ContextualViewFactory<Activity> {
-
-	private EditManager editManager;
-	private FileManager fileManager;
-	private ActivityIconManager activityIconManager;
-	private ColourManager colourManager;
-	private ServiceDescriptionRegistry serviceDescriptionRegistry;
-	private ServiceRegistry serviceRegistry;
-
-	public boolean canHandle(Object object) {
-		return object instanceof Activity
-				&& ((Activity) object).getType().equals(
-						SpreadsheetImportTemplateService.ACTIVITY_TYPE);
-	}
-
-	public List<ContextualView> getViews(Activity activity) {
-		return Arrays.asList(new ContextualView[] { new SpreadsheetImportContextualView(activity,
-				editManager, fileManager, activityIconManager, colourManager,
-				serviceDescriptionRegistry, serviceRegistry) });
-	}
-
-	public void setEditManager(EditManager editManager) {
-		this.editManager = editManager;
-	}
-
-	public void setFileManager(FileManager fileManager) {
-		this.fileManager = fileManager;
-	}
-
-	public void setActivityIconManager(ActivityIconManager activityIconManager) {
-		this.activityIconManager = activityIconManager;
-	}
-
-	public void setColourManager(ColourManager colourManager) {
-		this.colourManager = colourManager;
-	}
-
-	public void setServiceDescriptionRegistry(ServiceDescriptionRegistry serviceDescriptionRegistry) {
-		this.serviceDescriptionRegistry = serviceDescriptionRegistry;
-	}
-
-	public void setServiceRegistry(ServiceRegistry serviceRegistry) {
-		this.serviceRegistry = serviceRegistry;
-	}
-
-}
diff --git a/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider b/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider
deleted file mode 100644
index b1628b6..0000000
--- a/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider
+++ /dev/null
@@ -1 +0,0 @@
-net.sf.taverna.t2.activities.spreadsheet.servicedescriptions.SpreadsheetImportTemplateService
diff --git a/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent b/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent
deleted file mode 100644
index 6720b04..0000000
--- a/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent
+++ /dev/null
@@ -1,3 +0,0 @@
-net.sf.taverna.t2.activities.spreadsheet.menu.SpreadsheetImportAddTemplateAction
-net.sf.taverna.t2.activities.spreadsheet.menu.SpreadsheetImportConfigureMenuAction
-net.sf.taverna.t2.activities.spreadsheet.menu.SpreadsheetImportAddTemplateMenuAction
diff --git a/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI b/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI
deleted file mode 100644
index 2dd012f..0000000
--- a/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI
+++ /dev/null
@@ -1 +0,0 @@
-net.sf.taverna.t2.activities.spreadsheet.servicedescriptions.SpreadsheetImportActivityIcon
\ No newline at end of file
diff --git a/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory b/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory
deleted file mode 100644
index 4b9dd11..0000000
--- a/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory
+++ /dev/null
@@ -1 +0,0 @@
-net.sf.taverna.t2.activities.spreadsheet.views.SpreadsheetImportContextualViewFactory
\ No newline at end of file
diff --git a/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/spring/spreadsheet-import-activity-ui-context-osgi.xml b/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/spring/spreadsheet-import-activity-ui-context-osgi.xml
deleted file mode 100644
index 72ffb77..0000000
--- a/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/spring/spreadsheet-import-activity-ui-context-osgi.xml
+++ /dev/null
@@ -1,28 +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="SpreadsheetImportActivityIcon" interface="net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI" />
-
-	<service ref="SpreadsheetImportTemplateService" interface="net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider" />
-
-	<service ref="SpreadsheetImportAddTemplateAction" auto-export="interfaces" />
-	<service ref="SpreadsheetImportConfigureMenuAction" auto-export="interfaces" />
-	<service ref="SpreadsheetImportAddTemplateMenuAction" auto-export="interfaces" />
-
-	<service ref="SpreadsheetImportContextualViewFactory" 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" />
-	<reference id="menuManager" interface="net.sf.taverna.t2.ui.menu.MenuManager" />
-	<reference id="selectionManager" interface="net.sf.taverna.t2.workbench.selection.SelectionManager" />
-	<reference id="activityIconManager" interface="net.sf.taverna.t2.workbench.activityicons.ActivityIconManager" />
-	<reference id="colourManager" interface="net.sf.taverna.t2.workbench.configuration.colour.ColourManager" />
-	<reference id="serviceDescriptionRegistry" interface="net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry" />
-	<reference id="serviceRegistry" interface="uk.org.taverna.commons.services.ServiceRegistry" />
-
-</beans:beans>
diff --git a/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/spring/spreadsheet-import-activity-ui-context.xml b/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/spring/spreadsheet-import-activity-ui-context.xml
deleted file mode 100644
index 7fdba26..0000000
--- a/taverna-spreadsheet-import-activity-ui/src/main/resources/META-INF/spring/spreadsheet-import-activity-ui-context.xml
+++ /dev/null
@@ -1,45 +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="SpreadsheetImportActivityIcon" class="net.sf.taverna.t2.activities.spreadsheet.servicedescriptions.SpreadsheetImportActivityIcon">
-			<property name="colourManager" ref="colourManager" />
-	</bean>
-
-	<bean id="SpreadsheetImportTemplateService" class="net.sf.taverna.t2.activities.spreadsheet.servicedescriptions.SpreadsheetImportTemplateService" />
-
-	<bean id="SpreadsheetImportAddTemplateAction" class="net.sf.taverna.t2.activities.spreadsheet.menu.SpreadsheetImportAddTemplateAction">
-			<property name="editManager" ref="editManager" />
-			<property name="menuManager" ref="menuManager" />
-			<property name="selectionManager" ref="selectionManager" />
-			<property name="activityIconManager" ref="activityIconManager" />
-			<property name="serviceDescriptionRegistry" ref="serviceDescriptionRegistry" />
-			<property name="serviceRegistry" ref="serviceRegistry" />
-	</bean>
-	<bean id="SpreadsheetImportAddTemplateMenuAction" class="net.sf.taverna.t2.activities.spreadsheet.menu.SpreadsheetImportAddTemplateMenuAction">
-			<property name="editManager" ref="editManager" />
-			<property name="menuManager" ref="menuManager" />
-			<property name="selectionManager" ref="selectionManager" />
-			<property name="activityIconManager" ref="activityIconManager" />
-			<property name="serviceDescriptionRegistry" ref="serviceDescriptionRegistry" />
-			<property name="serviceRegistry" ref="serviceRegistry" />
-	</bean>
-	<bean id="SpreadsheetImportConfigureMenuAction" class="net.sf.taverna.t2.activities.spreadsheet.menu.SpreadsheetImportConfigureMenuAction">
-			<property name="editManager" ref="editManager" />
-			<property name="fileManager" ref="fileManager" />
-			<property name="activityIconManager" ref="activityIconManager" />
-			<property name="serviceDescriptionRegistry" ref="serviceDescriptionRegistry" />
-			<property name="serviceRegistry" ref="serviceRegistry" />
-	</bean>
-
-	<bean id="SpreadsheetImportContextualViewFactory" class="net.sf.taverna.t2.activities.spreadsheet.views.SpreadsheetImportContextualViewFactory">
-			<property name="editManager" ref="editManager" />
-			<property name="fileManager" ref="fileManager" />
-			<property name="activityIconManager" ref="activityIconManager" />
-			<property name="colourManager" ref="colourManager" />
-			<property name="serviceDescriptionRegistry" ref="serviceDescriptionRegistry" />
-			<property name="serviceRegistry" ref="serviceRegistry" />
-	</bean>
-
-</beans>
diff --git a/taverna-spreadsheet-import-activity-ui/src/main/resources/net/sf/taverna/t2/activities/spreadsheet/iln8/ui-text.properties b/taverna-spreadsheet-import-activity-ui/src/main/resources/net/sf/taverna/t2/activities/spreadsheet/iln8/ui-text.properties
deleted file mode 100644
index 2a4480f..0000000
--- a/taverna-spreadsheet-import-activity-ui/src/main/resources/net/sf/taverna/t2/activities/spreadsheet/iln8/ui-text.properties
+++ /dev/null
@@ -1,43 +0,0 @@
-SpreadsheetImportActivityConfigurationAction.canceButton=Cancel
-SpreadsheetImportActivityConfigurationAction.dialogTitle=Spreadsheet Import Configuration
-SpreadsheetImportActivityConfigurationAction.okButton=Finish
-SpreadsheetImportAddTemplateAction.addMenu=Spreadsheet import
-SpreadsheetImportConfigureMenuAction.configureMenu=Configure Spreadsheet Import
-SpreadsheetImportConfigTableModel.column=Column
-SpreadsheetImportConfigTableModel.portName=Port Name
-SpreadsheetImportConfigView.nextButton=Next
-SpreadsheetImportConfigView.backButton=Back
-SpreadsheetImportConfigView.columnMappingSectionLabel=Column to Port Name Mapping
-SpreadsheetImportConfigView.outputFormatSectionLabel=Output Format
-SpreadsheetImportConfigView.columnSectionLabel=Columns
-SpreadsheetImportConfigView.DEFAULT_MESSAGE=Select the data range
-SpreadsheetImportConfigView.DUPLICATE_PORT_NAME_ERROR_MESSAGE=Duplicate activity port name
-SpreadsheetImportConfigView.EMPTY_FROM_COLUMN_ERROR_MESSAGE='From' column must be specified
-SpreadsheetImportConfigView.EMPTY_FROM_ROW_ERROR_MESSAGE='From' row must be specified
-SpreadsheetImportConfigView.EMPTY_TO_COLUMN_ERROR_MESSAGE='To' column must be specified
-SpreadsheetImportConfigView.emptyCellSectionLabel=Empty cells
-SpreadsheetImportConfigView.emptyStringOption=Use an empty string
-SpreadsheetImportConfigView.excludeHeaderRowOption=Exclude header row
-SpreadsheetImportConfigView.from=From
-SpreadsheetImportConfigView.FROM_COLUMN_ERROR_MESSAGE='From' column can only contain characters A-Z
-SpreadsheetImportConfigView.FROM_ROW_ERROR_MESSAGE='From' row must be a number greater than 0
-SpreadsheetImportConfigView.generateErrorOption=Generate an error value
-SpreadsheetImportConfigView.ignoreBlankRowsOption=Ignore blank rows
-SpreadsheetImportConfigView.multiplePortOption=Multiple outputs (one per spreadsheet column)
-SpreadsheetImportConfigView.singlePortOption=A single CSV formatted output
-SpreadsheetImportConfigView.userDefinedCsvDelimiter=Use this value delimiter character:
-SpreadsheetImportConfigView.INCONSISTENT_COLUMN_MESSAGE='To' column must not be less than 'from' column
-SpreadsheetImportConfigView.INCONSISTENT_ROW_MESSAGE='To'row must not be less than 'from' row
-SpreadsheetImportConfigView.panelTitle=Configure spreadsheet file import
-SpreadsheetImportConfigView.rowSectionLabel=Rows
-SpreadsheetImportConfigView.selectAllRowsOption=All rows
-SpreadsheetImportConfigView.to=to
-SpreadsheetImportConfigView.TO_COLUMN_ERROR_MESSAGE='To' column can only contain characters A-Z
-SpreadsheetImportConfigView.TO_ROW_ERROR_MESSAGE='To' row must be a number greater than 0
-SpreadsheetImportConfigView.userDefinedOption=Use this value:
-SpreadsheetImportContextualView.activityName=Spreadsheet Import Activity
-SpreadsheetImportContextualView.depth=Depth
-SpreadsheetImportContextualView.inputPortName=Input Port Name
-SpreadsheetImportContextualView.outputPortName=Output Port Name
-SpreadsheetImportTemplateService.serviceDescription=A service that imports data from spreadsheets
-SpreadsheetImportTemplateService.serviceName=SpreadsheetImport
diff --git a/taverna-spreadsheet-import-activity-ui/src/main/resources/spreadsheet-import.png b/taverna-spreadsheet-import-activity-ui/src/main/resources/spreadsheet-import.png
deleted file mode 100644
index 886fac3..0000000
--- a/taverna-spreadsheet-import-activity-ui/src/main/resources/spreadsheet-import.png
+++ /dev/null
Binary files differ
diff --git a/taverna-wsdl-activity-ui/pom.xml b/taverna-wsdl-activity-ui/pom.xml
deleted file mode 100644
index be2d224..0000000
--- a/taverna-wsdl-activity-ui/pom.xml
+++ /dev/null
@@ -1,95 +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</groupId>
-		<artifactId>taverna-parent</artifactId>
-		<version>3.0.1-SNAPSHOT</version>
-	</parent>
-	<groupId>net.sf.taverna.t2.ui-activities</groupId>
-	<artifactId>wsdl-activity-ui</artifactId>
-        <version>2.0-SNAPSHOT</version>
-	<packaging>bundle</packaging>
-	<name>Taverna 2 WSDL Activity UI</name>
-	<build>
-		<plugins>
-			<plugin>
-				<groupId>org.apache.felix</groupId>
-				<artifactId>maven-bundle-plugin</artifactId>
-				<extensions>true</extensions>
-				<configuration>
-					<instructions>
-						<!-- Use the java version instead of xmlcommons for javax.* packages -->
-						<Import-Package>javax.xml.namespace;version="0.0.0",javax.xml.parsers;version="0.0.0",org.w3c.dom;version="0.0.0",org.xml.sax;version="0.0.0",*</Import-Package>
-					</instructions>
-				</configuration>
-			</plugin>
-		</plugins>
-	</build>
-	<dependencies>
-		<dependency>
-			<groupId>net.sf.taverna.t2.ui-api</groupId>
-			<artifactId>activity-icons-api</artifactId>
-			<version>${t2.ui.api.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>net.sf.taverna.t2.ui-api</groupId>
-			<artifactId>activity-palette-api</artifactId>
-			<version>${t2.ui.api.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>net.sf.taverna.t2.activities</groupId>
-			<artifactId>wsdl-activity</artifactId>
-			<version>${t2.activities.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>net.sf.taverna.t2.ui-components</groupId>
-			<artifactId>credential-manager-ui</artifactId>
-			<version>${t2.ui.components.version}</version>
-		</dependency>
-		<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>activity-tools</artifactId>
-			<version>${t2.ui.api.version}</version>
-		</dependency>
-		<dependency>
-			<groupId>net.sf.taverna.t2.lang</groupId>
-			<artifactId>ui</artifactId>
-			<version>${t2.lang.version}</version>
-		</dependency>
-
-		<dependency>
-			<groupId>junit</groupId>
-			<artifactId>junit</artifactId>
-			<version>${junit.version}</version>
-			<scope>test</scope>
-		</dependency>
-	</dependencies>
-	<repositories>
-		<repository>
-			<releases />
-			<snapshots>
-				<enabled>false</enabled>
-			</snapshots>
-			<id>mygrid-repository</id>
-			<name>myGrid Repository</name>
-			<url>http://www.mygrid.org.uk/maven/repository
-			</url>
-		</repository>
-		<repository>
-			<releases>
-				<enabled>false</enabled>
-			</releases>
-			<snapshots />
-			<id>mygrid-snapshot-repository</id>
-			<name>myGrid Snapshot Repository</name>
-			<url>http://www.mygrid.org.uk/maven/snapshot-repository</url>
-		</repository>
-	</repositories>
-</project>
-
diff --git a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/actions/AbstractAddXMLSplitterAction.java b/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/actions/AbstractAddXMLSplitterAction.java
deleted file mode 100644
index d92dab9..0000000
--- a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/actions/AbstractAddXMLSplitterAction.java
+++ /dev/null
@@ -1,156 +0,0 @@
-package net.sf.taverna.t2.activities.wsdl.actions;
-/*******************************************************************************
- * 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
- ******************************************************************************/
-
-import java.awt.event.ActionEvent;
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.Collections;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-import java.util.Map.Entry;
-
-import javax.swing.AbstractAction;
-import javax.swing.JComponent;
-import javax.swing.JOptionPane;
-import javax.wsdl.WSDLException;
-import javax.xml.parsers.ParserConfigurationException;
-
-import net.sf.taverna.t2.workbench.edits.EditException;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.selection.SelectionManager;
-import net.sf.taverna.wsdl.parser.ArrayTypeDescriptor;
-import net.sf.taverna.wsdl.parser.ComplexTypeDescriptor;
-import net.sf.taverna.wsdl.parser.TypeDescriptor;
-import net.sf.taverna.wsdl.parser.UnknownOperationException;
-
-import org.apache.log4j.Logger;
-import org.jdom.JDOMException;
-import org.xml.sax.SAXException;
-
-import uk.org.taverna.scufl2.api.activity.Activity;
-import uk.org.taverna.scufl2.api.common.Scufl2Tools;
-import uk.org.taverna.scufl2.api.core.Workflow;
-import uk.org.taverna.scufl2.api.profiles.Profile;
-
-/**
- * Abstract superclass of {@link AddXMLOutputSplitterAction} and
- * {@link AddXMLInputSplitterAction}.
- * <p>
- * Pops up a {@link JOptionPane} with the names of all the wsdl ports. The one
- * that is selected is added as an input/output splitter to the currently open
- * dataflow using the {@link AddXMLSplitterEdit}
- *
- * @author Ian Dunlop
- * @author Stian Soiland-Reyes
- * @author Stuart Owen
- *
- */
-@SuppressWarnings("serial")
-public abstract class AbstractAddXMLSplitterAction extends AbstractAction {
-
-	private static Logger logger = Logger.getLogger(AddXMLOutputSplitterAction.class);
-
-	protected Scufl2Tools scufl2Tools = new Scufl2Tools();
-
-	protected JComponent owner;
-	protected final Activity activity;
-	protected final EditManager editManager;
-	protected final SelectionManager selectionManager;
-
-	public AbstractAddXMLSplitterAction(Activity activity,
-			JComponent owner, EditManager editManager, SelectionManager selectionManager) {
-		this.activity = activity;
-		this.owner = owner;
-		this.editManager = editManager;
-		this.selectionManager = selectionManager;
-	}
-
-	public void actionPerformed(ActionEvent ev) {
-		List<String> possibilities;
-		Map<String, TypeDescriptor> typeDescriptors;
-		try {
-			typeDescriptors = getTypeDescriptors();
-		} catch (UnknownOperationException ex) {
-			logger.error("Can't find operation for activity "
-					+ activity, ex);
-			return;
-		} catch (IOException | ParserConfigurationException | WSDLException | SAXException | JDOMException ex) {
-			logger.error("Can't read definition for activity "
-					+ activity, ex);
-			return;
-		}
-
-		typeDescriptors = filterDescriptors(typeDescriptors);
-
-		possibilities = new ArrayList<String>(typeDescriptors.keySet());
-		if (possibilities.isEmpty()) {
-			logger.warn("No type descriptors found for activity " + activity);
-			return;
-		}
-		Collections.sort(possibilities);
-
-		String portName = (String) JOptionPane.showInputDialog(owner,
-				"Select the port to add the splitter to",
-				"Add output XML splitter", JOptionPane.PLAIN_MESSAGE, null,
-				possibilities.toArray(), possibilities.get(0));
-
-		Workflow workflow = selectionManager.getSelectedWorkflow();
-		Profile profile = selectionManager.getSelectedProfile();
-		TypeDescriptor typeDescriptorForPort = typeDescriptors
-				.get(portName);
-
-		if (typeDescriptorForPort instanceof ArrayTypeDescriptor
-				|| typeDescriptorForPort instanceof ComplexTypeDescriptor) {
-			AddXMLSplitterEdit edit = new AddXMLSplitterEdit(workflow, profile,
-					activity, typeDescriptorForPort, portName, isInput());
-			try {
-				editManager.doDataflowEdit(workflow.getParent(), edit);
-			} catch (EditException ex) {
-				logger.error("Could not perform edit to add " + portName, ex);
-			}
-		} else {
-			logger.warn("Unknown typedescriptor for " + portName);
-		}
-	}
-
-	public static Map<String, TypeDescriptor> filterDescriptors(
-			Map<String, TypeDescriptor> descriptors) {
-		Map<String, TypeDescriptor> filtered = new HashMap<String, TypeDescriptor>();
-		for (Entry<String, TypeDescriptor> entry : descriptors.entrySet()) {
-			TypeDescriptor descriptor = entry.getValue();
-			if (descriptor.getMimeType().contains("'text/xml'")) {
-				filtered.put(entry.getKey(), descriptor);
-			}
-		}
-		return filtered;
-	}
-
-	protected abstract boolean isInput();
-
-	public abstract Map<String, TypeDescriptor> getTypeDescriptors()
-			throws UnknownOperationException, IOException, ParserConfigurationException, WSDLException, SAXException, JDOMException;
-
-	public void setOwner(JComponent owner) {
-		this.owner = owner;
-	}
-}
\ No newline at end of file
diff --git a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/actions/AddXMLInputSplitterAction.java b/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/actions/AddXMLInputSplitterAction.java
deleted file mode 100644
index 6faee9d..0000000
--- a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/actions/AddXMLInputSplitterAction.java
+++ /dev/null
@@ -1,104 +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.activities.wsdl.actions;
-
-import java.io.IOException;
-import java.io.StringReader;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.swing.JComponent;
-import javax.swing.JOptionPane;
-import javax.wsdl.WSDLException;
-import javax.xml.parsers.ParserConfigurationException;
-
-import net.sf.taverna.t2.activities.wsdl.servicedescriptions.WSDLServiceDescription;
-import net.sf.taverna.t2.activities.wsdl.xmlsplitter.AddXMLSplitterEdit;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.selection.SelectionManager;
-import net.sf.taverna.wsdl.parser.ArrayTypeDescriptor;
-import net.sf.taverna.wsdl.parser.ComplexTypeDescriptor;
-import net.sf.taverna.wsdl.parser.TypeDescriptor;
-import net.sf.taverna.wsdl.parser.UnknownOperationException;
-import net.sf.taverna.wsdl.parser.WSDLParser;
-import net.sf.taverna.wsdl.xmlsplitter.XMLSplitterSerialisationHelper;
-
-import org.jdom.Element;
-import org.jdom.JDOMException;
-import org.jdom.input.SAXBuilder;
-import org.xml.sax.SAXException;
-
-import uk.org.taverna.scufl2.api.activity.Activity;
-import uk.org.taverna.scufl2.api.configurations.Configuration;
-
-/**
- * Pops up a {@link JOptionPane} with the names of all the wsdl ports. The one
- * that is selected is added as an input splitter to the currently open dataflow
- * using the {@link AddXMLSplitterEdit}
- *
- * @author Ian Dunlop
- * @author Stian Soiland-Reyes
- */
-@SuppressWarnings("serial")
-public class AddXMLInputSplitterAction extends AbstractAddXMLSplitterAction {
-
-	public AddXMLInputSplitterAction(Activity activity, JComponent owner, EditManager editManager,
-			SelectionManager selectionManager) {
-		super(activity, owner, editManager, selectionManager);
-		putValue(NAME, "Add input XML splitter");
-	}
-
-	@Override
-	public Map<String, TypeDescriptor> getTypeDescriptors() throws UnknownOperationException, IOException, ParserConfigurationException, WSDLException, SAXException, JDOMException {
-		Map<String, TypeDescriptor> descriptors = new HashMap<String, TypeDescriptor>();
-		Configuration configuration = scufl2Tools.configurationFor(activity, selectionManager.getSelectedProfile());
-		if (activity.getType().equals(WSDLServiceDescription.ACTIVITY_TYPE)) {
-			String wsdlLocation = configuration.getJson().get("operation").get("wsdl").textValue();
-			String operationName = configuration.getJson().get("operation").get("name").textValue();
-			List<TypeDescriptor> inputDescriptors = new WSDLParser(wsdlLocation)
-					.getOperationInputParameters(operationName);
-			for (TypeDescriptor descriptor : inputDescriptors) {
-				descriptors.put(descriptor.getName(), descriptor);
-			}
-		} else if (activity.getType().equals(WSDLServiceDescription.INPUT_SPLITTER_TYPE)) {
-			String wrappedType = configuration.getJson().get("wrappedType").textValue();
-			Element element = new SAXBuilder().build(new StringReader(wrappedType)).getRootElement();
-			TypeDescriptor typeDescriptor = XMLSplitterSerialisationHelper.extensionXMLToTypeDescriptor(element);
-			if (typeDescriptor instanceof ComplexTypeDescriptor) {
-				for (TypeDescriptor desc : ((ComplexTypeDescriptor)typeDescriptor).getElements()) {
-					descriptors.put(desc.getName(), desc);
-				}
-			}
-			else if (typeDescriptor instanceof ArrayTypeDescriptor) {
-				TypeDescriptor desc = ((ArrayTypeDescriptor)typeDescriptor).getElementType();
-				descriptors.put(typeDescriptor.getName(), desc);
-			}
-		}
-		return descriptors;
-	}
-
-	@Override
-	protected boolean isInput() {
-		return true;
-	}
-
-}
diff --git a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/actions/AddXMLOutputSplitterAction.java b/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/actions/AddXMLOutputSplitterAction.java
deleted file mode 100644
index 60cba69..0000000
--- a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/actions/AddXMLOutputSplitterAction.java
+++ /dev/null
@@ -1,105 +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.activities.wsdl.actions;
-
-import java.io.IOException;
-import java.io.StringReader;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import javax.swing.JComponent;
-import javax.swing.JOptionPane;
-import javax.wsdl.WSDLException;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.jdom.Element;
-import org.jdom.JDOMException;
-import org.jdom.input.SAXBuilder;
-import org.xml.sax.SAXException;
-
-import net.sf.taverna.t2.activities.wsdl.servicedescriptions.WSDLServiceDescription;
-import net.sf.taverna.t2.activities.wsdl.xmlsplitter.AddXMLSplitterEdit;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.selection.SelectionManager;
-import net.sf.taverna.wsdl.parser.ArrayTypeDescriptor;
-import net.sf.taverna.wsdl.parser.ComplexTypeDescriptor;
-import net.sf.taverna.wsdl.parser.TypeDescriptor;
-import net.sf.taverna.wsdl.parser.UnknownOperationException;
-import net.sf.taverna.wsdl.parser.WSDLParser;
-import net.sf.taverna.wsdl.xmlsplitter.XMLSplitterSerialisationHelper;
-import uk.org.taverna.scufl2.api.activity.Activity;
-import uk.org.taverna.scufl2.api.configurations.Configuration;
-
-/**
- * Pops up a {@link JOptionPane} with the names of all the wsdl ports. The one
- * that is selected is added as an output splitter to the currently open
- * dataflow using the {@link AddXMLSplitterEdit}
- *
- * @author Ian Dunlop
- * @author Stian Soiland-Reyes
- */
-@SuppressWarnings("serial")
-public class AddXMLOutputSplitterAction extends AbstractAddXMLSplitterAction {
-
-	public AddXMLOutputSplitterAction(Activity activity, JComponent owner, EditManager editManager,
-			SelectionManager selectionManager) {
-		super(activity, owner, editManager, selectionManager);
-		putValue(NAME, "Add output XML splitter");
-
-	}
-
-	@Override
-	public Map<String, TypeDescriptor> getTypeDescriptors() throws UnknownOperationException, IOException, ParserConfigurationException, WSDLException, SAXException, JDOMException {
-		Map<String, TypeDescriptor> descriptors = new HashMap<String, TypeDescriptor>();
-		Configuration configuration = scufl2Tools.configurationFor(activity, selectionManager.getSelectedProfile());
-		if (activity.getType().equals(WSDLServiceDescription.ACTIVITY_TYPE)) {
-			String wsdlLocation = configuration.getJson().get("operation").get("wsdl").textValue();
-			String operationName = configuration.getJson().get("operation").get("name").textValue();
-			List<TypeDescriptor> inputDescriptors = new WSDLParser(wsdlLocation)
-					.getOperationOutputParameters(operationName);
-			for (TypeDescriptor descriptor : inputDescriptors) {
-				descriptors.put(descriptor.getName(), descriptor);
-			}
-		} else if (activity.getType().equals(WSDLServiceDescription.OUTPUT_SPLITTER_TYPE)) {
-			String wrappedType = configuration.getJson().get("wrappedType").textValue();
-			Element element = new SAXBuilder().build(new StringReader(wrappedType)).getRootElement();
-			TypeDescriptor typeDescriptor = XMLSplitterSerialisationHelper.extensionXMLToTypeDescriptor(element);
-			if (typeDescriptor instanceof ComplexTypeDescriptor) {
-				for (TypeDescriptor desc : ((ComplexTypeDescriptor) typeDescriptor)
-						.getElements()) {
-					descriptors.put(desc.getName(), desc);
-				}
-			}
-			else if (typeDescriptor instanceof ArrayTypeDescriptor) {
-				TypeDescriptor desc = ((ArrayTypeDescriptor)typeDescriptor).getElementType();
-				descriptors.put(typeDescriptor.getName(), desc);
-			}
-		}
-		return descriptors;
-	}
-
-	@Override
-	protected boolean isInput() {
-		return false;
-	}
-
-}
diff --git a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/actions/AddXMLSplitterEdit.java b/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/actions/AddXMLSplitterEdit.java
deleted file mode 100644
index 484feac..0000000
--- a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/actions/AddXMLSplitterEdit.java
+++ /dev/null
@@ -1,315 +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.activities.wsdl.actions;
-
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.List;
-
-import net.sf.taverna.t2.activities.wsdl.servicedescriptions.WSDLServiceDescription;
-import net.sf.taverna.t2.activities.wsdl.xmlsplitter.XMLSplitterConfigurationBeanBuilder;
-import net.sf.taverna.t2.workbench.edits.CompoundEdit;
-import net.sf.taverna.t2.workbench.edits.Edit;
-import net.sf.taverna.t2.workbench.edits.EditException;
-import net.sf.taverna.t2.workflow.edits.AddChildEdit;
-import net.sf.taverna.t2.workflow.edits.AddDataLinkEdit;
-import net.sf.taverna.t2.workflow.edits.AddProcessorEdit;
-import net.sf.taverna.wsdl.parser.ArrayTypeDescriptor;
-import net.sf.taverna.wsdl.parser.TypeDescriptor;
-import net.sf.taverna.wsdl.xmlsplitter.XMLSplitterSerialisationHelper;
-
-import org.jdom.Element;
-
-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.DataLink;
-import uk.org.taverna.scufl2.api.core.Processor;
-import uk.org.taverna.scufl2.api.core.Workflow;
-import uk.org.taverna.scufl2.api.iterationstrategy.CrossProduct;
-import uk.org.taverna.scufl2.api.port.InputProcessorPort;
-import uk.org.taverna.scufl2.api.port.OutputProcessorPort;
-import uk.org.taverna.scufl2.api.profiles.ProcessorBinding;
-import uk.org.taverna.scufl2.api.profiles.Profile;
-
-import com.fasterxml.jackson.databind.JsonNode;
-
-public class AddXMLSplitterEdit implements Edit<Workflow> {
-
-	public static final URI INPUT_SPLITTER_TYPE = URI
-			.create("http://ns.taverna.org.uk/2010/activity/xml-splitter/in");
-	public static final URI OUTPUT_SPLITTER_TYPE = URI
-			.create("http://ns.taverna.org.uk/2010/activity/xml-splitter/out");
-	public static final URI SPLITTER_CONFIG_TYPE = URI
-			.create("http://ns.taverna.org.uk/2010/activity/xml-splitter#Config");
-
-	private Scufl2Tools scufl2Tools = new Scufl2Tools();
-
-	private final Workflow workflow;
-	private final Profile profile;
-	private final Activity activity;
-	private TypeDescriptor typeDescriptor;
-	private final String portName;
-	private final boolean isInput;
-
-	private CompoundEdit compoundEdit1 = null;
-	private Edit<?> linkUpEdit;
-	private boolean applied = false;
-
-	public AddXMLSplitterEdit(Workflow workflow, Profile profile, Activity activity,
-			TypeDescriptor typeDescriptor, String portName, boolean isInput) {
-		this.workflow = workflow;
-		this.profile = profile;
-		this.activity = activity;
-		this.typeDescriptor = typeDescriptor;
-		this.portName = portName;
-		this.isInput = isInput;
-	}
-
-	@Override
-	public Workflow doEdit() throws EditException {
-		if (applied) {
-			throw new EditException("Edit has already been applied!");
-		}
-
-		Activity splitter = null;
-		Configuration splitterConfiguration = null;
-		String sourcePortName = "";
-		Processor sourceProcessor = null;
-
-		String sinkPortName = "";
-		Processor sinkProcessor = null;
-
-		Processor activityProcessor = null;
-		List<ProcessorBinding> processorBindingsToActivity = scufl2Tools
-				.processorBindingsToActivity(activity);
-		for (ProcessorBinding processorBinding : processorBindingsToActivity) {
-			activityProcessor = processorBinding.getBoundProcessor();
-			break;
-		}
-		if (activityProcessor == null) {
-			throw new EditException("Cannot find the processor that the activity belongs to");
-		}
-
-		String displayName = portName;
-		if (portName.equals("parameters")) {
-			displayName = isInput ? "input" : "output";
-		}
-		String processorName = activityProcessor.getName();
-		String candidateName;
-		if (displayName.startsWith(processorName)) {
-			// No need to make GetRequest_GetRequestResponse
-			candidateName = displayName;
-		} else {
-			// Combine with processor name
-			String displayProcessorName;
-			if (activity.getType().equals(INPUT_SPLITTER_TYPE)
-					|| activity.getType().equals(OUTPUT_SPLITTER_TYPE)) {
-				// For splitters on splitters - avoid adding up blah_bluh_blih_more_stuff
-				String[] processorNameSplit = processorName.replace("_input", "")
-						.replace("_output", "").split("_");
-				displayProcessorName = processorNameSplit[processorNameSplit.length - 1];
-			} else {
-				displayProcessorName = activityProcessor.getName();
-			}
-			candidateName = displayProcessorName + "_" + displayName;
-		}
-
-		Processor splitterProcessor = new Processor();
-		splitterProcessor.setName(candidateName);
-
-		CrossProduct crossProduct = new CrossProduct();
-		crossProduct.setParent(splitterProcessor.getIterationStrategyStack());
-
-		ProcessorBinding processorBinding = new ProcessorBinding();
-		processorBinding.setBoundProcessor(splitterProcessor);
-
-		try {
-			if (activity.getType().equals(INPUT_SPLITTER_TYPE)) {
-				if (!isInput) {
-					throw new EditException(
-							"Can only add an input splitter to another input splitter");
-				}
-				if (typeDescriptor instanceof ArrayTypeDescriptor
-						&& !((ArrayTypeDescriptor) typeDescriptor).isWrapped()) {
-					typeDescriptor = ((ArrayTypeDescriptor) typeDescriptor).getElementType();
-				}
-
-				Element element = XMLSplitterSerialisationHelper
-						.typeDescriptorToExtensionXML(typeDescriptor);
-//				String wrappedType = new XMLOutputter().outputString(element);
-
-				splitter = new Activity();
-				splitter.setType(INPUT_SPLITTER_TYPE);
-				splitterConfiguration = new Configuration();
-				splitterConfiguration.setType(SPLITTER_CONFIG_TYPE);
-				splitterConfiguration.setConfigures(splitter);
-//				((ObjectNode) splitterConfiguration.getJson()).put("wrappedType", wrappedType);
-
-				JsonNode bean = XMLSplitterConfigurationBeanBuilder.buildBeanForInput(element);
-				splitterConfiguration.setJson(bean);
-
-				XMLSplitterPortBuilder.addPortsForInput(element, splitter, splitterProcessor,
-						processorBinding);
-
-			} else if (activity.getType().equals(OUTPUT_SPLITTER_TYPE)) {
-				if (isInput) {
-					throw new EditException(
-							"Can only add an output splitter to another output splitter");
-				}
-				if (typeDescriptor instanceof ArrayTypeDescriptor
-						&& !((ArrayTypeDescriptor) typeDescriptor).isWrapped()) {
-					typeDescriptor = ((ArrayTypeDescriptor) typeDescriptor).getElementType();
-				}
-
-				Element element = XMLSplitterSerialisationHelper
-						.typeDescriptorToExtensionXML(typeDescriptor);
-//				String wrappedType = new XMLOutputter().outputString(element);
-
-				splitter = new Activity();
-				splitter.setType(OUTPUT_SPLITTER_TYPE);
-				splitterConfiguration = new Configuration();
-				splitterConfiguration.setType(SPLITTER_CONFIG_TYPE);
-				splitterConfiguration.setConfigures(splitter);
-//				((ObjectNode) splitterConfiguration.getJson()).put("wrappedType", wrappedType);
-
-				JsonNode bean = XMLSplitterConfigurationBeanBuilder.buildBeanForOutput(element);
-				splitterConfiguration.setJson(bean);
-
-				XMLSplitterPortBuilder.addPortsForOutput(element, splitter, splitterProcessor,
-						processorBinding);
-
-			} else if (activity.getType().equals(WSDLServiceDescription.ACTIVITY_TYPE)) {
-				if (isInput) {
-					Element element = XMLSplitterSerialisationHelper
-							.typeDescriptorToExtensionXML(typeDescriptor);
-//					String wrappedType = new XMLOutputter().outputString(element);
-
-					splitter = new Activity();
-					splitter.setType(WSDLServiceDescription.INPUT_SPLITTER_TYPE);
-					splitterConfiguration = new Configuration();
-					splitterConfiguration.setType(SPLITTER_CONFIG_TYPE);
-					splitterConfiguration.setConfigures(splitter);
-//					((ObjectNode) splitterConfiguration.getJson()).put("wrappedType", wrappedType);
-
-					JsonNode bean = XMLSplitterConfigurationBeanBuilder.buildBeanForInput(element);
-					splitterConfiguration.setJson(bean);
-
-					XMLSplitterPortBuilder.addPortsForInput(element, splitter, splitterProcessor,
-							processorBinding);
-
-				} else {
-					Element element = XMLSplitterSerialisationHelper
-							.typeDescriptorToExtensionXML(typeDescriptor);
-//					String wrappedType = new XMLOutputter().outputString(element);
-
-					splitter = new Activity();
-					splitter.setType(WSDLServiceDescription.OUTPUT_SPLITTER_TYPE);
-					splitterConfiguration = new Configuration();
-					splitterConfiguration.setType(SPLITTER_CONFIG_TYPE);
-					splitterConfiguration.setConfigures(splitter);
-//					((ObjectNode) splitterConfiguration.getJson()).put("wrappedType", wrappedType);
-
-					JsonNode bean = XMLSplitterConfigurationBeanBuilder.buildBeanForOutput(element);
-					splitterConfiguration.setJson(bean);
-
-					XMLSplitterPortBuilder.addPortsForOutput(element, splitter, splitterProcessor,
-							processorBinding);
-				}
-			} else {
-				throw new EditException(
-						"The activity type is not suitable for adding xml processing processors");
-			}
-		} catch (Exception e) {
-			throw new EditException(
-					"An error occured whilst tyring to add an XMLSplitter to the activity:"
-							+ activity, e);
-		}
-
-		if (isInput) {
-			sourcePortName = "output";
-			sinkPortName = portName;
-			sinkProcessor = activityProcessor;
-			sourceProcessor = splitterProcessor;
-		} else {
-			sourcePortName = portName;
-			sinkPortName = "input";
-			sinkProcessor = splitterProcessor;
-			sourceProcessor = activityProcessor;
-		}
-
-		processorBinding.setBoundActivity(splitter);
-
-		List<Edit<?>> editList = new ArrayList<Edit<?>>();
-		editList.add(new AddChildEdit<Profile>(profile, splitter));
-		editList.add(new AddChildEdit<Profile>(profile, splitterConfiguration));
-		editList.add(new AddChildEdit<Profile>(profile, processorBinding));
-		editList.add(new AddProcessorEdit(workflow, splitterProcessor));
-
-		compoundEdit1 = new CompoundEdit(editList);
-		compoundEdit1.doEdit();
-
-		List<Edit<?>> linkUpEditList = new ArrayList<Edit<?>>();
-
-		OutputProcessorPort source = sourceProcessor.getOutputPorts().getByName(sourcePortName);
-		InputProcessorPort sink = sinkProcessor.getInputPorts().getByName(sinkPortName);
-
-		if (source == null)
-			throw new EditException("Unable to find the source port when linking up "
-					+ sourcePortName + " to " + sinkPortName);
-		if (sink == null)
-			throw new EditException("Unable to find the sink port when linking up "
-					+ sourcePortName + " to " + sinkPortName);
-
-		DataLink dataLink = new DataLink();
-		dataLink.setReceivesFrom(source);
-		dataLink.setSendsTo(sink);
-		linkUpEditList.add(new AddDataLinkEdit(workflow, dataLink));
-
-		linkUpEdit = new CompoundEdit(linkUpEditList);
-		linkUpEdit.doEdit();
-		applied = true;
-		return workflow;
-	}
-
-	@Override
-	public void undo() {
-		if (!applied) {
-			throw new RuntimeException("Attempt to undo edit that was never applied");
-		}
-		if (linkUpEdit.isApplied())
-			linkUpEdit.undo();
-		if (compoundEdit1.isApplied())
-			compoundEdit1.undo();
-		applied = false;
-	}
-
-	@Override
-	public boolean isApplied() {
-		return applied;
-	}
-
-	@Override
-	public Object getSubject() {
-		return workflow;
-	}
-
-}
diff --git a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/actions/WSDLActivityConfigureAction.java b/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/actions/WSDLActivityConfigureAction.java
deleted file mode 100644
index 92a8fb6..0000000
--- a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/actions/WSDLActivityConfigureAction.java
+++ /dev/null
@@ -1,71 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007-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.activities.wsdl.actions;
-
-import java.awt.Frame;
-import java.awt.event.ActionEvent;
-
-import javax.swing.Action;
-import javax.swing.JDialog;
-
-import net.sf.taverna.t2.activities.wsdl.views.WSDLActivityConfigurationView;
-import net.sf.taverna.t2.security.credentialmanager.CredentialManager;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.file.FileManager;
-import net.sf.taverna.t2.workbench.ui.actions.activity.ActivityConfigurationAction;
-import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ActivityConfigurationDialog;
-import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ActivityConfigurationPanel;
-import uk.org.taverna.scufl2.api.activity.Activity;
-
-@SuppressWarnings("serial")
-public class WSDLActivityConfigureAction extends ActivityConfigurationAction {
-
-	private final EditManager editManager;
-	private final FileManager fileManager;
-	private final CredentialManager credentialManager;
-
-	public WSDLActivityConfigureAction(Activity activity, Frame owner, EditManager editManager,
-			FileManager fileManager, ActivityIconManager activityIconManager,
-			ServiceDescriptionRegistry serviceDescriptionRegistry, CredentialManager credentialManager) {
-		super(activity, activityIconManager, serviceDescriptionRegistry);
-		this.editManager = editManager;
-		this.fileManager = fileManager;
-		this.credentialManager = credentialManager;
-		putValue(Action.NAME, "Configure security");
-	}
-
-	public void actionPerformed(ActionEvent e) {
-		JDialog currentDialog = ActivityConfigurationAction.getDialog(getActivity());
-		if (currentDialog != null) {
-			currentDialog.toFront();
-			return;
-		}
-		final ActivityConfigurationPanel rshellConfigView = new WSDLActivityConfigurationView(
-				getActivity(), credentialManager);
-		final ActivityConfigurationDialog dialog = new ActivityConfigurationDialog(getActivity(),
-				rshellConfigView, editManager);
-
-		ActivityConfigurationAction.setDialog(getActivity(), dialog, fileManager);
-	}
-
-}
diff --git a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/actions/XMLSplitterPortBuilder.java b/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/actions/XMLSplitterPortBuilder.java
deleted file mode 100644
index f41f298..0000000
--- a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/actions/XMLSplitterPortBuilder.java
+++ /dev/null
@@ -1,127 +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.activities.wsdl.actions;
-
-import net.sf.taverna.wsdl.parser.ArrayTypeDescriptor;
-import net.sf.taverna.wsdl.parser.BaseTypeDescriptor;
-import net.sf.taverna.wsdl.parser.ComplexTypeDescriptor;
-import net.sf.taverna.wsdl.parser.TypeDescriptor;
-import net.sf.taverna.wsdl.xmlsplitter.XMLSplitterSerialisationHelper;
-
-import org.jdom.Element;
-
-import uk.org.taverna.scufl2.api.activity.Activity;
-import uk.org.taverna.scufl2.api.common.NamedSet;
-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.OutputProcessorPort;
-import uk.org.taverna.scufl2.api.profiles.ProcessorBinding;
-import uk.org.taverna.scufl2.api.profiles.ProcessorInputPortBinding;
-import uk.org.taverna.scufl2.api.profiles.ProcessorOutputPortBinding;
-
-/**
- * A helper class to facilitate in building XMLSplitter ports
- * from the type descriptor XML.
- *
- * @author Stuart Owen
- * @author David Withers
- */
-public class XMLSplitterPortBuilder {
-
-	public static void addPortsForInput(Element element, Activity activity, Processor processor,
-			ProcessorBinding binding) {
-		TypeDescriptor descriptor = XMLSplitterSerialisationHelper.extensionXMLToTypeDescriptor(element);
-		addOutputPort("output", 0, activity, processor, binding);
-
-		if (descriptor instanceof ComplexTypeDescriptor) {
-			for (TypeDescriptor typeDescriptor : ((ComplexTypeDescriptor) descriptor).getElements()) {
-				addInputPort(typeDescriptor.getName(), depthForDescriptor(typeDescriptor), activity, processor,
-						binding);
-			}
-			NamedSet<InputActivityPort> inputPorts = activity.getInputPorts();
-			for (TypeDescriptor typeDescriptor : ((ComplexTypeDescriptor) descriptor).getAttributes()) {
-				String name = typeDescriptor.getName();
-				if (inputPorts.containsName(name)) {
-					name = "1" + name;
-				}
-				addInputPort(name, depthForDescriptor(typeDescriptor), activity, processor, binding);
-			}
-		} else if (descriptor instanceof ArrayTypeDescriptor) {
-			addInputPort(descriptor.getName(), 1, activity, processor, binding);
-		}
-	}
-
-	public static void addPortsForOutput(Element element, Activity activity, Processor processor,
-			ProcessorBinding binding) {
-		TypeDescriptor descriptor = XMLSplitterSerialisationHelper.extensionXMLToTypeDescriptor(element);
-		addInputPort("input", 0, activity, processor, binding);
-
-		if (descriptor instanceof ComplexTypeDescriptor) {
-			for (TypeDescriptor typeDescriptor : ((ComplexTypeDescriptor) descriptor).getElements()) {
-				addOutputPort(typeDescriptor.getName(), depthForDescriptor(typeDescriptor), activity, processor,
-						binding);
-			}
-			NamedSet<OutputActivityPort> outputPorts = activity.getOutputPorts();
-			for (TypeDescriptor typeDescriptor : ((ComplexTypeDescriptor) descriptor).getAttributes()) {
-				String name = typeDescriptor.getName();
-				if (outputPorts.containsName(name)) {
-					name = "1" + name;
-				}
-				addOutputPort(name, depthForDescriptor(typeDescriptor), activity, processor, binding);
-			}
-		} else if (descriptor instanceof ArrayTypeDescriptor) {
-			addOutputPort(descriptor.getName(), 1, activity, processor, binding);
-		}
-	}
-
-	private static int depthForDescriptor(TypeDescriptor desc) {
-		if (desc instanceof ArrayTypeDescriptor
-				&& (!((ArrayTypeDescriptor) desc).isWrapped() || ((ArrayTypeDescriptor) desc)
-						.getElementType() instanceof BaseTypeDescriptor)) {
-			return 1;
-		} else {
-			return 0;
-		}
-	}
-
-	private static void addOutputPort(String name, int depth, Activity activity,
-			Processor processor, ProcessorBinding binding) {
-		OutputActivityPort activityPort = new OutputActivityPort(activity, name);
-		activityPort.setDepth(depth);
-		activityPort.setGranularDepth(depth);
-		OutputProcessorPort processorPort = new OutputProcessorPort(processor, name);
-		processorPort.setDepth(depth);
-		processorPort.setGranularDepth(depth);
-		new ProcessorOutputPortBinding(binding, activityPort, processorPort);
-	}
-
-	private static void addInputPort(String name, int depth, Activity activity,
-			Processor processor, ProcessorBinding binding) {
-		InputActivityPort activityPort = new InputActivityPort(activity, name);
-		activityPort.setDepth(depth);
-		InputProcessorPort processorPort = new InputProcessorPort(processor, name);
-		processorPort.setDepth(depth);
-		new ProcessorInputPortBinding(binding, processorPort, activityPort);
-	}
-
-}
diff --git a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/menu/AddXMLInputSplitterForWSDLActivityMenuAction.java b/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/menu/AddXMLInputSplitterForWSDLActivityMenuAction.java
deleted file mode 100644
index a2935e6..0000000
--- a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/menu/AddXMLInputSplitterForWSDLActivityMenuAction.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package net.sf.taverna.t2.activities.wsdl.menu;
-
-import net.sf.taverna.t2.activities.wsdl.servicedescriptions.WSDLServiceDescription;
-
-public class AddXMLInputSplitterForWSDLActivityMenuAction extends AddXMLInputSplitterMenuAction {
-
-	public AddXMLInputSplitterForWSDLActivityMenuAction() {
-		super(WSDLServiceDescription.ACTIVITY_TYPE);
-	}
-
-}
diff --git a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/menu/AddXMLInputSplitterForXMLInputSplitterMenuAction.java b/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/menu/AddXMLInputSplitterForXMLInputSplitterMenuAction.java
deleted file mode 100644
index 070c006..0000000
--- a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/menu/AddXMLInputSplitterForXMLInputSplitterMenuAction.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package net.sf.taverna.t2.activities.wsdl.menu;
-
-import net.sf.taverna.t2.activities.wsdl.servicedescriptions.WSDLServiceDescription;
-
-public class AddXMLInputSplitterForXMLInputSplitterMenuAction extends AddXMLInputSplitterMenuAction {
-
-	public AddXMLInputSplitterForXMLInputSplitterMenuAction() {
-		super(WSDLServiceDescription.INPUT_SPLITTER_TYPE);
-	}
-
-}
diff --git a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/menu/AddXMLInputSplitterMenuAction.java b/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/menu/AddXMLInputSplitterMenuAction.java
deleted file mode 100644
index 60ef904..0000000
--- a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/menu/AddXMLInputSplitterMenuAction.java
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- *
- */
-package net.sf.taverna.t2.activities.wsdl.menu;
-
-import java.io.IOException;
-import java.net.URI;
-import java.util.Map;
-
-import javax.swing.Action;
-import javax.wsdl.WSDLException;
-import javax.xml.parsers.ParserConfigurationException;
-
-import org.jdom.JDOMException;
-import org.xml.sax.SAXException;
-
-import net.sf.taverna.t2.activities.wsdl.InputPortTypeDescriptorActivity;
-import net.sf.taverna.t2.activities.wsdl.actions.AbstractAddXMLSplitterAction;
-import net.sf.taverna.t2.activities.wsdl.actions.AddXMLInputSplitterAction;
-import net.sf.taverna.t2.ui.menu.ContextualMenuComponent;
-import net.sf.taverna.t2.ui.menu.MenuComponent;
-import net.sf.taverna.t2.workbench.activitytools.AbstractConfigureActivityMenuAction;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.selection.SelectionManager;
-import net.sf.taverna.wsdl.parser.TypeDescriptor;
-import net.sf.taverna.wsdl.parser.UnknownOperationException;
-
-/**
- * @author alanrw
- */
-public abstract class AddXMLInputSplitterMenuAction extends AbstractConfigureActivityMenuAction
-		implements MenuComponent, ContextualMenuComponent {
-
-	private static final String ADD_XML_INPUT_SPLITTER = "Add XML Input Splitter";
-	private EditManager editManager;
-	private SelectionManager selectionManager;
-
-	public AddXMLInputSplitterMenuAction(URI activityType) {
-		super(activityType);
-	}
-
-	@Override
-	protected Action createAction() {
-		AddXMLInputSplitterAction configAction = new AddXMLInputSplitterAction(findActivity(),
-				null, editManager, selectionManager);
-		Map<String, TypeDescriptor> descriptors;
-		try {
-			descriptors = configAction.getTypeDescriptors();
-		} catch (UnknownOperationException | IOException | ParserConfigurationException
-				| WSDLException | SAXException | JDOMException e) {
-			return null;
-		}
-		if (!AbstractAddXMLSplitterAction.filterDescriptors(descriptors).isEmpty()) {
-			configAction.putValue(Action.NAME, ADD_XML_INPUT_SPLITTER);
-			addMenuDots(configAction);
-			return configAction;
-		} else {
-			return null;
-		}
-	}
-
-	public void setEditManager(EditManager editManager) {
-		this.editManager = editManager;
-	}
-
-	public void setSelectionManager(SelectionManager selectionManager) {
-		this.selectionManager = selectionManager;
-	}
-
-}
diff --git a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/menu/AddXMLOutputSplitterForWSDLActivityMenuAction.java b/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/menu/AddXMLOutputSplitterForWSDLActivityMenuAction.java
deleted file mode 100644
index 58b3724..0000000
--- a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/menu/AddXMLOutputSplitterForWSDLActivityMenuAction.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package net.sf.taverna.t2.activities.wsdl.menu;
-
-import net.sf.taverna.t2.activities.wsdl.servicedescriptions.WSDLServiceDescription;
-
-public class AddXMLOutputSplitterForWSDLActivityMenuAction extends AddXMLOutputSplitterMenuAction {
-
-	public AddXMLOutputSplitterForWSDLActivityMenuAction() {
-		super(WSDLServiceDescription.ACTIVITY_TYPE);
-	}
-
-}
diff --git a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/menu/AddXMLOutputSplitterForXMLOutputSplitterMenuAction.java b/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/menu/AddXMLOutputSplitterForXMLOutputSplitterMenuAction.java
deleted file mode 100644
index 129c996..0000000
--- a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/menu/AddXMLOutputSplitterForXMLOutputSplitterMenuAction.java
+++ /dev/null
@@ -1,11 +0,0 @@
-package net.sf.taverna.t2.activities.wsdl.menu;
-
-import net.sf.taverna.t2.activities.wsdl.servicedescriptions.WSDLServiceDescription;
-
-public class AddXMLOutputSplitterForXMLOutputSplitterMenuAction extends AddXMLOutputSplitterMenuAction {
-
-	public AddXMLOutputSplitterForXMLOutputSplitterMenuAction() {
-		super(WSDLServiceDescription.OUTPUT_SPLITTER_TYPE);
-	}
-
-}
diff --git a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/menu/AddXMLOutputSplitterMenuAction.java b/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/menu/AddXMLOutputSplitterMenuAction.java
deleted file mode 100644
index 33541e6..0000000
--- a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/menu/AddXMLOutputSplitterMenuAction.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/**
- *
- */
-package net.sf.taverna.t2.activities.wsdl.menu;
-
-import java.io.IOException;
-import java.net.URI;
-import java.util.Map;
-
-import javax.swing.Action;
-import javax.wsdl.WSDLException;
-import javax.xml.parsers.ParserConfigurationException;
-
-import net.sf.taverna.t2.activities.wsdl.actions.AbstractAddXMLSplitterAction;
-import net.sf.taverna.t2.activities.wsdl.actions.AddXMLOutputSplitterAction;
-import net.sf.taverna.t2.workbench.activitytools.AbstractConfigureActivityMenuAction;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.selection.SelectionManager;
-import net.sf.taverna.wsdl.parser.TypeDescriptor;
-import net.sf.taverna.wsdl.parser.UnknownOperationException;
-
-import org.jdom.JDOMException;
-import org.xml.sax.SAXException;
-
-/**
- * @author alanrw
- */
-public abstract class AddXMLOutputSplitterMenuAction extends AbstractConfigureActivityMenuAction {
-
-	private static final String ADD_XML_OUTPUT_SPLITTER = "Add XML Output Splitter";
-	private EditManager editManager;
-	private SelectionManager selectionManager;
-
-	public AddXMLOutputSplitterMenuAction(URI activityType) {
-		super(activityType);
-	}
-
-	@Override
-	protected Action createAction() {
-		AddXMLOutputSplitterAction configAction = new AddXMLOutputSplitterAction(
-				findActivity(), null, editManager, selectionManager);
-		Map<String, TypeDescriptor> descriptors;
-		try {
-			descriptors = configAction.getTypeDescriptors();
-		} catch (UnknownOperationException | IOException | ParserConfigurationException
-				| WSDLException | SAXException | JDOMException e) {
-			return null;
-		}
-		if (!AbstractAddXMLSplitterAction.filterDescriptors(descriptors).isEmpty()) {
-			configAction.putValue(Action.NAME, ADD_XML_OUTPUT_SPLITTER);
-			addMenuDots(configAction);
-			return configAction;
-		} else {
-			return null;
-		}
-	}
-
-	public void setEditManager(EditManager editManager) {
-		this.editManager = editManager;
-	}
-
-	public void setSelectionManager(SelectionManager selectionManager) {
-		this.selectionManager = selectionManager;
-	}
-
-}
diff --git a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/menu/ConfigureWSDLMenuAction.java b/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/menu/ConfigureWSDLMenuAction.java
deleted file mode 100644
index 87e7d0f..0000000
--- a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/menu/ConfigureWSDLMenuAction.java
+++ /dev/null
@@ -1,78 +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.activities.wsdl.menu;
-
-import javax.swing.Action;
-
-import net.sf.taverna.t2.activities.wsdl.actions.WSDLActivityConfigureAction;
-import net.sf.taverna.t2.activities.wsdl.servicedescriptions.WSDLServiceDescription;
-import net.sf.taverna.t2.security.credentialmanager.CredentialManager;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;
-import net.sf.taverna.t2.ui.menu.ContextualMenuComponent;
-import net.sf.taverna.t2.ui.menu.MenuComponent;
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;
-import net.sf.taverna.t2.workbench.activitytools.AbstractConfigureActivityMenuAction;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.file.FileManager;
-
-public class ConfigureWSDLMenuAction extends AbstractConfigureActivityMenuAction implements
-		MenuComponent, ContextualMenuComponent {
-
-	private EditManager editManager;
-	private ActivityIconManager activityIconManager;
-	private ServiceDescriptionRegistry serviceDescriptionRegistry;
-	private CredentialManager credentialManager;
-	private FileManager fileManager;
-
-	public ConfigureWSDLMenuAction() {
-		super(WSDLServiceDescription.ACTIVITY_TYPE);
-	}
-
-	@Override
-	protected Action createAction() {
-		WSDLActivityConfigureAction configAction = new WSDLActivityConfigureAction(findActivity(),
-				getParentFrame(), editManager, fileManager, activityIconManager,
-				serviceDescriptionRegistry, credentialManager);
-		addMenuDots(configAction);
-		return configAction;
-	}
-
-	public void setEditManager(EditManager editManager) {
-		this.editManager = editManager;
-	}
-
-	public void setFileManager(FileManager fileManager) {
-		this.fileManager = fileManager;
-	}
-
-	public void setActivityIconManager(ActivityIconManager activityIconManager) {
-		this.activityIconManager = activityIconManager;
-	}
-
-	public void setServiceDescriptionRegistry(ServiceDescriptionRegistry serviceDescriptionRegistry) {
-		this.serviceDescriptionRegistry = serviceDescriptionRegistry;
-	}
-
-	public void setCredentialManager(CredentialManager credentialManager) {
-		this.credentialManager = credentialManager;
-	}
-
-}
diff --git a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/servicedescriptions/AddWSDLServiceDialog.java b/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/servicedescriptions/AddWSDLServiceDialog.java
deleted file mode 100644
index b2b31ae..0000000
--- a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/servicedescriptions/AddWSDLServiceDialog.java
+++ /dev/null
@@ -1,303 +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.activities.wsdl.servicedescriptions;
-
-import java.awt.BorderLayout;
-import java.awt.FlowLayout;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.Insets;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.KeyEvent;
-import java.io.IOException;
-import java.net.URL;
-import java.net.URLConnection;
-
-import javax.swing.JButton;
-import javax.swing.JLabel;
-import javax.swing.JOptionPane;
-import javax.swing.JPanel;
-import javax.swing.JTextField;
-import javax.swing.border.EmptyBorder;
-
-import net.sf.taverna.t2.workbench.MainWindow;
-import net.sf.taverna.t2.workbench.helper.HelpEnabledDialog;
-
-import org.apache.log4j.Logger;
-
-/**
- * Dialog that lets user specify a URL of a WSDL service they want
- * to add to the Service Panel. In the case the WSDL URL is behind
- * HTTPS or service's endpoints require HTTPS it will ask user to confirm
- * if they want to trust it.
- *
- * @author Alex Nenadic
- *
- */
-@SuppressWarnings("serial")
-public abstract class AddWSDLServiceDialog extends HelpEnabledDialog {
-
-	private JTextField wsdlLocationField;
-	private Logger logger = Logger.getLogger(AddWSDLServiceDialog.class);
-
-	public AddWSDLServiceDialog()  {
-		super(MainWindow.getMainWindow(), "Add WSDL service", true, null); // create a non-modal dialog
-		initComponents();
-		setLocationRelativeTo(getParent());
-	}
-
-	private void initComponents() {
-		JPanel mainPanel = new JPanel(new GridBagLayout());
-		mainPanel.setBorder(new EmptyBorder(10,10,10,10));
-
-		JLabel wsdlLocatitionLabel = new JLabel("WSDL location",WSDLActivityIcon.getWSDLIcon(), JLabel.LEFT);
-		GridBagConstraints gbc = new GridBagConstraints();
-		gbc.weighty = 0.0;
-
-		gbc.weightx = 0.0;
-		gbc.gridx = 0;
-		gbc.gridy = 0;
-		gbc.fill = GridBagConstraints.NONE;
-		gbc.anchor = GridBagConstraints.WEST;
-		gbc.insets = new Insets(5, 10, 0, 0);
-		mainPanel.add(wsdlLocatitionLabel, gbc);
-
-		wsdlLocationField = new JTextField("http://somehost/service?wsdl");
-		gbc.weightx = 1.0;
-		gbc.gridx = 1;
-		gbc.gridy = 0;
-		gbc.fill = GridBagConstraints.HORIZONTAL;
-		gbc.anchor = GridBagConstraints.WEST;
-		gbc.insets = new Insets(5, 10, 0, 5);
-		mainPanel.add(wsdlLocationField, gbc);
-
-	    final JButton addServiceButton = new JButton("Add");
-	    addServiceButton.addActionListener(new ActionListener()
-	        {
-	            public void actionPerformed(ActionEvent evt)
-	            {
-	                addPressed();
-	            }
-	        });
-
-	    // When user presses "Return" key fire the action on the "Add" button
-	    addServiceButton.addKeyListener(new java.awt.event.KeyAdapter() {
-			public void keyPressed(java.awt.event.KeyEvent evt) {
-				if (evt.getKeyCode() == KeyEvent.VK_ENTER) {
-					addPressed();
-				}
-			}
-		});
-		getRootPane().setDefaultButton(addServiceButton);
-
-        JPanel buttonsPanel = new JPanel(new FlowLayout(FlowLayout.CENTER));
-        buttonsPanel.add(addServiceButton);
-
-        getContentPane().setLayout(new BorderLayout());
-        getContentPane().add(mainPanel, BorderLayout.CENTER);
-        getContentPane().add(buttonsPanel, BorderLayout.SOUTH);
-
-		setSize(getPreferredSize());
-        pack();
-	}
-
-    /**
-     * 'Add service' button pressed or otherwise activated.
-     */
-    private void addPressed()
-    {
-		final String wsdlURLString = wsdlLocationField.getText().trim();
-		new Thread("Adding WSDL " + wsdlURLString) {
-			public void run() {
-				// Only add the service provider for this service if service URL
-				// starts with 'http'
-				// or if it starts with 'https' and user explicitly said they
-				// wanted to trust this service.
-				/*
-				 * if (shouldTrust(wsdlURLString)){ addRegistry(wsdlURLString);
-				 * }
-				 */
-				try {
-					URL url = new URL(wsdlURLString);
-					URLConnection connection = url.openConnection();
-					try {
-						// If the url starts with 'https' - security hook for
-						// https connection's trust manager
-						// will be engaged and user will be asked automatically
-						// if they want
-						// to trust the connection (if it is not already
-						// trusted). If the urls starts with 'http' -
-						// this will not have any effect apart from checking if
-						// we can open a connection.
-						connection.connect(); // if this does not fail - add the
-						// WSDL
-						// service provider for this service to
-						// the registry
-					} finally {
-						try {
-							connection.getInputStream().close();
-						} catch (IOException ex) {
-						}
-					}
-					addRegistry(wsdlURLString);
-				} catch (Exception ex) { // anything failed
-					JOptionPane.showMessageDialog(null,
-							"Could not read the WSDL definition from "
-									+ wsdlURLString + ":\n" + ex,
-							"Could not add WSDL service",
-							JOptionPane.ERROR_MESSAGE);
-
-					logger.error(
-							"Failed to add WSDL service provider for service: "
-									+ wsdlURLString, ex);
-
-				}
-			};
-		}.start();
-		closeDialog();
-    }
-
-    /**
-     * If WSDL service's URL starts with 'https' - asks user
-     * whether to trust it or not. If it starts with 'http' -
-     * does not ask anything as the service is implicitly trusted (weird but true).
-     */
-	protected abstract void addRegistry(String wsdl);
-
-	/**
-	 * Checks if a service is trusted and if not - asks user if they want to trust it.
-	 */
-//	public boolean shouldTrust(String wsdlURLString){
-//		try {
-//			URI wsdlURI = new URI(wsdlURLString);
-//			URL wsdlURL = wsdlURI.toURL();
-//			String protocol = wsdlURL.getProtocol();
-//			if (protocol.toLowerCase().startsWith("https")){
-//				logger.info("Checking if service " + wsdlURLString + " is already trusted.");
-//				// Check if opening an HTTPS connection will cause a SSLHandshakeException.
-//				// This is most probably due to the fact that we do not have this service's
-//				// certificate in Credential Manager's truststore
-//				try {
-//					HttpsURLConnection httpsConnection;
-//					httpsConnection = (HttpsURLConnection) wsdlURL.openConnection();
-//					httpsConnection.connect();
-//					logger.info("HTTPS works out of the box for service " + wsdlURLString);
-//					return true; // Opening HTTPS connection worked - so we trust this service already
-//				}
-//				catch (SSLException sslex) { // most probably due to the fact that service is not trusted, i.e. its certificate is not in Credential Manager's Truststore
-//					logger.info("Service " + wsdlURLString + " is not trusted out of the box. Trying to fetch its certificate.");
-//					logger.info("The SSLException was caused by: " + sslex.getCause());
-//						// Handshake most probably failed as we do not already trust this service -
-//						// fetch its certificate and ask user if they want to add this service as trusted
-//					try {
-//
-//						// This controls SSL socket creation for HTTPS connections
-//						// per thread so the damage of switching off certificates
-//						// verification is limited
-//						ThreadLocalSSLSocketFactory.install();
-//						// switch certificate checking off for a moment so we can fetch
-//						// service's certificate
-//						ThreadLocalSSLSocketFactory.startTrustingEverything();
-//
-//						HttpsURLConnection httpsConnection;
-//						httpsConnection = (HttpsURLConnection) wsdlURL
-//								.openConnection();
-//						httpsConnection.connect();
-//						// Stop being overly trusting
-//						ThreadLocalSSLSocketFactory.stopTrustingEverything();
-//						Certificate[] certificates = httpsConnection
-//								.getServerCertificates();
-//						logger.info("Need to ask user if they want to trust service " + wsdlURLString);
-//						// Ask user if they want to trust this service
-//						ConfirmTrustedCertificateDialog confirmCertTrustDialog = new ConfirmTrustedCertificateDialog(
-//								this, "Untrusted HTTPS connection", true,
-//								(X509Certificate) certificates[0]);
-//						confirmCertTrustDialog.setLocationRelativeTo(null);
-//						confirmCertTrustDialog.setVisible(true);
-//						boolean shouldTrust = confirmCertTrustDialog
-//								.shouldTrust();
-//						if (shouldTrust) {
-//							try {
-//								CredentialManager credManager = CredentialManager
-//										.getInstance();
-//								credManager
-//										.saveTrustedCertificate((X509Certificate) certificates[0]);
-//								return true;
-//							} catch (CMException cme) {
-//								logger
-//										.error(
-//												"Failed to add WSDL service provider for service: "
-//														+ wsdlURLString
-//														+ " . Credential Manager failed to "
-//														+ "save trusted certificate.",
-//												cme);
-//								return false;
-//							}
-//						} else {
-//							// Do not even add a WSDL service provider for this
-//							// service and tell user the service will not be
-//							// added to Service Panel
-//							JOptionPane
-//									.showMessageDialog(
-//											this,
-//											"As you refused to trust it, the service will not be added to Service Panel.",
-//											"Add WSDL service",
-//											JOptionPane.INFORMATION_MESSAGE);
-//							return false;
-//						}
-//					} catch (Exception e1) {
-//						logger
-//								.error(
-//										"Failed to add WSDL service provider for service: "
-//												+ wsdlURLString
-//												+ ". 'Trust everyone' HTTPS connection failed.",
-//										e1);
-//						return false;
-//					} finally {// switch it off here as well if some unexpected exception occurred
-//						ThreadLocalSSLSocketFactory.stopTrustingEverything();
-//					}
-//
-//				} catch (Exception e2) {
-//					logger.error("Failed to add WSDL service provider for service: "+ wsdlURLString+". Connecting to service failed.", e2);
-//					return false;
-//				}
-//			}
-//			else{ // protocol starts with 'http'
-//				return true;
-//			}
-//		} catch (MalformedURLException e3) {
-//			logger.error("Failed to add WSDL service provider: URL "+ wsdlURLString+" was malformed.", e3);
-//			return false;
-//		} catch (URISyntaxException e4) {
-//			logger.error("Failed to add WSDL service provider: URI "+ wsdlURLString+" could not be parsed.", e4);
-//			return false;
-//		}
-//	}
-
-	/**
-	 * Closes the dialog.
-	 */
-	private void closeDialog() {
-		setVisible(false);
-		dispose();
-	}
-}
diff --git a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/servicedescriptions/ConfirmTrustedCertificateDialog.java b/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/servicedescriptions/ConfirmTrustedCertificateDialog.java
deleted file mode 100644
index bc58aad..0000000
--- a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/servicedescriptions/ConfirmTrustedCertificateDialog.java
+++ /dev/null
@@ -1,586 +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.activities.wsdl.servicedescriptions;
-
-import java.awt.BorderLayout;
-import java.awt.Color;
-import java.awt.Dialog;
-import java.awt.FlowLayout;
-import java.awt.Frame;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.Insets;
-import java.awt.Font;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.WindowAdapter;
-import java.awt.event.WindowEvent;
-import java.math.BigInteger;
-import java.util.HashMap;
-
-import javax.swing.JButton;
-import javax.swing.JLabel;
-import javax.swing.JPanel;
-import javax.swing.JTextField;
-import javax.swing.border.CompoundBorder;
-import javax.swing.border.EmptyBorder;
-import javax.swing.border.EtchedBorder;
-import javax.swing.JSeparator;
-
-import java.security.MessageDigest;
-import java.security.NoSuchAlgorithmException;
-import java.security.cert.CertificateEncodingException;
-import java.security.cert.X509Certificate;
-import javax.security.auth.x500.X500Principal;
-
-import net.sf.taverna.t2.lang.ui.DialogTextArea;
-import net.sf.taverna.t2.security.credentialmanager.CMException;
-import net.sf.taverna.t2.security.credentialmanager.CMUtils;
-import net.sf.taverna.t2.workbench.helper.HelpEnabledDialog;
-
-import org.apache.log4j.Logger;
-import org.bouncycastle.asn1.ASN1OctetString;
-import org.bouncycastle.asn1.DERBitString;
-import org.bouncycastle.asn1.DEROctetString;
-import org.bouncycastle.asn1.misc.NetscapeCertType;
-
-/**
- * Displays the details of a X.509 certificate and asks user if they want to
- * trust it.
- * 
- * @author Alex Nenadic
- */
-@SuppressWarnings("serial")
-public class ConfirmTrustedCertificateDialog extends HelpEnabledDialog {
-	
-	private static Logger logger = Logger.getLogger(ConfirmTrustedCertificateDialog.class);
-
-	// Stores certificate to display
-	private X509Certificate cert;
-
-	// Stores user's decision as whether to trust this service's certificaet or not.
-	private boolean shouldTrust;
-
-	/**
-	 * Creates new ConfirmTrustedCertificateDialog where parent is a Frame.
-	 */
-	public ConfirmTrustedCertificateDialog(Frame parent, String title,
-			boolean modal, X509Certificate crt)
-			throws CMException {
-		super(parent, title, modal, null);
-		this.cert = crt;
-		initComponents();
-	}
-	
-	/**
-	 * Creates new ConfirmTrustedCertificateDialog where parent is a Dialog.
-	 */
-	public ConfirmTrustedCertificateDialog(Dialog parent, String title,
-			boolean modal, X509Certificate crt)
-			throws CMException {
-		super(parent, title, modal, null);
-		this.cert = crt;
-		initComponents();
-	}
-
-	/**
-	 * Initialise the dialog's GUI components.
-	 */
-	private void initComponents(){
-		
-		// title panel
-		JPanel titlePanel = new JPanel(new BorderLayout());
-		titlePanel.setBackground(Color.WHITE);
-		JLabel titleLabel = new JLabel("View service's certificate");
-		titleLabel.setFont(titleLabel.getFont().deriveFont(Font.BOLD, 13.5f));
-		titleLabel.setBorder(new EmptyBorder(10, 10, 0, 10));
-		DialogTextArea titleMessage = new DialogTextArea("This service requires HTTPS connection and has identified itself with the certificate below.\n" +
-				"Do you want to trust this service? (Refusing to trust means you will not be able to invoke it from a workflow.)");
-		titleMessage.setMargin(new Insets(5, 20, 10, 10));
-		titleMessage.setFont(titleMessage.getFont().deriveFont(11f));
-		titleMessage.setEditable(false);
-		titleMessage.setFocusable(false);
-		titlePanel.setBorder( new EmptyBorder(10, 10, 0, 10));
-		titlePanel.add(titleLabel, BorderLayout.NORTH);
-		titlePanel.add(titleMessage, BorderLayout.CENTER);
-		
-		// Certificate details:
-
-		// Grid Bag Constraints templates for labels (column 1) and
-		// values (column 2) of certificate details
-		GridBagConstraints gbcLabel = new GridBagConstraints();
-		gbcLabel.gridx = 0;
-		gbcLabel.ipadx = 20;
-		gbcLabel.gridwidth = 1;
-		gbcLabel.gridheight = 1;
-		gbcLabel.insets = new Insets(2, 15, 2, 2);
-		gbcLabel.anchor = GridBagConstraints.LINE_START;
-
-		GridBagConstraints gbcValue = new GridBagConstraints();
-		gbcValue.gridx = 1;
-		gbcValue.gridwidth = 1;
-		gbcValue.gridheight = 1;
-		gbcValue.insets = new Insets(2, 5, 2, 2);
-		gbcValue.anchor = GridBagConstraints.LINE_START;
-
-		// Netscape Certificate Type non-critical extension (if any)
-		// defines the intended uses of the certificate - to make it look like
-		// firefox's view certificate dialog
-		byte[] intendedUses = cert.getExtensionValue("2.16.840.1.113730.1.1"); // Netscape Certificate Type OID
-		JLabel jlIntendedUses = null;
-		JTextField jtfIntendedUsesValue = null;
-		JPanel jpUses = null;
-		GridBagConstraints gbc_jpUses = null;
-		if (intendedUses != null) {
-			jlIntendedUses = new JLabel(
-					"This certificate has been approved for the following uses:");
-			jlIntendedUses.setFont(new Font(null, Font.BOLD, 11));
-			jlIntendedUses.setBorder(new EmptyBorder(5, 5, 5, 5));
-
-			jtfIntendedUsesValue = new JTextField(45);
-			jtfIntendedUsesValue.setText(getIntendedUses(intendedUses));
-			jtfIntendedUsesValue.setEditable(false);
-			jtfIntendedUsesValue.setFont(new Font(null, Font.PLAIN, 11));
-
-			jpUses = new JPanel(new BorderLayout());
-			jpUses.add(jlIntendedUses, BorderLayout.NORTH);
-			jpUses.add(jtfIntendedUsesValue, BorderLayout.CENTER);
-			JSeparator jsp = new JSeparator(JSeparator.HORIZONTAL);
-			jpUses.add(jsp, BorderLayout.SOUTH);
-
-			gbc_jpUses = (GridBagConstraints) gbcLabel.clone();
-			gbc_jpUses.gridy = 0;
-			gbc_jpUses.gridwidth = 2; // takes two columns
-			gbc_jpUses.insets = new Insets(5, 5, 5, 5);// has slightly bigger insets
-		}
-
-		// Issued To
-		JLabel jlIssuedTo = new JLabel("Issued To");
-		jlIssuedTo.setFont(new Font(null, Font.BOLD, 11));
-		GridBagConstraints gbc_jlIssuedTo = (GridBagConstraints) gbcLabel
-				.clone();
-		gbc_jlIssuedTo.gridy = 1;
-		gbc_jlIssuedTo.gridwidth = 2; // takes two columns
-		gbc_jlIssuedTo.insets = new Insets(5, 5, 5, 5);// has slightly bigger insets
-		// Distinguished Name (DN)
-		String sDN = cert.getSubjectX500Principal().getName(
-				X500Principal.RFC2253);
-		CMUtils util = new CMUtils();
-		util.parseDN(sDN);
-		// Extract the CN, O, OU and EMAILADDRESS fields
-		String sCN = util.getCN();
-		String sOrg = util.getO();
-		String sOU = util.getOU();
-		// String sEMAILADDRESS = CMX509Util.getEmilAddress();
-		// Common Name (CN)
-		JLabel jlCN = new JLabel("Common Name (CN)");
-		jlCN.setFont(new Font(null, Font.PLAIN, 11));
-		GridBagConstraints gbc_jlCN = (GridBagConstraints) gbcLabel.clone();
-		gbc_jlCN.gridy = 2;
-		JLabel jlCNValue = new JLabel(sCN);
-		jlCNValue.setFont(new Font(null, Font.PLAIN, 11));
-		GridBagConstraints gbc_jlCNValue = (GridBagConstraints) gbcValue
-				.clone();
-		gbc_jlCNValue.gridy = 2;
-		// Organisation (O)
-		JLabel jlOrg = new JLabel("Organisation (O)");
-		jlOrg.setFont(new Font(null, Font.PLAIN, 11));
-		GridBagConstraints gbc_jlOrg = (GridBagConstraints) gbcLabel.clone();
-		gbc_jlOrg.gridy = 3;
-		JLabel jlOrgValue = new JLabel(sOrg);
-		jlOrgValue.setFont(new Font(null, Font.PLAIN, 11));
-		GridBagConstraints gbc_jlOrgValue = (GridBagConstraints) gbcValue
-				.clone();
-		gbc_jlOrgValue.gridy = 3;
-		// Organisation Unit (OU)
-		JLabel jlOU = new JLabel("Organisation Unit (OU)");
-		jlOU.setFont(new Font(null, Font.PLAIN, 11));
-		GridBagConstraints gbc_jlOU = (GridBagConstraints) gbcLabel.clone();
-		gbc_jlOU.gridy = 4;
-		JLabel jlOUValue = new JLabel(sOU);
-		jlOUValue.setFont(new Font(null, Font.PLAIN, 11));
-		GridBagConstraints gbc_jlOUValue = (GridBagConstraints) gbcValue
-				.clone();
-		gbc_jlOUValue.gridy = 4;
-		// E-mail Address
-		// JLabel jlEmail = new JLabel("E-mail Address");
-		// jlEmail.setFont(new Font(null, Font.PLAIN, 11));
-		// GridBagConstraints gbc_jlEmail = (GridBagConstraints)
-		// gbcLabel.clone();
-		// gbc_jlEmail.gridy = 5;
-		// JLabel jlEmailValue = new JLabel(sEMAILADDRESS);
-		// jlEmailValue.setFont(new Font(null, Font.PLAIN, 11));
-		// GridBagConstraints gbc_jlEmailValue = (GridBagConstraints)
-		// gbcValue.clone();
-		// gbc_jlEmailValue.gridy = 5;
-		// Serial Number
-		JLabel jlSN = new JLabel("Serial Number");
-		jlSN.setFont(new Font(null, Font.PLAIN, 11));
-		GridBagConstraints gbc_jlSN = (GridBagConstraints) gbcLabel.clone();
-		gbc_jlSN.gridy = 6;
-		JLabel jlSNValue = new JLabel();
-		// Get the hexadecimal serial number
-		StringBuffer strBuff = new StringBuffer(new BigInteger(1, cert
-				.getSerialNumber().toByteArray()).toString(16).toUpperCase());
-		// Place colons at every two hexadecimal characters
-		if (strBuff.length() > 2) {
-			for (int iCnt = 2; iCnt < strBuff.length(); iCnt += 3) {
-				strBuff.insert(iCnt, ':');
-			}
-		}
-		jlSNValue.setText(strBuff.toString());
-		jlSNValue.setFont(new Font(null, Font.PLAIN, 11));
-		GridBagConstraints gbc_jlSNValue = (GridBagConstraints) gbcValue
-				.clone();
-		gbc_jlSNValue.gridy = 6;
-		// Version
-		JLabel jlVersion = new JLabel("Version");
-		jlVersion.setFont(new Font(null, Font.PLAIN, 11));
-		GridBagConstraints gbc_jlVersion = (GridBagConstraints) gbcLabel
-				.clone();
-		gbc_jlVersion.gridy = 7;
-		JLabel jlVersionValue = new JLabel(Integer.toString(cert.getVersion()));
-		jlVersionValue.setFont(new Font(null, Font.PLAIN, 11));
-		GridBagConstraints gbc_jlVersionValue = (GridBagConstraints) gbcValue
-				.clone();
-		gbc_jlVersionValue.gridy = 7;
-
-		// Issued By
-		JLabel jlIssuedBy = new JLabel("Issued By");
-		jlIssuedBy.setFont(new Font(null, Font.BOLD, 11));
-		GridBagConstraints gbc_jlIssuedBy = (GridBagConstraints) gbcLabel
-				.clone();
-		gbc_jlIssuedBy.gridy = 8;
-		gbc_jlIssuedBy.gridwidth = 2; // takes two columns
-		gbc_jlIssuedBy.insets = new Insets(5, 5, 5, 5);// has slightly bigger
-														// insets
-		// Distinguished Name (DN)
-		String iDN = cert.getIssuerX500Principal().getName(
-				X500Principal.RFC2253);
-		util.parseDN(iDN);
-		// Extract the CN, O and OU fields
-		String iCN = util.getCN();
-		String iOrg = util.getO();
-		String iOU = util.getOU();
-		// Common Name (CN)
-		JLabel jlICN = new JLabel("Common Name (CN)");
-		jlICN.setFont(new Font(null, Font.PLAIN, 11));
-		GridBagConstraints gbc_jlICN = (GridBagConstraints) gbcLabel.clone();
-		gbc_jlICN.gridy = 9;
-		JLabel jlICNValue = new JLabel(iCN);
-		jlICNValue.setFont(new Font(null, Font.PLAIN, 11));
-		GridBagConstraints gbc_jlICNValue = (GridBagConstraints) gbcValue
-				.clone();
-		gbc_jlICNValue.gridy = 9;
-		// Organisation (O)
-		JLabel jlIOrg = new JLabel("Organisation (O)");
-		jlIOrg.setFont(new Font(null, Font.PLAIN, 11));
-		GridBagConstraints gbc_jlIOrg = (GridBagConstraints) gbcLabel.clone();
-		gbc_jlIOrg.gridy = 10;
-		JLabel jlIOrgValue = new JLabel(iOrg);
-		jlIOrgValue.setFont(new Font(null, Font.PLAIN, 11));
-		GridBagConstraints gbc_jlIOrgValue = (GridBagConstraints) gbcValue
-				.clone();
-		gbc_jlIOrgValue.gridy = 10;
-		// Organisation Unit (OU)
-		JLabel jlIOU = new JLabel("Organisation Unit (OU)");
-		jlIOU.setFont(new Font(null, Font.PLAIN, 11));
-		GridBagConstraints gbc_jlIOU = (GridBagConstraints) gbcLabel.clone();
-		gbc_jlIOU.gridy = 11;
-		JLabel jlIOUValue = new JLabel(iOU);
-		jlIOUValue.setFont(new Font(null, Font.PLAIN, 11));
-		GridBagConstraints gbc_jlIOUValue = (GridBagConstraints) gbcValue
-				.clone();
-		gbc_jlIOUValue.gridy = 11;
-		// Validity
-		JLabel jlValidity = new JLabel("Validity");
-		jlValidity.setFont(new Font(null, Font.BOLD, 11));
-		GridBagConstraints gbc_jlValidity = (GridBagConstraints) gbcLabel
-				.clone();
-		gbc_jlValidity.gridy = 12;
-		gbc_jlValidity.gridwidth = 2; // takes two columns
-		gbc_jlValidity.insets = new Insets(5, 5, 5, 5);// has slightly bigger
-														// insets
-		// Issued On
-		JLabel jlIssuedOn = new JLabel("Issued On");
-		jlIssuedOn.setFont(new Font(null, Font.PLAIN, 11));
-		GridBagConstraints gbc_jlIssuedOn = (GridBagConstraints) gbcLabel
-				.clone();
-		gbc_jlIssuedOn.gridy = 13;
-		JLabel jlIssuedOnValue = new JLabel(cert.getNotBefore().toString());
-		jlIssuedOnValue.setFont(new Font(null, Font.PLAIN, 11));
-		GridBagConstraints gbc_jlIssuedOnValue = (GridBagConstraints) gbcValue
-				.clone();
-		gbc_jlIssuedOnValue.gridy = 13;
-		// Expires On
-		JLabel jlExpiresOn = new JLabel("Expires On");
-		jlExpiresOn.setFont(new Font(null, Font.PLAIN, 11));
-		GridBagConstraints gbc_jlExpiresOn = (GridBagConstraints) gbcLabel
-				.clone();
-		gbc_jlExpiresOn.gridy = 14;
-		JLabel jlExpiresOnValue = new JLabel(cert.getNotAfter().toString());
-		jlExpiresOnValue.setFont(new Font(null, Font.PLAIN, 11));
-		GridBagConstraints gbc_jlExpiresOnValue = (GridBagConstraints) gbcValue
-				.clone();
-		gbc_jlExpiresOnValue.gridy = 14;
-
-		// Fingerprints
-		byte[] bCert = new byte[0];
-		try {
-			bCert = cert.getEncoded();
-		} catch (CertificateEncodingException ex) {
-			logger.error("Could not get the encoded form of the certificate.", ex);
-		}
-		JLabel jlFingerprints = new JLabel("Fingerprints");
-		jlFingerprints.setFont(new Font(null, Font.BOLD, 11));
-		GridBagConstraints gbc_jlFingerprints = (GridBagConstraints) gbcLabel
-				.clone();
-		gbc_jlFingerprints.gridy = 15;
-		gbc_jlFingerprints.gridwidth = 2; // takes two columns
-		gbc_jlFingerprints.insets = new Insets(5, 5, 5, 5);// has slightly
-															// bigger insets
-		// SHA-1 Fingerprint
-		JLabel jlSHA1Fingerprint = new JLabel("SHA1 Fingerprint");
-		jlSHA1Fingerprint.setFont(new Font(null, Font.PLAIN, 11));
-		GridBagConstraints gbc_jlSHA1Fingerprint = (GridBagConstraints) gbcLabel
-				.clone();
-		gbc_jlSHA1Fingerprint.gridy = 16;
-		JLabel jlSHA1FingerprintValue = new JLabel(getMessageDigest(bCert,
-				"SHA1"));
-		jlSHA1FingerprintValue.setFont(new Font(null, Font.PLAIN, 11));
-		GridBagConstraints gbc_jlSHA1FingerprintValue = (GridBagConstraints) gbcValue
-				.clone();
-		gbc_jlSHA1FingerprintValue.gridy = 16;
-		// MD5 Fingerprint
-		JLabel jlMD5Fingerprint = new JLabel("MD5 Fingerprint");
-		jlMD5Fingerprint.setFont(new Font(null, Font.PLAIN, 11));
-		GridBagConstraints gbc_jlMD5Fingerprint = (GridBagConstraints) gbcLabel
-				.clone();
-		gbc_jlMD5Fingerprint.gridy = 17;
-		JLabel jlMD5FingerprintValue = new JLabel(
-				getMessageDigest(bCert, "MD5"));
-		jlMD5FingerprintValue.setFont(new Font(null, Font.PLAIN, 11));
-		GridBagConstraints gbc_jlMD5FingerprintValue = (GridBagConstraints) gbcValue
-				.clone();
-		gbc_jlMD5FingerprintValue.gridy = 17;
-
-		// Empty label to add a bit space at the bottom of the panel
-		// to make it look like firefox's view certificate dialog
-		JLabel jlEmpty = new JLabel("");
-		GridBagConstraints gbc_jlEmpty = (GridBagConstraints) gbcLabel.clone();
-		gbc_jlEmpty.gridy = 18;
-		gbc_jlEmpty.gridwidth = 2; // takes two columns
-		gbc_jlEmpty.ipady = 40;
-
-		JPanel jpCertificate = new JPanel(new GridBagLayout());
-		jpCertificate.setBorder(new CompoundBorder(new EmptyBorder(15, 15, 15,
-				15), new EtchedBorder()));
-
-		if (intendedUses != null) {
-			jpCertificate.add(jpUses, gbc_jpUses);
-		}
-		jpCertificate.add(jlIssuedTo, gbc_jlIssuedTo); // Issued To
-		jpCertificate.add(jlCN, gbc_jlCN);
-		jpCertificate.add(jlCNValue, gbc_jlCNValue);
-		jpCertificate.add(jlOrg, gbc_jlOrg);
-		jpCertificate.add(jlOrgValue, gbc_jlOrgValue);
-		jpCertificate.add(jlOU, gbc_jlOU);
-		jpCertificate.add(jlOUValue, gbc_jlOUValue);
-		// jpCertificate.add(jlEmail, gbc_jlEmail);
-		// jpCertificate.add(jlEmailValue, gbc_jlEmailValue);
-		jpCertificate.add(jlSN, gbc_jlSN);
-		jpCertificate.add(jlSNValue, gbc_jlSNValue);
-		jpCertificate.add(jlVersion, gbc_jlVersion);
-		jpCertificate.add(jlVersionValue, gbc_jlVersionValue);
-		jpCertificate.add(jlIssuedBy, gbc_jlIssuedBy); // Issued By
-		jpCertificate.add(jlICN, gbc_jlICN);
-		jpCertificate.add(jlICNValue, gbc_jlICNValue);
-		jpCertificate.add(jlIOrg, gbc_jlIOrg);
-		jpCertificate.add(jlIOrgValue, gbc_jlIOrgValue);
-		jpCertificate.add(jlIOU, gbc_jlIOU);
-		jpCertificate.add(jlIOUValue, gbc_jlIOUValue);
-		jpCertificate.add(jlValidity, gbc_jlValidity); // Validity
-		jpCertificate.add(jlIssuedOn, gbc_jlIssuedOn);
-		jpCertificate.add(jlIssuedOnValue, gbc_jlIssuedOnValue);
-		jpCertificate.add(jlExpiresOn, gbc_jlExpiresOn);
-		jpCertificate.add(jlExpiresOnValue, gbc_jlExpiresOnValue);
-		jpCertificate.add(jlFingerprints, gbc_jlFingerprints); // Fingerprints
-		jpCertificate.add(jlSHA1Fingerprint, gbc_jlSHA1Fingerprint);
-		jpCertificate.add(jlSHA1FingerprintValue, gbc_jlSHA1FingerprintValue);
-		jpCertificate.add(jlMD5Fingerprint, gbc_jlMD5Fingerprint);
-		jpCertificate.add(jlMD5FingerprintValue, gbc_jlMD5FingerprintValue);
-		jpCertificate.add(jlEmpty, gbc_jlEmpty); // Empty label to get some vertical space on the frame
-
-		// OK button
-		JPanel jpButtons = new JPanel(new FlowLayout(FlowLayout.CENTER));
-
-		final JButton jbTrust = new JButton("Trust");
-		jbTrust.addActionListener(new ActionListener() {
-			public void actionPerformed(ActionEvent evt) {
-				trustPressed();
-			}
-		});
-		final JButton jbDontTrust = new JButton("Do not trust");
-		jbDontTrust.addActionListener(new ActionListener() {
-			public void actionPerformed(ActionEvent evt) {
-				dontTrustPressed();
-			}
-		});
-
-		jpButtons.add(jbTrust);
-		jpButtons.add(jbDontTrust);
-
-		// Put it all together
-		getContentPane().add(titlePanel, BorderLayout.NORTH);
-		getContentPane().add(jpCertificate, BorderLayout.CENTER);
-		getContentPane().add(jpButtons, BorderLayout.SOUTH);
-
-		// Resizing wreaks havoc
-		setResizable(false);
-
-		addWindowListener(new WindowAdapter() {
-			public void windowClosing(WindowEvent evt) {
-				closeDialog();
-			}
-		});
-
-		getRootPane().setDefaultButton(jbTrust);
-
-		pack();
-	}
-
-	/**
-	 * Get the digest of a message as a formatted String.
-	 * 
-	 * @param bMessage
-	 *            The message to digest
-	 * @param digestType
-	 *            The message digest algorithm
-	 * @return The message digest
-	 */
-	public static String getMessageDigest(byte[] bMessage, String digestType) {
-		// Create message digest object using the supplied algorithm
-		MessageDigest messageDigest;
-		try {
-			messageDigest = MessageDigest.getInstance(digestType);
-		} catch (NoSuchAlgorithmException ex) {
-			logger.error("Failed to create message digest.", ex);
-			return "";
-		}
-
-		// Create raw message digest
-		byte[] bFingerPrint = messageDigest.digest(bMessage);
-
-		// Place the raw message digest into a StringBuffer as a Hex number
-		StringBuffer strBuff = new StringBuffer(new BigInteger(1, bFingerPrint)
-				.toString(16).toUpperCase());
-
-		// Odd number of characters so add in a padding "0"
-		if ((strBuff.length() % 2) != 0) {
-			strBuff.insert(0, '0');
-		}
-
-		// Place colons at every two hex characters
-		if (strBuff.length() > 2) {
-			for (int iCnt = 2; iCnt < strBuff.length(); iCnt += 3) {
-				strBuff.insert(iCnt, ':');
-			}
-		}
-
-		// Return the formatted message digest
-		return strBuff.toString();
-	}
-
-	/**
-	 * Gets the intended certificate uses, i.e. Netscape Certificate Type
-	 * extension (2.16.840.1.113730.1.1) value as a string
-	 * 
-	 * @param value
-	 *            Extension value as a DER-encoded OCTET string
-	 * @return Extension value as a string
-	 */
-	private String getIntendedUses(byte[] value) {
-
-		// Netscape Certificate Types (2.16.840.1.113730.1.1)
-		int[] INTENDED_USES = new int[] { NetscapeCertType.sslClient,
-				NetscapeCertType.sslServer, NetscapeCertType.smime,
-				NetscapeCertType.objectSigning, NetscapeCertType.reserved,
-				NetscapeCertType.sslCA, NetscapeCertType.smimeCA,
-				NetscapeCertType.objectSigningCA, };
-
-		// Netscape Certificate Type strings (2.16.840.1.113730.1.1)
-		HashMap<String, String> INTENDED_USES_STRINGS = new HashMap<String, String>();
-		INTENDED_USES_STRINGS.put("128", "SSL Client");
-		INTENDED_USES_STRINGS.put("64", "SSL Server");
-		INTENDED_USES_STRINGS.put("32", "S/MIME");
-		INTENDED_USES_STRINGS.put("16", "Object Signing");
-		INTENDED_USES_STRINGS.put("8", "Reserved");
-		INTENDED_USES_STRINGS.put("4", "SSL CA");
-		INTENDED_USES_STRINGS.put("2", "S/MIME CA");
-		INTENDED_USES_STRINGS.put("1", "Object Signing CA");
-
-		// Get octet string from extension value
-		ASN1OctetString fromByteArray = new DEROctetString(value);
-		byte[] octets = fromByteArray.getOctets();
-		DERBitString fromByteArray2 = new DERBitString(octets);
-		int val = new NetscapeCertType(fromByteArray2).intValue();
-		StringBuffer strBuff = new StringBuffer();
-		for (int i = 0, len = INTENDED_USES.length; i < len; i++) {
-			int use = INTENDED_USES[i];
-			if ((val & use) == use) {
-				strBuff.append(INTENDED_USES_STRINGS.get(String.valueOf(use))
-						+ ", \n");
-			}
-		}
-		// remove the last ", \n" from the end of the buffer
-		String str = strBuff.toString();
-		str = str.substring(0, str.length() - 3);
-		return str;
-	}
-
-	/**
-	 * 'Trust' button pressed.
-	 */
-	private void trustPressed() {
-		shouldTrust = true;
-		closeDialog();
-	}
-
-	/**
-	 * 'Do not trust' button pressed.
-	 */
-	private void dontTrustPressed() {
-		shouldTrust = false;
-		closeDialog();
-	}	
-	
-	/**
-	 * Closes the dialog.
-	 */
-	public void closeDialog() {
-		setVisible(false);
-		dispose();
-	}
-
-	public boolean shouldTrust() {
-		return shouldTrust;
-	}
-}
\ No newline at end of file
diff --git a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/servicedescriptions/WSDLActivityIcon.java b/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/servicedescriptions/WSDLActivityIcon.java
deleted file mode 100644
index 79f8ccd..0000000
--- a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/servicedescriptions/WSDLActivityIcon.java
+++ /dev/null
@@ -1,60 +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.activities.wsdl.servicedescriptions;
-
-import java.net.URI;
-
-import javax.swing.Icon;
-import javax.swing.ImageIcon;
-
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI;
-
-/**
- *
- * @author Alex Nenadic
- * @author alanrw
- *
- */
-public class WSDLActivityIcon implements ActivityIconSPI {
-
-	private static Icon icon;
-
-	public int canProvideIconScore(URI activityType) {
-		if (activityType.equals(WSDLServiceDescription.ACTIVITY_TYPE))
-			return DEFAULT_ICON + 1;
-		else
-			return NO_ICON;
-	}
-
-	public Icon getIcon(URI activityType) {
-		return getWSDLIcon();
-	}
-
-	public static Icon getWSDLIcon() {
-		if (icon == null) {
-			icon = new ImageIcon(WSDLActivityIcon.class.getResource("/wsdl.png"));
-		}
-		return icon;
-	}
-}
-
-
-
diff --git a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/servicedescriptions/WSDLServiceDescription.java b/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/servicedescriptions/WSDLServiceDescription.java
deleted file mode 100644
index faa3f8c..0000000
--- a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/servicedescriptions/WSDLServiceDescription.java
+++ /dev/null
@@ -1,154 +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.activities.wsdl.servicedescriptions;
-
-import java.net.URI;
-import java.util.Arrays;
-import java.util.Collections;
-import java.util.List;
-
-import javax.swing.Icon;
-
-import net.sf.taverna.t2.security.credentialmanager.CMException;
-import net.sf.taverna.t2.security.credentialmanager.CredentialManager;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescription;
-
-import org.apache.log4j.Logger;
-
-import uk.org.taverna.scufl2.api.configurations.Configuration;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-public class WSDLServiceDescription extends ServiceDescription {
-
-	public static final URI ACTIVITY_TYPE = URI.create("http://ns.taverna.org.uk/2010/activity/wsdl");
-	public static final URI INPUT_SPLITTER_TYPE = URI.create("http://ns.taverna.org.uk/2010/activity/xml-splitter/in");
-	public static final URI OUTPUT_SPLITTER_TYPE = URI.create("http://ns.taverna.org.uk/2010/activity/xml-splitter/out");
-
-	private static final String WSDL = "WSDL @ ";
-
-	private String use;
-	private URI uri;
-	private String style;
-	private String operation;
-	private final CredentialManager credentialManager;
-
-	private static Logger logger = Logger.getLogger(WSDLServiceDescription.class);
-
-	public WSDLServiceDescription(CredentialManager credentialManager) {
-		this.credentialManager = credentialManager;
-	}
-
-	public String getUse() {
-		return use;
-	}
-
-	public void setUse(String use) {
-		this.use = use;
-	}
-
-	public URI getURI() {
-		return uri;
-	}
-
-	public void setURI(URI url) {
-		this.uri = url;
-	}
-
-	public String getStyle() {
-		return style;
-	}
-
-	public void setStyle(String style) {
-		this.style = style;
-	}
-
-	public String getType() {
-		return "WSDL";
-	}
-
-	@Override
-	public String toString() {
-		return operation;
-	}
-
-	public String getOperation() {
-		return operation;
-	}
-
-	public void setOperation(String operation) {
-		this.operation = operation;
-	}
-
-	public Icon getIcon() {
-		return WSDLActivityIcon.getWSDLIcon();
-	}
-
-	@Override
-	public URI getActivityType() {
-		return ACTIVITY_TYPE;
-	}
-
-	@Override
-	public Configuration getActivityConfiguration() {
-		Configuration configuration = new Configuration();
-		configuration.setType(ACTIVITY_TYPE.resolve("#Config"));
-		ObjectNode json = (ObjectNode) configuration.getJson();
-		ObjectNode operation = json.objectNode();
-		json.put("operation", operation);
-		operation.put("wsdl", getURI().toString());
-		operation.put("name", getOperation());
-		return configuration;
-	}
-
-	public String getName() {
-		return getOperation();
-	}
-
-	public List<? extends Comparable<?>> getPath() {
-		return Collections.singletonList(WSDL + getURI());
-	}
-
-	protected List<Object> getIdentifyingData() {
-		return Arrays.<Object> asList(getURI(), getOperation());
-	}
-
-	@Override
-	public boolean isTemplateService() {
-		return needsSecurity();
-	}
-
-	protected boolean needsSecurity() {
-		if (credentialManager == null) {
-			// We don't know if it needs security or not
-			return false;
-		}
-		// A match is a good indicator that security configuration is needed
-		try {
-			return credentialManager.hasUsernamePasswordForService(getURI());
-		} catch (CMException e) {
-			logger.warn("Could not check if credential manager has username/password for " + getURI(), e);
-			return false;
-		}
-	}
-
-
-}
diff --git a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/servicedescriptions/WSDLServiceProvider.java b/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/servicedescriptions/WSDLServiceProvider.java
deleted file mode 100644
index daf0cad..0000000
--- a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/servicedescriptions/WSDLServiceProvider.java
+++ /dev/null
@@ -1,206 +0,0 @@
-package net.sf.taverna.t2.activities.wsdl.servicedescriptions;
-
-import java.io.IOException;
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.Arrays;
-import java.util.List;
-
-import javax.swing.Icon;
-import javax.wsdl.Operation;
-import javax.wsdl.WSDLException;
-import javax.xml.parsers.ParserConfigurationException;
-
-import net.sf.taverna.t2.activities.wsdl.WSDLActivityHealthChecker;
-import net.sf.taverna.t2.lang.observer.Observable;
-import net.sf.taverna.t2.lang.observer.Observer;
-import net.sf.taverna.t2.security.credentialmanager.CredentialManager;
-import net.sf.taverna.t2.servicedescriptions.AbstractConfigurableServiceProvider;
-import net.sf.taverna.t2.servicedescriptions.CustomizedConfigurePanelProvider;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;
-import net.sf.taverna.t2.servicedescriptions.events.RemovedProviderEvent;
-import net.sf.taverna.t2.servicedescriptions.events.ServiceDescriptionRegistryEvent;
-import net.sf.taverna.wsdl.parser.UnknownOperationException;
-import net.sf.taverna.wsdl.parser.WSDLParser;
-
-import org.apache.log4j.Logger;
-import org.xml.sax.SAXException;
-
-public class WSDLServiceProvider extends
-		AbstractConfigurableServiceProvider<WSDLServiceProviderConfig> implements
-		CustomizedConfigurePanelProvider<WSDLServiceProviderConfig> {
-
-	private static Logger logger = Logger.getLogger(WSDLServiceProvider.class);
-
-	private static final URI providerId = URI
-	.create("http://taverna.sf.net/2010/service-provider/wsdl");
-
-	private CredentialManager credentialManager;
-
-	public static class FlushWSDLCacheOnRemovalObserver implements
-			Observer<ServiceDescriptionRegistryEvent> {
-		public void notify(
-				Observable<ServiceDescriptionRegistryEvent> registry,
-				ServiceDescriptionRegistryEvent event) throws Exception {
-			if (!(event instanceof RemovedProviderEvent)) {
-				return;
-			}
-			RemovedProviderEvent removedProviderEvent = (RemovedProviderEvent) event;
-			if (!(removedProviderEvent.getProvider() instanceof WSDLServiceProvider)) {
-				return;
-			}
-			WSDLServiceProvider serviceProvider = (WSDLServiceProvider) removedProviderEvent
-					.getProvider();
-			URI wsdlLocation = serviceProvider.getConfiguration().getURI();
-			WSDLParser.flushCache(wsdlLocation.toASCIIString());
-			logger.info("Flushed cache for WSDL " + wsdlLocation);
-		}
-	}
-
-	private static final String WSDL_SERVICE = "WSDL service";
-
-	private static FlushWSDLCacheOnRemovalObserver flushObserver = new FlushWSDLCacheOnRemovalObserver();
-
-	private ServiceDescriptionRegistry serviceDescriptionRegistry;
-
-	public WSDLServiceProvider() {
-		super(new WSDLServiceProviderConfig("http://somehost/service?wsdl"));
-	}
-
-	public String getName() {
-		return WSDL_SERVICE;
-	}
-
-	public List<WSDLServiceProviderConfig> getDefaultConfigurations() {
-
-		List<WSDLServiceProviderConfig> defaults = new ArrayList<WSDLServiceProviderConfig>();
-
-		// If defaults have failed to load from a configuration file then load them here.
-		if (!serviceDescriptionRegistry.isDefaultSystemConfigurableProvidersLoaded()){
-			// 2009-12-16: 503 server error
-			defaults.add(new WSDLServiceProviderConfig(
-							"http://eutils.ncbi.nlm.nih.gov/entrez/eutils/soap/eutils.wsdl"));
-			defaults.add(new WSDLServiceProviderConfig(
-					"http://soap.bind.ca/wsdl/bind.wsdl"));
-			defaults.add(new WSDLServiceProviderConfig(
-					"http://www.ebi.ac.uk/ws/services/urn:Dbfetch?wsdl"));
-		} // else return an empty list
-
-		return defaults;
-	}
-
-	public void findServiceDescriptionsAsync(
-			FindServiceDescriptionsCallBack callBack) {
-
-		URI wsdl = serviceProviderConfig.getURI();
-
-		callBack.status("Parsing wsdl:" + wsdl);
-		WSDLParser parser = null;
-		try {
-			parser = new WSDLParser(wsdl.toASCIIString());
-			List<Operation> operations = parser.getOperations();
-			callBack.status("Found " + operations.size() + " WSDL operations:"
-					+ wsdl);
-			List<WSDLServiceDescription> items = new ArrayList<WSDLServiceDescription>();
-			for (Operation op : operations) {
-				WSDLServiceDescription item = new WSDLServiceDescription(credentialManager);
-				try {
-					String name = op.getName();
-					item.setOperation(name);
-					String use = parser.getUse(name);
-					String style = parser.getStyle();
-					if (!WSDLActivityHealthChecker.checkStyleAndUse(style, use)) {
-						logger.warn("Unsupported style and use combination " + style + "/" + use + " for operation " + name + " from " + wsdl);
-						continue;
-					}
-					item.setUse(use);
-					item.setStyle(style);
-					item.setURI(wsdl);
-					item.setDescription(parser.getOperationDocumentation(name));
-					items.add(item);
-				} catch (UnknownOperationException e) {
-					String message = "Encountered an unexpected operation name:"
-							+ item.getOperation();
-					callBack.fail(message, e);
-				}
-			}
-			callBack.partialResults(items);
-			callBack.finished();
-		} catch (ParserConfigurationException e) {
-			String message = "Error configuring the WSDL parser";
-			callBack.fail(message, e);
-		} catch (WSDLException e) {
-			String message = "There was an error with the wsdl: " + wsdl;
-			callBack.fail(message, e);
-		} catch (IOException e) {
-			String message = "There was an IO error parsing the wsdl: " + wsdl
-					+ " Possible reason: the wsdl location was incorrect.";
-			callBack.fail(message, e);
-		} catch (SAXException e) {
-			String message = "There was an error with the XML in the wsdl: "
-					+ wsdl;
-			callBack.fail(message, e);
-		} catch (IllegalArgumentException e) { // a problem with the wsdl url
-			String message = "There was an error with the wsdl: " + wsdl + " "
-					+ "Possible reason: the wsdl location was incorrect.";
-			callBack.fail(message, e);
-		} catch (Exception e) { // anything else we did not expect
-			String message = "There was an error with the wsdl: " + wsdl;
-			callBack.fail(message, e);
-		}
-	}
-
-	@Override
-	public String toString() {
-		return getName() + " " + getConfiguration().getURI();
-	}
-
-	public Icon getIcon() {
-		return WSDLActivityIcon.getWSDLIcon();
-	}
-
-	@Override
-	protected List<? extends Object> getIdentifyingData() {
-		List<String> result;
-		result = Arrays.asList(getConfiguration().getURI().toString());
-		return result;
-	}
-
-	/**
-	 * Will be set by ServiceDescriptionRegistryImpl
-	 *
-	 * @param registry Registry this provider has been added to
-	 */
-	public void setServiceDescriptionRegistry(ServiceDescriptionRegistry serviceDescriptionRegistry) {
-		this.serviceDescriptionRegistry = serviceDescriptionRegistry;
-		synchronized (flushObserver) {
-			// Add the (static common) observer if the registry does not have it
-			if (!serviceDescriptionRegistry.getObservers().contains(flushObserver)) {
-				serviceDescriptionRegistry.addObserver(flushObserver);
-			}
-		}
-	}
-
-	@SuppressWarnings("serial")
-	public void createCustomizedConfigurePanel(final CustomizedConfigureCallBack<WSDLServiceProviderConfig> callBack) {
-
-		AddWSDLServiceDialog addWSDLServiceDialog = new AddWSDLServiceDialog() {
-				@Override
-				protected void addRegistry(String wsdlURL) {
-
-					WSDLServiceProviderConfig providerConfig = new WSDLServiceProviderConfig(wsdlURL);
-					callBack.newProviderConfiguration(providerConfig);
-				}
-			};
-			addWSDLServiceDialog.setVisible(true);
-	}
-
-	public String getId() {
-		return providerId.toString();
-	}
-
-	public void setCredentialManager(CredentialManager credentialManager) {
-		this.credentialManager = credentialManager;
-	}
-
-}
diff --git a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/servicedescriptions/WSDLServiceProviderConfig.java b/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/servicedescriptions/WSDLServiceProviderConfig.java
deleted file mode 100644
index 9a63c03..0000000
--- a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/servicedescriptions/WSDLServiceProviderConfig.java
+++ /dev/null
@@ -1,32 +0,0 @@
-package net.sf.taverna.t2.activities.wsdl.servicedescriptions;
-
-import java.net.URI;
-
-import net.sf.taverna.t2.lang.beans.PropertyAnnotated;
-import net.sf.taverna.t2.lang.beans.PropertyAnnotation;
-
-public class WSDLServiceProviderConfig extends PropertyAnnotated {
-	private URI uri;
-	
-	public WSDLServiceProviderConfig() {
-	}
-
-	public WSDLServiceProviderConfig(String uri) {
-		this.uri = URI.create(uri);
-	}
-
-	@PropertyAnnotation(displayName = "WSDL location", preferred = true)
-	public URI getURI() {
-		return uri;
-	}
-
-	public void setURI(URI uri) {
-		this.uri = uri;
-	}
-
-	@Override
-	public String toString() {
-		return getURI().toASCIIString();
-	}
-	
-}
diff --git a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/servicedescriptions/XMLInputSplitterActivityIcon.java b/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/servicedescriptions/XMLInputSplitterActivityIcon.java
deleted file mode 100644
index cc92f3b..0000000
--- a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/servicedescriptions/XMLInputSplitterActivityIcon.java
+++ /dev/null
@@ -1,63 +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.activities.wsdl.servicedescriptions;
-
-import java.net.URI;
-
-import javax.swing.Icon;
-import javax.swing.ImageIcon;
-
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI;
-
-/**
- *
- * @author Alex Nenadic
- *
- */
-public class XMLInputSplitterActivityIcon implements ActivityIconSPI{
-
-	private static final URI ACTIVITY_TYPE = URI.create("http://ns.taverna.org.uk/2010/activity/xml-splitter/in");
-
-	private static Icon icon = null;
-
-	public int canProvideIconScore(URI activityType) {
-		if (activityType.equals(ACTIVITY_TYPE))
-			return DEFAULT_ICON + 1;
-		else
-			return NO_ICON;
-	}
-
-	public Icon getIcon(URI activityType) {
-		return getXMLOutputSplitterIcon();
-	}
-
-	public static Icon getXMLOutputSplitterIcon() {
-		if (icon == null) {
-			icon = new ImageIcon(XMLOutputSplitterActivityIcon.class.getResource("/xml-splitter.png"));
-		}
-		return icon;
-	}
-
-}
-
-
-
-
diff --git a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/servicedescriptions/XMLOutputSplitterActivityIcon.java b/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/servicedescriptions/XMLOutputSplitterActivityIcon.java
deleted file mode 100644
index 73c9bcb..0000000
--- a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/servicedescriptions/XMLOutputSplitterActivityIcon.java
+++ /dev/null
@@ -1,64 +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.activities.wsdl.servicedescriptions;
-
-import java.net.URI;
-
-import javax.swing.Icon;
-import javax.swing.ImageIcon;
-
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI;
-
-/**
- *
- * @author Alex Nenadic
- *
- */
-public class XMLOutputSplitterActivityIcon implements ActivityIconSPI{
-
-	private static final URI ACTIVITY_TYPE = URI.create("http://ns.taverna.org.uk/2010/activity/xml-splitter/out");
-
-	private static Icon icon = null;
-
-	public int canProvideIconScore(URI activityType) {
-		if (activityType.equals(ACTIVITY_TYPE))
-			return DEFAULT_ICON + 1;
-		else
-			return NO_ICON;
-	}
-
-	public Icon getIcon(URI activityType) {
-		return getXMLOutputSplitterIcon();
-	}
-
-	public static Icon getXMLOutputSplitterIcon() {
-		if (icon == null) {
-			icon = new ImageIcon(XMLOutputSplitterActivityIcon.class.getResource("/xml-splitter.png"));
-		}
-		return icon;
-	}
-
-}
-
-
-
-
-
diff --git a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/views/AbstractXMLSplitterActionView.java b/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/views/AbstractXMLSplitterActionView.java
deleted file mode 100644
index 0ca95e5..0000000
--- a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/views/AbstractXMLSplitterActionView.java
+++ /dev/null
@@ -1,159 +0,0 @@
-package net.sf.taverna.t2.activities.wsdl.views;
-
-import java.io.IOException;
-import java.util.Map;
-
-import javax.swing.JButton;
-import javax.swing.JComponent;
-import javax.swing.JPanel;
-import javax.wsdl.WSDLException;
-import javax.xml.parsers.ParserConfigurationException;
-
-import net.sf.taverna.t2.activities.wsdl.actions.AbstractAddXMLSplitterAction;
-import net.sf.taverna.t2.activities.wsdl.actions.AddXMLInputSplitterAction;
-import net.sf.taverna.t2.activities.wsdl.actions.AddXMLOutputSplitterAction;
-import net.sf.taverna.t2.activities.wsdl.servicedescriptions.WSDLServiceDescription;
-import net.sf.taverna.t2.workbench.configuration.colour.ColourManager;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.selection.SelectionManager;
-import net.sf.taverna.t2.workbench.ui.actions.activity.HTMLBasedActivityContextualView;
-import net.sf.taverna.wsdl.parser.TypeDescriptor;
-import net.sf.taverna.wsdl.parser.UnknownOperationException;
-
-import org.apache.log4j.Logger;
-import org.jdom.JDOMException;
-import org.xml.sax.SAXException;
-
-import uk.org.taverna.scufl2.api.activity.Activity;
-import uk.org.taverna.scufl2.api.port.DepthPort;
-import uk.org.taverna.scufl2.api.port.InputActivityPort;
-import uk.org.taverna.scufl2.api.port.OutputActivityPort;
-
-@SuppressWarnings("serial")
-public abstract class AbstractXMLSplitterActionView extends HTMLBasedActivityContextualView {
-
-	private static Logger logger = Logger.getLogger(AbstractXMLSplitterActionView.class);
-	protected final EditManager editManager;
-	protected final SelectionManager selectionManager;
-	protected AbstractAddXMLSplitterAction splitterAction;
-
-	public AbstractXMLSplitterActionView(Activity activity, EditManager editManager,
-			SelectionManager selectionManager, ColourManager colourManager) {
-		super(activity, colourManager);
-		this.editManager = editManager;
-		this.selectionManager = selectionManager;
-		if (getActivity().getType().equals(WSDLServiceDescription.OUTPUT_SPLITTER_TYPE)) {
-			splitterAction = new AddXMLOutputSplitterAction(getActivity(),
-					null, editManager, selectionManager);
-		} else if (getActivity().getType().equals(WSDLServiceDescription.INPUT_SPLITTER_TYPE)) {
-			splitterAction = new AddXMLInputSplitterAction(getActivity(),
-					null, editManager, selectionManager);
-		}
-		super.initView();
-	}
-
-	@Override
-	public void initView() {
-	}
-
-	protected void addOutputSplitter(final JComponent mainFrame, JPanel flowPanel) {
-		if (getActivity().getType().equals(WSDLServiceDescription.OUTPUT_SPLITTER_TYPE)) {
-			try {
-				Map<String, TypeDescriptor> descriptors = splitterAction.getTypeDescriptors();
-				if (!AbstractAddXMLSplitterAction.filterDescriptors(descriptors).isEmpty()) {
-					flowPanel.add(new JButton(splitterAction));
-				}
-			} catch (UnknownOperationException | IOException | ParserConfigurationException
-					| WSDLException | SAXException | JDOMException e) {
-				logger.warn("Could not find type descriptors for " + getActivity(), e);
-			}
-		}
-	}
-
-	protected void addInputSplitter(final JComponent mainFrame, JPanel flowPanel) {
-		if (getActivity().getType().equals(WSDLServiceDescription.INPUT_SPLITTER_TYPE)) {
-			try {
-				Map<String, TypeDescriptor> descriptors = splitterAction.getTypeDescriptors();
-				if (!AbstractAddXMLSplitterAction.filterDescriptors(descriptors).isEmpty()) {
-					splitterAction.setOwner(mainFrame);
-					flowPanel.add(new JButton(splitterAction));
-				}
-			} catch (UnknownOperationException | IOException | ParserConfigurationException
-					| WSDLException | SAXException | JDOMException e) {
-				logger.warn("Could not find type descriptors for " + getActivity(), e);
-			}
-		}
-	}
-
-	protected String describePorts() {
-		StringBuilder html = new StringBuilder();
-
-		if (!getActivity().getInputPorts().isEmpty()) {
-			html.append("<tr><th colspan='2' align='left'>Inputs</th></tr>");
-			for (InputActivityPort port : getActivity().getInputPorts()) {
-				TypeDescriptor descriptor = null;
-				if (getActivity().getType().equals(WSDLServiceDescription.INPUT_SPLITTER_TYPE)) {
-					try {
-						descriptor = splitterAction.getTypeDescriptors().get(port.getName());
-					} catch (UnknownOperationException | IOException | ParserConfigurationException
-							| WSDLException | SAXException | JDOMException e) {
-						logger.warn("Could not find type descriptors for " + getActivity(), e);
-					}
-				}
-				if (descriptor == null) {
-					html.append(describePort(port));
-				} else {
-					html.append(describePort(port, descriptor));
-				}
-
-			}
-		}
-
-		if (!getActivity().getOutputPorts().isEmpty()) {
-			html.append("<tr><th colspan='2' align='left'>Outputs</th></tr>");
-			for (OutputActivityPort port : getActivity().getOutputPorts()) {
-				TypeDescriptor descriptor = null;
-				if (getActivity().getType().equals(WSDLServiceDescription.OUTPUT_SPLITTER_TYPE)) {
-					try {
-						descriptor = splitterAction.getTypeDescriptors().get(port.getName());
-					} catch (UnknownOperationException | IOException | ParserConfigurationException
-							| WSDLException | SAXException | JDOMException e) {
-						logger.warn("Could not find type descriptors for " + getActivity(), e);
-					}
-				}
-				if (descriptor == null) {
-					html.append(describePort(port));
-				} else {
-					html.append(describePort(port, descriptor));
-				}
-			}
-		}
-
-		return html.toString();
-	}
-
-	private String describePort(DepthPort port, TypeDescriptor descriptor) {
-		String html = "<tr><td>" + port.getName() + "</td><td>";
-		if (descriptor != null && descriptor.isOptional()) {
-			html += "<em>optional</em><br>";
-		}
-		html+="Depth:"+port.getDepth()+"<br>";
-		if (descriptor != null ) {
-            html+="<code>"+descriptor.getQname().toString()+"</code><br>";
-//            if (descriptor.getDocumentation() != null && !descriptor.getDocumentation().isEmpty()){
-//                html += "<p>"+descriptor.getDocumentation()+"</p>";
-//            }
-        }
-
-		html+="</td></tr>";
-		return html;
-	}
-
-	private String describePort(DepthPort port) {
-		String html = "<tr><td>" + port.getName() + "</td><td>";
-		html += "Depth:" + port.getDepth() + "<br>";
-		html += "</td></tr>";
-		return html;
-	}
-
-}
\ No newline at end of file
diff --git a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/views/WSDLActivityConfigurationView.java b/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/views/WSDLActivityConfigurationView.java
deleted file mode 100644
index 4f728d9..0000000
--- a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/views/WSDLActivityConfigurationView.java
+++ /dev/null
@@ -1,446 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007-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.activities.wsdl.views;
-
-import java.awt.BorderLayout;
-import java.awt.Color;
-import java.awt.Component;
-import java.awt.Dimension;
-import java.awt.Font;
-import java.awt.Graphics;
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.Insets;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.awt.event.ItemEvent;
-import java.awt.event.ItemListener;
-import java.net.URI;
-
-import javax.swing.ButtonGroup;
-import javax.swing.JButton;
-import javax.swing.JCheckBox;
-import javax.swing.JComboBox;
-import javax.swing.JComponent;
-import javax.swing.JLabel;
-import javax.swing.JList;
-import javax.swing.JPanel;
-import javax.swing.JRadioButton;
-import javax.swing.SwingConstants;
-import javax.swing.border.Border;
-import javax.swing.border.EmptyBorder;
-import javax.swing.plaf.basic.BasicComboBoxRenderer;
-
-import net.sf.taverna.t2.activities.wsdl.security.SecurityProfiles;
-import net.sf.taverna.t2.lang.ui.DialogTextArea;
-import net.sf.taverna.t2.security.credentialmanager.CredentialManager;
-import net.sf.taverna.t2.workbench.ui.credentialmanager.CredentialManagerUI;
-import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ActivityConfigurationPanel;
-import uk.org.taverna.scufl2.api.activity.Activity;
-
-/**
- * Configuration dialog for WSDL activity.
- *
- * @author Alex Nenadic
- */
-@SuppressWarnings("serial")
-public class WSDLActivityConfigurationView extends ActivityConfigurationPanel implements ItemListener {
-
-	private CredentialManager credentialManager;
-	private CredentialManagerUI credManagerUI;
-
-	private ButtonGroup buttonGroup;
-	private JRadioButton noSecurityRadioButton;
-	private JLabel noSecurityLabel;
-	private JRadioButton httpSecurityAuthNRadioButton;
-	private JLabel httpSecurityAuthNLabel;
-	private JRadioButton wsSecurityAuthNRadioButton;
-	private JLabel wsSecurityAuthNLabel;
-
-	// Password types
-	private final String PLAINTEXT_PASSWORD = "Plaintext password";
-	private final String DIGEST_PASSWORD = "Digest password";
-	private String[] passwordTypes = new String[] { PLAINTEXT_PASSWORD, DIGEST_PASSWORD };
-	private String[] tooltips = new String[] {
-			"Password will be sent in plaintext (which is OK if service is using HTTPS)",
-			"Password will be digested (cryptographically hashed) before sending" };
-	private JComboBox<String> passwordTypeComboBox;
-	private JCheckBox addTimestampCheckBox;
-	private JButton setHttpUsernamePasswordButton;
-	private JButton setWsdlUsernamePasswordButton;
-
-	// private Logger logger = Logger.getLogger(WSDLActivityConfigurationView.class);
-
-	public WSDLActivityConfigurationView(Activity activity, CredentialManager credentialManager) {
-		super(activity);
-		this.credentialManager = credentialManager;
-		initialise();
-	}
-
-	@Override
-	protected void initialise() {
-		super.initialise();
-
-		int gridy = 0;
-
-		// title panel
-		JPanel titlePanel = new JPanel(new BorderLayout());
-		titlePanel.setBackground(Color.WHITE);
-		JLabel titleLabel = new JLabel("Security configuration");
-		titleLabel.setFont(titleLabel.getFont().deriveFont(Font.BOLD, 13.5f));
-		titleLabel.setBorder(new EmptyBorder(10, 10, 0, 10));
-		DialogTextArea titleMessage = new DialogTextArea(
-				"Select a security profile for the service");
-		titleMessage.setMargin(new Insets(5, 20, 10, 10));
-		titleMessage.setFont(titleMessage.getFont().deriveFont(11f));
-		titleMessage.setEditable(false);
-		titleMessage.setFocusable(false);
-		titlePanel.setBorder(new EmptyBorder(10, 10, 0, 10));
-		titlePanel.add(titleLabel, BorderLayout.NORTH);
-		titlePanel.add(titleMessage, BorderLayout.CENTER);
-		addDivider(titlePanel, SwingConstants.BOTTOM, true);
-
-		// Main panel
-		JPanel mainPanel = new JPanel();
-		mainPanel.setLayout(new GridBagLayout());
-		mainPanel.setBorder(new EmptyBorder(10, 10, 10, 10));
-
-		// Create the radio buttons
-		noSecurityRadioButton = new JRadioButton("None");
-		noSecurityRadioButton.addItemListener(this);
-
-		wsSecurityAuthNRadioButton = new JRadioButton(
-				"WS-Security username and password authentication");
-		wsSecurityAuthNRadioButton.addItemListener(this);
-
-		httpSecurityAuthNRadioButton = new JRadioButton("HTTP username and password authentication");
-		httpSecurityAuthNRadioButton.addItemListener(this);
-
-		// Group the radio buttons
-		buttonGroup = new ButtonGroup();
-		buttonGroup.add(noSecurityRadioButton);
-		buttonGroup.add(wsSecurityAuthNRadioButton);
-		buttonGroup.add(httpSecurityAuthNRadioButton);
-
-		GridBagConstraints gbc = new GridBagConstraints();
-		gbc.weightx = 1.0;
-		gbc.weighty = 0.0;
-
-		gbc.gridx = 0;
-		gbc.gridy = gridy++;
-		gbc.fill = GridBagConstraints.NONE;
-		gbc.anchor = GridBagConstraints.WEST;
-		gbc.insets = new Insets(5, 10, 0, 0);
-		mainPanel.add(noSecurityRadioButton, gbc);
-
-		noSecurityLabel = new JLabel("Service requires no security");
-		noSecurityLabel.setFont(noSecurityLabel.getFont().deriveFont(11f));
-		// addDivider(noSecurityLabel, SwingConstants.BOTTOM, false);
-		gbc.gridx = 0;
-		gbc.gridy = gridy++;
-		gbc.fill = GridBagConstraints.HORIZONTAL;
-		gbc.anchor = GridBagConstraints.WEST;
-		gbc.insets = new Insets(0, 40, 10, 10);
-		mainPanel.add(noSecurityLabel, gbc);
-
-		gbc.gridx = 0;
-		gbc.gridy = gridy++;
-		gbc.fill = GridBagConstraints.NONE;
-		gbc.anchor = GridBagConstraints.WEST;
-		gbc.insets = new Insets(5, 10, 0, 0);
-		mainPanel.add(httpSecurityAuthNRadioButton, gbc);
-
-		ActionListener usernamePasswordListener = new ActionListener() {
-
-			public void actionPerformed(ActionEvent e) {
-				// Get Credential Manager UI to get the username and password for the service
-				if (credManagerUI == null) {
-					credManagerUI = new CredentialManagerUI(credentialManager);
-				}
-				credManagerUI.newPasswordForService(URI.create(getJson().get("operation")
-						.get("wsdl").textValue()));
-			}
-		};
-
-		httpSecurityAuthNLabel = new JLabel(
-				"Service requires HTTP username and password in order to authenticate the user");
-		httpSecurityAuthNLabel.setFont(httpSecurityAuthNLabel.getFont().deriveFont(11f));
-		gbc.gridx = 0;
-		gbc.gridy = gridy++;
-		gbc.fill = GridBagConstraints.HORIZONTAL;
-		gbc.anchor = GridBagConstraints.WEST;
-		gbc.insets = new Insets(0, 40, 10, 10);
-		mainPanel.add(httpSecurityAuthNLabel, gbc);
-
-		// Set username and password button;
-		setHttpUsernamePasswordButton = new JButton("Set username and password");
-		gbc.gridx = 0;
-		gbc.gridy = gridy++;
-		gbc.fill = GridBagConstraints.NONE;
-		gbc.anchor = GridBagConstraints.EAST;
-		gbc.insets = new Insets(0, 40, 10, 10);
-		gbc.weightx = 1.0;
-		gbc.weighty = 1.0; // add any vertical space to this component
-		mainPanel.add(setHttpUsernamePasswordButton, gbc);
-		setHttpUsernamePasswordButton.addActionListener(usernamePasswordListener);
-
-		gbc.gridx = 0;
-		gbc.gridy = gridy++;
-		gbc.fill = GridBagConstraints.NONE;
-		gbc.anchor = GridBagConstraints.WEST;
-		gbc.insets = new Insets(5, 10, 0, 0);
-		mainPanel.add(wsSecurityAuthNRadioButton, gbc);
-
-		wsSecurityAuthNLabel = new JLabel(
-				"Service requires WS-Security username and password in order to authenticate the user");
-		wsSecurityAuthNLabel.setFont(wsSecurityAuthNLabel.getFont().deriveFont(11f));
-		gbc.gridx = 0;
-		gbc.gridy = gridy++;
-		gbc.fill = GridBagConstraints.HORIZONTAL;
-		gbc.anchor = GridBagConstraints.WEST;
-		gbc.insets = new Insets(0, 40, 0, 0);
-		mainPanel.add(wsSecurityAuthNLabel, gbc);
-
-		// Password type list
-		passwordTypeComboBox = new JComboBox<>(passwordTypes);
-		passwordTypeComboBox.setRenderer(new ComboBoxTooltipRenderer());
-		gbc.gridx = 0;
-		gbc.gridy = gridy++;
-		gbc.fill = GridBagConstraints.NONE;
-		gbc.anchor = GridBagConstraints.WEST;
-		gbc.insets = new Insets(10, 40, 0, 0);
-		mainPanel.add(passwordTypeComboBox, gbc);
-
-		// 'Add timestamp' checkbox
-		addTimestampCheckBox = new JCheckBox("Add a timestamp to SOAP message");
-		gbc.gridx = 0;
-		gbc.gridy = gridy++;
-		gbc.fill = GridBagConstraints.NONE;
-		gbc.anchor = GridBagConstraints.WEST;
-		gbc.insets = new Insets(5, 40, 10, 10);
-		mainPanel.add(addTimestampCheckBox, gbc);
-
-		// Set username and password button;
-		setWsdlUsernamePasswordButton = new JButton("Set username and password");
-		gbc.gridx = 0;
-		gbc.gridy = gridy++;
-		gbc.fill = GridBagConstraints.NONE;
-		gbc.anchor = GridBagConstraints.EAST;
-		gbc.insets = new Insets(0, 40, 10, 10);
-		gbc.weightx = 1.0;
-		gbc.weighty = 1.0; // add any vertical space to this component
-		mainPanel.add(setWsdlUsernamePasswordButton, gbc);
-		setWsdlUsernamePasswordButton.addActionListener(usernamePasswordListener);
-
-		addDivider(mainPanel, SwingConstants.BOTTOM, true);
-
-		// Enable/disable controls based on what is the current security profiles
-		if (!getJson().has("securityProfile")) {
-			noSecurityRadioButton.setSelected(true);
-		} else {
-			URI securityProfile = URI.create(getJson().get("securityProfile").textValue());
-			if (securityProfile.equals(SecurityProfiles.WSSECURITY_USERNAMETOKEN_PLAINTEXTPASSWORD)
-					|| securityProfile
-							.equals(SecurityProfiles.WSSECURITY_USERNAMETOKEN_DIGESTPASSWORD)
-					|| securityProfile
-							.equals(SecurityProfiles.WSSECURITY_TIMESTAMP_USERNAMETOKEN_PLAINTEXTPASSWORD)
-					|| securityProfile
-							.equals(SecurityProfiles.WSSECURITY_TIMESTAMP_USERNAMETOKEN_DIGESTPASSWORD)) {
-				wsSecurityAuthNRadioButton.setSelected(true);
-			}
-			if (securityProfile.equals(SecurityProfiles.HTTP_BASIC_AUTHN)
-					|| securityProfile.equals(SecurityProfiles.HTTP_DIGEST_AUTHN)) {
-				httpSecurityAuthNRadioButton.setSelected(true);
-			}
-			if (securityProfile.equals(SecurityProfiles.WSSECURITY_USERNAMETOKEN_PLAINTEXTPASSWORD)
-					|| securityProfile
-							.equals(SecurityProfiles.WSSECURITY_TIMESTAMP_USERNAMETOKEN_PLAINTEXTPASSWORD)) {
-				passwordTypeComboBox.setSelectedItem(PLAINTEXT_PASSWORD);
-			} else if (securityProfile
-					.equals(SecurityProfiles.WSSECURITY_USERNAMETOKEN_DIGESTPASSWORD)
-					|| securityProfile
-							.equals(SecurityProfiles.WSSECURITY_TIMESTAMP_USERNAMETOKEN_DIGESTPASSWORD)) {
-				passwordTypeComboBox.setSelectedItem(DIGEST_PASSWORD);
-			}
-			if (securityProfile
-					.equals(SecurityProfiles.WSSECURITY_TIMESTAMP_USERNAMETOKEN_DIGESTPASSWORD)
-					|| securityProfile
-							.equals(SecurityProfiles.WSSECURITY_TIMESTAMP_USERNAMETOKEN_PLAINTEXTPASSWORD)) {
-				addTimestampCheckBox.setSelected(true);
-			} else {
-				addTimestampCheckBox.setSelected(false);
-			}
-		}
-
-		// Put everything together
-		JPanel layoutPanel = new JPanel(new BorderLayout());
-		layoutPanel.add(titlePanel, BorderLayout.NORTH);
-		layoutPanel.add(mainPanel, BorderLayout.CENTER);
-		layoutPanel.setPreferredSize(new Dimension(550, 400));
-
-		add(layoutPanel);
-	}
-
-	@Override
-	public boolean checkValues() {
-		return true;
-	}
-
-	@Override
-	public void noteConfiguration() {
-
-		if (noSecurityRadioButton.isSelected()) {
-			getJson().remove("securityProfile"); // no security required
-		} else if (httpSecurityAuthNRadioButton.isSelected()) {
-			getJson().put("securityProfile", SecurityProfiles.HTTP_BASIC_AUTHN.toString());
-		} else if (wsSecurityAuthNRadioButton.isSelected()) { // plaintext password
-			if (passwordTypeComboBox.getSelectedItem().equals(PLAINTEXT_PASSWORD)) {
-				if (addTimestampCheckBox.isSelected()) {
-					getJson().put(
-							"securityProfile",
-							SecurityProfiles.WSSECURITY_TIMESTAMP_USERNAMETOKEN_PLAINTEXTPASSWORD
-									.toString());
-				} else {
-					getJson().put("securityProfile",
-							SecurityProfiles.WSSECURITY_USERNAMETOKEN_PLAINTEXTPASSWORD.toString());
-				}
-			} else { // digest password
-				if (addTimestampCheckBox.isSelected()) {
-					getJson().put(
-							"securityProfile",
-							SecurityProfiles.WSSECURITY_TIMESTAMP_USERNAMETOKEN_DIGESTPASSWORD
-									.toString());
-				} else {
-					getJson().put("securityProfile",
-							SecurityProfiles.WSSECURITY_USERNAMETOKEN_DIGESTPASSWORD.toString());
-				}
-			}
-		}
-	}
-
-	/**
-	 * Disable/enable items on the panel based on this radio button
-	 * has been selected.
-	 */
-	public void itemStateChanged(ItemEvent e) {
-
-		Object source = e.getItemSelectable();
-		if (source == noSecurityRadioButton) {
-			httpSecurityAuthNLabel.setEnabled(false);
-			wsSecurityAuthNLabel.setEnabled(false);
-			passwordTypeComboBox.setEnabled(false);
-			setHttpUsernamePasswordButton.setEnabled(false);
-			setWsdlUsernamePasswordButton.setEnabled(false);
-			addTimestampCheckBox.setEnabled(false);
-
-			noSecurityLabel.setEnabled(true);
-		} else if (source == httpSecurityAuthNRadioButton) {
-			noSecurityLabel.setEnabled(false);
-			httpSecurityAuthNLabel.setEnabled(true);
-			wsSecurityAuthNLabel.setEnabled(false);
-			passwordTypeComboBox.setEnabled(false);
-			setHttpUsernamePasswordButton.setEnabled(true);
-			setWsdlUsernamePasswordButton.setEnabled(false);
-			addTimestampCheckBox.setEnabled(false);
-		} else if (source == wsSecurityAuthNRadioButton) {
-			noSecurityLabel.setEnabled(false);
-			httpSecurityAuthNLabel.setEnabled(false);
-			wsSecurityAuthNLabel.setEnabled(true);
-			passwordTypeComboBox.setEnabled(true);
-			setHttpUsernamePasswordButton.setEnabled(false);
-			setWsdlUsernamePasswordButton.setEnabled(true);
-			addTimestampCheckBox.setEnabled(true);
-		}
-	}
-
-	/**
-	 * A renderer for JComboBox that will display a tooltip for
-	 * the selected item.
-	 */
-	class ComboBoxTooltipRenderer extends BasicComboBoxRenderer {
-		public Component getListCellRendererComponent(JList list, Object value, int index,
-				boolean isSelected, boolean cellHasFocus) {
-			if (isSelected) {
-				setBackground(list.getSelectionBackground());
-				setForeground(list.getSelectionForeground());
-				if (-1 < index) {
-					list.setToolTipText(tooltips[index]);
-				}
-			} else {
-				setBackground(list.getBackground());
-				setForeground(list.getForeground());
-			}
-			setFont(list.getFont());
-			setText((value == null) ? "" : value.toString());
-			return this;
-		}
-	}
-
-	/**
-	 * Adds a light gray or etched border to the top or bottom of a JComponent.
-	 *
-	 * @author David Withers
-	 * @param component
-	 */
-	protected void addDivider(JComponent component, final int position, final boolean etched) {
-		component.setBorder(new Border() {
-			private final Color borderColor = new Color(.6f, .6f, .6f);
-
-			public Insets getBorderInsets(Component c) {
-				if (position == SwingConstants.TOP) {
-					return new Insets(5, 0, 0, 0);
-				} else {
-					return new Insets(0, 0, 5, 0);
-				}
-			}
-
-			public boolean isBorderOpaque() {
-				return false;
-			}
-
-			public void paintBorder(Component c, Graphics g, int x, int y, int width, int height) {
-				if (position == SwingConstants.TOP) {
-					if (etched) {
-						g.setColor(borderColor);
-						g.drawLine(x, y, x + width, y);
-						g.setColor(Color.WHITE);
-						g.drawLine(x, y + 1, x + width, y + 1);
-					} else {
-						g.setColor(Color.LIGHT_GRAY);
-						g.drawLine(x, y, x + width, y);
-					}
-				} else {
-					if (etched) {
-						g.setColor(borderColor);
-						g.drawLine(x, y + height - 2, x + width, y + height - 2);
-						g.setColor(Color.WHITE);
-						g.drawLine(x, y + height - 1, x + width, y + height - 1);
-					} else {
-						g.setColor(Color.LIGHT_GRAY);
-						g.drawLine(x, y + height - 1, x + width, y + height - 1);
-					}
-				}
-			}
-
-		});
-	}
-
-}
diff --git a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/views/WSDLActivityContextualView.java b/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/views/WSDLActivityContextualView.java
deleted file mode 100644
index ac129ec..0000000
--- a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/views/WSDLActivityContextualView.java
+++ /dev/null
@@ -1,108 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007-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.activities.wsdl.views;
-
-import java.awt.BorderLayout;
-import java.awt.FlowLayout;
-import java.awt.Frame;
-
-import javax.swing.Action;
-import javax.swing.JComponent;
-import javax.swing.JPanel;
-
-import net.sf.taverna.t2.activities.wsdl.actions.WSDLActivityConfigureAction;
-import net.sf.taverna.t2.security.credentialmanager.CredentialManager;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;
-import net.sf.taverna.t2.workbench.configuration.colour.ColourManager;
-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.actions.activity.HTMLBasedActivityContextualView;
-import uk.org.taverna.scufl2.api.activity.Activity;
-
-import com.fasterxml.jackson.databind.JsonNode;
-
-@SuppressWarnings("serial")
-public class WSDLActivityContextualView extends AbstractXMLSplitterActionView {
-
-	private final ActivityIconManager activityIconManager;
-	private final ServiceDescriptionRegistry serviceDescriptionRegistry;
-	private final CredentialManager credentialManager;
-	private final FileManager fileManager;
-
-	public WSDLActivityContextualView(Activity activity, EditManager editManager, FileManager fileManager,
-			SelectionManager selectionManager, ActivityIconManager activityIconManager,
-			ColourManager colourManager, CredentialManager credentialManager,
-			ServiceDescriptionRegistry serviceDescriptionRegistry) {
-		super(activity, editManager, selectionManager, colourManager);
-		this.fileManager = fileManager;
-		this.activityIconManager = activityIconManager;
-		this.credentialManager = credentialManager;
-		this.serviceDescriptionRegistry = serviceDescriptionRegistry;
-	}
-
-	/**
-	 * Gets the component from the {@link HTMLBasedActivityContextualView} and adds buttons to it
-	 * allowing XML splitters to be added
-	 */
-	@Override
-	public JComponent getMainFrame() {
-		final JComponent mainFrame = super.getMainFrame();
-		JPanel flowPanel = new JPanel(new FlowLayout());
-
-		addInputSplitter(mainFrame, flowPanel);
-		addOutputSplitter(mainFrame, flowPanel);
-
-		mainFrame.add(flowPanel, BorderLayout.SOUTH);
-		return mainFrame;
-	}
-
-	@Override
-	public String getViewTitle() {
-		return "WSDL-based service";
-	}
-
-	@Override
-	protected String getRawTableRowsHtml() {
-		JsonNode operation = getConfigBean().getJson().get("operation");
-		String summary = "<tr><td>WSDL</td><td>" + operation.get("wsdl").textValue();
-		summary += "</td></tr><tr><td>Operation</td><td>" + operation.get("name").textValue()
-				+ "</td></tr>";
-		boolean securityConfigured = getConfigBean().getJson().has("securityProfile");
-		summary += "<tr><td>Secure</td><td>" + securityConfigured + "</td></tr>";
-		summary += "</tr>";
-		summary += describePorts();
-		return summary;
-	}
-
-	@Override
-	public Action getConfigureAction(Frame owner) {
-		return new WSDLActivityConfigureAction(getActivity(), owner, editManager, fileManager,
-				activityIconManager, serviceDescriptionRegistry, credentialManager);
-	}
-
-	@Override
-	public int getPreferredPosition() {
-		return 100;
-	}
-
-}
diff --git a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/views/WSDLActivityViewFactory.java b/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/views/WSDLActivityViewFactory.java
deleted file mode 100644
index b3fb8ed..0000000
--- a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/views/WSDLActivityViewFactory.java
+++ /dev/null
@@ -1,88 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007-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.activities.wsdl.views;
-
-import java.util.Arrays;
-import java.util.List;
-
-import net.sf.taverna.t2.activities.wsdl.servicedescriptions.WSDLServiceDescription;
-import net.sf.taverna.t2.security.credentialmanager.CredentialManager;
-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;
-import net.sf.taverna.t2.workbench.configuration.colour.ColourManager;
-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.ContextualView;
-import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory;
-import uk.org.taverna.scufl2.api.activity.Activity;
-
-public class WSDLActivityViewFactory implements ContextualViewFactory<Activity> {
-
-	private EditManager editManager;
-	private ActivityIconManager activityIconManager;
-	private ColourManager colourManager;
-	private SelectionManager selectionManager;
-	private ServiceDescriptionRegistry serviceDescriptionRegistry;
-	private CredentialManager credentialManager;
-	private FileManager fileManager;
-
-	public boolean canHandle(Object object) {
-		return object instanceof Activity
-				&& ((Activity) object).getType().equals(WSDLServiceDescription.ACTIVITY_TYPE);
-	}
-
-	public List<ContextualView> getViews(Activity activity) {
-		return Arrays
-				.asList(new ContextualView[] { new WSDLActivityContextualView(activity,
-						editManager, fileManager, selectionManager, activityIconManager, colourManager,
-						credentialManager, serviceDescriptionRegistry) });
-	}
-
-	public void setEditManager(EditManager editManager) {
-		this.editManager = editManager;
-	}
-
-	public void setFileManager(FileManager fileManager) {
-		this.fileManager = fileManager;
-	}
-
-	public void setSelectionManager(SelectionManager selectionManager) {
-		this.selectionManager = selectionManager;
-	}
-
-	public void setActivityIconManager(ActivityIconManager activityIconManager) {
-		this.activityIconManager = activityIconManager;
-	}
-
-	public void setColourManager(ColourManager colourManager) {
-		this.colourManager = colourManager;
-	}
-
-	public void setServiceDescriptionRegistry(ServiceDescriptionRegistry serviceDescriptionRegistry) {
-		this.serviceDescriptionRegistry = serviceDescriptionRegistry;
-	}
-
-	public void setCredentialManager(CredentialManager credentialManager) {
-		this.credentialManager = credentialManager;
-	}
-
-}
diff --git a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/views/XMLSplitterContextualView.java b/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/views/XMLSplitterContextualView.java
deleted file mode 100644
index 228edd4..0000000
--- a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/views/XMLSplitterContextualView.java
+++ /dev/null
@@ -1,78 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007-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.activities.wsdl.views;
-
-import java.awt.BorderLayout;
-import java.awt.FlowLayout;
-
-import javax.swing.JComponent;
-import javax.swing.JPanel;
-
-import net.sf.taverna.t2.workbench.configuration.colour.ColourManager;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.selection.SelectionManager;
-import net.sf.taverna.t2.workbench.ui.actions.activity.HTMLBasedActivityContextualView;
-
-import org.apache.log4j.Logger;
-
-import uk.org.taverna.scufl2.api.activity.Activity;
-
-@SuppressWarnings("serial")
-public class XMLSplitterContextualView extends AbstractXMLSplitterActionView {
-
-	public XMLSplitterContextualView(Activity activity,
-			EditManager editManager, SelectionManager selectionManager, ColourManager colourManager) {
-		super(activity, editManager, selectionManager, colourManager);
-	}
-
-	static Logger logger = Logger.getLogger(XMLSplitterContextualView.class);
-
-	/**
-	 * Gets the component from the {@link HTMLBasedActivityContextualView} and adds buttons to it
-	 * allowing XML splitters to be added
-	 */
-	@Override
-	public JComponent getMainFrame() {
-		final JComponent mainFrame = super.getMainFrame();
-		JPanel flowPanel = new JPanel(new FlowLayout());
-
-		addInputSplitter(mainFrame, flowPanel);
-		addOutputSplitter(mainFrame, flowPanel);
-		mainFrame.add(flowPanel, BorderLayout.SOUTH);
-		return mainFrame;
-	}
-
-	@Override
-	public String getViewTitle() {
-		return "XML splitter";
-	}
-
-	@Override
-	protected String getRawTableRowsHtml() {
-		return describePorts();
-	}
-
-	@Override
-	public int getPreferredPosition() {
-		return 100;
-	}
-
-}
diff --git a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/views/XMLSplitterViewFactory.java b/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/views/XMLSplitterViewFactory.java
deleted file mode 100644
index d0d5f8f..0000000
--- a/taverna-wsdl-activity-ui/src/main/java/net/sf/taverna/t2/activities/wsdl/views/XMLSplitterViewFactory.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*******************************************************************************
- * Copyright (C) 2007-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.activities.wsdl.views;
-
-import java.util.Arrays;
-import java.util.List;
-
-import net.sf.taverna.t2.activities.wsdl.servicedescriptions.WSDLServiceDescription;
-import net.sf.taverna.t2.activities.wsdl.xmlsplitter.XMLInputSplitterActivity;
-import net.sf.taverna.t2.activities.wsdl.xmlsplitter.XMLOutputSplitterActivity;
-import net.sf.taverna.t2.workbench.configuration.colour.ColourManager;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.selection.SelectionManager;
-import net.sf.taverna.t2.workbench.ui.views.contextualviews.ContextualView;
-import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory;
-import uk.org.taverna.scufl2.api.activity.Activity;
-
-public class XMLSplitterViewFactory implements ContextualViewFactory<Activity> {
-
-	private EditManager editManager;
-	private SelectionManager selectionManager;
-	private ColourManager colourManager;
-
-	public boolean canHandle(Object object) {
-
-		return object instanceof Activity
-				&& (((Activity) object).getType().equals(WSDLServiceDescription.INPUT_SPLITTER_TYPE)
-				|| ((Activity) object).getType().equals(WSDLServiceDescription.OUTPUT_SPLITTER_TYPE));
-	}
-
-	public List<ContextualView> getViews(Activity activity) {
-		return Arrays.asList(new ContextualView[] { new XMLSplitterContextualView(activity,
-				editManager, selectionManager, colourManager) });
-	}
-
-	public void setEditManager(EditManager editManager) {
-		this.editManager = editManager;
-	}
-
-	public void setSelectionManager(SelectionManager selectionManager) {
-		this.selectionManager = selectionManager;
-	}
-
-	public void setColourManager(ColourManager colourManager) {
-		this.colourManager = colourManager;
-	}
-
-}
diff --git a/taverna-wsdl-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider b/taverna-wsdl-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider
deleted file mode 100644
index 3bf8341..0000000
--- a/taverna-wsdl-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider
+++ /dev/null
@@ -1 +0,0 @@
-net.sf.taverna.t2.activities.wsdl.servicedescriptions.WSDLServiceProvider
diff --git a/taverna-wsdl-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent b/taverna-wsdl-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent
deleted file mode 100644
index 7b0e040..0000000
--- a/taverna-wsdl-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent
+++ /dev/null
@@ -1,5 +0,0 @@
-net.sf.taverna.t2.activities.wsdl.menu.AddXMLInputSplitterForWSDLActivityMenuAction
-net.sf.taverna.t2.activities.wsdl.menu.AddXMLInputSplitterForXMLInputSplitterMenuAction
-net.sf.taverna.t2.activities.wsdl.menu.AddXMLOutputSplitterForWSDLActivityMenuAction
-net.sf.taverna.t2.activities.wsdl.menu.AddXMLOutputSplitterForXMLOutputSplitterMenuAction
-net.sf.taverna.t2.activities.wsdl.menu.ConfigureWSDLMenuAction
diff --git a/taverna-wsdl-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI b/taverna-wsdl-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI
deleted file mode 100644
index 17d19e3..0000000
--- a/taverna-wsdl-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI
+++ /dev/null
@@ -1,3 +0,0 @@
-net.sf.taverna.t2.activities.wsdl.servicedescriptions.WSDLActivityIcon
-net.sf.taverna.t2.activities.wsdl.servicedescriptions.XMLInputSplitterActivityIcon
-net.sf.taverna.t2.activities.wsdl.servicedescriptions.XMLOutputSplitterActivityIcon
\ No newline at end of file
diff --git a/taverna-wsdl-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory b/taverna-wsdl-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory
deleted file mode 100644
index 04d48eb..0000000
--- a/taverna-wsdl-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory
+++ /dev/null
@@ -1,2 +0,0 @@
-net.sf.taverna.t2.activities.wsdl.views.WSDLActivityViewFactory
-net.sf.taverna.t2.activities.wsdl.views.XMLSplitterViewFactory
\ No newline at end of file
diff --git a/taverna-wsdl-activity-ui/src/main/resources/META-INF/spring/wsdl-activity-ui-context-osgi.xml b/taverna-wsdl-activity-ui/src/main/resources/META-INF/spring/wsdl-activity-ui-context-osgi.xml
deleted file mode 100644
index ac79064..0000000
--- a/taverna-wsdl-activity-ui/src/main/resources/META-INF/spring/wsdl-activity-ui-context-osgi.xml
+++ /dev/null
@@ -1,37 +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="WSDLActivityIcon" interface="net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI" />
-	<service ref="XMLInputSplitterActivityIcon" interface="net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI" />
-	<service ref="XMLOutputSplitterActivityIcon" interface="net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI" />
-
-	<service ref="WSDLServiceProvider">
-		<interfaces>
-			<beans:value>net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider</beans:value>
-			<beans:value>net.sf.taverna.t2.servicedescriptions.ConfigurableServiceProvider</beans:value>
-		</interfaces>
-	</service>
-
-	<service ref="AddXMLInputSplitterForWSDLActivityMenuAction" auto-export="interfaces" />
-	<service ref="AddXMLInputSplitterForXMLInputSplitterMenuAction" auto-export="interfaces" />
-	<service ref="AddXMLOutputSplitterForWSDLActivityMenuAction" auto-export="interfaces" />
-	<service ref="AddXMLOutputSplitterForXMLOutputSplitterMenuAction" auto-export="interfaces" />
-	<service ref="ConfigureWSDLMenuAction" auto-export="interfaces" />
-
-	<service ref="WSDLActivityViewFactory" interface="net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory" />
-	<service ref="XMLSplitterViewFactory" 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" />
-	<reference id="activityIconManager" interface="net.sf.taverna.t2.workbench.activityicons.ActivityIconManager" />
-	<reference id="colourManager" interface="net.sf.taverna.t2.workbench.configuration.colour.ColourManager" />
-	<reference id="serviceDescriptionRegistry" interface="net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry" />
-	<reference id="credentialManager" interface="net.sf.taverna.t2.security.credentialmanager.CredentialManager" />
-	<reference id="selectionManager" interface="net.sf.taverna.t2.workbench.selection.SelectionManager" />
-
-</beans:beans>
diff --git a/taverna-wsdl-activity-ui/src/main/resources/META-INF/spring/wsdl-activity-ui-context.xml b/taverna-wsdl-activity-ui/src/main/resources/META-INF/spring/wsdl-activity-ui-context.xml
deleted file mode 100644
index fede275..0000000
--- a/taverna-wsdl-activity-ui/src/main/resources/META-INF/spring/wsdl-activity-ui-context.xml
+++ /dev/null
@@ -1,53 +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="WSDLActivityIcon" class="net.sf.taverna.t2.activities.wsdl.servicedescriptions.WSDLActivityIcon" />
-	<bean id="XMLInputSplitterActivityIcon" class="net.sf.taverna.t2.activities.wsdl.servicedescriptions.XMLInputSplitterActivityIcon" />
-	<bean id="XMLOutputSplitterActivityIcon" class="net.sf.taverna.t2.activities.wsdl.servicedescriptions.XMLOutputSplitterActivityIcon" />
-
-	<bean id="WSDLServiceProvider" class="net.sf.taverna.t2.activities.wsdl.servicedescriptions.WSDLServiceProvider">
-			<property name="serviceDescriptionRegistry" ref="serviceDescriptionRegistry" />
-			<property name="credentialManager" ref="credentialManager" />
-	</bean>
-
-	<bean id="AddXMLInputSplitterForWSDLActivityMenuAction" class="net.sf.taverna.t2.activities.wsdl.menu.AddXMLInputSplitterForWSDLActivityMenuAction">
-			<property name="editManager" ref="editManager" />
-			<property name="selectionManager" ref="selectionManager" />
-	</bean>
-	<bean id="AddXMLInputSplitterForXMLInputSplitterMenuAction" class="net.sf.taverna.t2.activities.wsdl.menu.AddXMLInputSplitterForXMLInputSplitterMenuAction">
-			<property name="editManager" ref="editManager" />
-			<property name="selectionManager" ref="selectionManager" />
-	</bean>
-	<bean id="AddXMLOutputSplitterForWSDLActivityMenuAction" class="net.sf.taverna.t2.activities.wsdl.menu.AddXMLOutputSplitterForWSDLActivityMenuAction">
-			<property name="editManager" ref="editManager" />
-			<property name="selectionManager" ref="selectionManager" />
-	</bean>
-	<bean id="AddXMLOutputSplitterForXMLOutputSplitterMenuAction" class="net.sf.taverna.t2.activities.wsdl.menu.AddXMLOutputSplitterForXMLOutputSplitterMenuAction">
-			<property name="editManager" ref="editManager" />
-			<property name="selectionManager" ref="selectionManager" />
-	</bean>
-	<bean id="ConfigureWSDLMenuAction" class="net.sf.taverna.t2.activities.wsdl.menu.ConfigureWSDLMenuAction">
-			<property name="editManager" ref="editManager" />
-			<property name="fileManager" ref="fileManager" />
-			<property name="activityIconManager" ref="activityIconManager" />
-			<property name="serviceDescriptionRegistry" ref="serviceDescriptionRegistry" />
-			<property name="credentialManager" ref="credentialManager" />
-	</bean>
-
-	<bean id="WSDLActivityViewFactory" class="net.sf.taverna.t2.activities.wsdl.views.WSDLActivityViewFactory">
-			<property name="editManager" ref="editManager" />
-			<property name="fileManager" ref="fileManager" />
-			<property name="activityIconManager" ref="activityIconManager" />
-			<property name="colourManager" ref="colourManager" />
-			<property name="serviceDescriptionRegistry" ref="serviceDescriptionRegistry" />
-			<property name="credentialManager" ref="credentialManager" />
-	</bean>
-	<bean id="XMLSplitterViewFactory" class="net.sf.taverna.t2.activities.wsdl.views.XMLSplitterViewFactory">
-			<property name="editManager" ref="editManager" />
-			<property name="selectionManager" ref="selectionManager" />
-			<property name="colourManager" ref="colourManager" />
-	</bean>
-
-</beans>
diff --git a/taverna-wsdl-activity-ui/src/main/resources/wsdl.png b/taverna-wsdl-activity-ui/src/main/resources/wsdl.png
deleted file mode 100644
index f9fdae8..0000000
--- a/taverna-wsdl-activity-ui/src/main/resources/wsdl.png
+++ /dev/null
Binary files differ
diff --git a/taverna-wsdl-activity-ui/src/main/resources/xml-input-splitter.png b/taverna-wsdl-activity-ui/src/main/resources/xml-input-splitter.png
deleted file mode 100644
index 1ebe0b6..0000000
--- a/taverna-wsdl-activity-ui/src/main/resources/xml-input-splitter.png
+++ /dev/null
Binary files differ
diff --git a/taverna-wsdl-activity-ui/src/main/resources/xml-output-splitter.png b/taverna-wsdl-activity-ui/src/main/resources/xml-output-splitter.png
deleted file mode 100644
index f174f81..0000000
--- a/taverna-wsdl-activity-ui/src/main/resources/xml-output-splitter.png
+++ /dev/null
Binary files differ
diff --git a/taverna-wsdl-activity-ui/src/main/resources/xml-splitter.png b/taverna-wsdl-activity-ui/src/main/resources/xml-splitter.png
deleted file mode 100644
index 15875e5..0000000
--- a/taverna-wsdl-activity-ui/src/main/resources/xml-splitter.png
+++ /dev/null
Binary files differ
diff --git a/taverna-wsdl-activity-ui/src/test/java/net/sf/taverna/t2/activities/wsdl/views/TestWSDLActivityContextualView.java b/taverna-wsdl-activity-ui/src/test/java/net/sf/taverna/t2/activities/wsdl/views/TestWSDLActivityContextualView.java
deleted file mode 100644
index 0fa054b..0000000
--- a/taverna-wsdl-activity-ui/src/test/java/net/sf/taverna/t2/activities/wsdl/views/TestWSDLActivityContextualView.java
+++ /dev/null
@@ -1,53 +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.activities.wsdl.views;
-
-import static org.junit.Assert.assertNull;
-
-import org.junit.Before;
-
-import uk.org.taverna.scufl2.api.activity.Activity;
-import uk.org.taverna.scufl2.api.configurations.Configuration;
-
-import com.fasterxml.jackson.databind.node.ObjectNode;
-
-public class TestWSDLActivityContextualView {
-
-	Activity a;
-
-	@Before
-	public void setUp() throws Exception {
-		a=new Activity();
-		Configuration configuration = new Configuration();
-		ObjectNode json = (ObjectNode) configuration.getJson();
-		ObjectNode operation = json.objectNode();
-		operation.put("name", "getReport");
-		json.set("operation", operation);
-		String wsdlUrl=TestWSDLActivityContextualView.class.getResource("/GMService.wsdl").toExternalForm();
-		operation.put("wsdl", wsdlUrl);
-		configuration.setConfigures(a);
-	}
-
-	public void testConfigurationAction() {
-		WSDLActivityContextualView view = new WSDLActivityContextualView(a, null, null, null, null, null, null, null);
-		assertNull("WSDL has no configure action, so should be null",view.getConfigureAction(null));
-	}
-}
diff --git a/taverna-wsdl-activity-ui/src/test/resources/GMService.wsdl b/taverna-wsdl-activity-ui/src/test/resources/GMService.wsdl
deleted file mode 100644
index cf128ba..0000000
--- a/taverna-wsdl-activity-ui/src/test/resources/GMService.wsdl
+++ /dev/null
@@ -1,68 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<wsdl:definitions xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/" xmlns:tns="http://webservice.gominer.lmp.nci.nih.gov" xmlns:wsdlsoap="http://schemas.xmlsoap.org/wsdl/soap/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="http://webservice.gominer.lmp.nci.nih.gov">
-  <wsdl:types>
-    <xsd:schema targetNamespace="http://webservice.gominer.lmp.nci.nih.gov" elementFormDefault="qualified" attributeFormDefault="qualified">
-      <xsd:complexType name="ArrayOfString">
-        <xsd:sequence>
-          <xsd:element name="string" type="xsd:string" nillable="true" minOccurs="0" maxOccurs="unbounded"/>
-        </xsd:sequence>
-      </xsd:complexType>
-      <xsd:element name="getReport">
-
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element name="in0" type="tns:ArrayOfString" minOccurs="1" maxOccurs="1"/>
-            <xsd:element name="in1" type="tns:ArrayOfString" minOccurs="1" maxOccurs="1"/>
-            <xsd:element name="in2" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-            <xsd:element name="in3" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-            <xsd:element name="in4" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-            <xsd:element name="in5" type="xsd:boolean" minOccurs="1" maxOccurs="1"/>
-            <xsd:element name="in6" type="xsd:boolean" minOccurs="1" maxOccurs="1"/>
-
-            <xsd:element name="in7" type="xsd:boolean" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-        </xsd:complexType>
-      </xsd:element>
-      <xsd:element name="getReportResponse">
-        <xsd:complexType>
-          <xsd:sequence>
-            <xsd:element name="out" type="xsd:string" minOccurs="1" maxOccurs="1"/>
-          </xsd:sequence>
-
-        </xsd:complexType>
-      </xsd:element>
-    </xsd:schema>
-  </wsdl:types>
-  <wsdl:message name="getReportResponse">
-    <wsdl:part element="tns:getReportResponse" name="parameters"/>
-  </wsdl:message>
-  <wsdl:message name="getReportRequest">
-    <wsdl:part element="tns:getReport" name="parameters"/>
-
-  </wsdl:message>
-  <wsdl:portType name="GOMinerWSPortType">
-    <wsdl:operation name="getReport">
-      <wsdl:input message="tns:getReportRequest" name="getReportRequest"/>
-      <wsdl:output message="tns:getReportResponse" name="getReportResponse"/>
-    </wsdl:operation>
-  </wsdl:portType>
-  <wsdl:binding name="GOMinerWSHttpBinding" type="tns:GOMinerWSPortType">
-    <wsdlsoap:binding style="document" transport="http://schemas.xmlsoap.org/soap/http"/>
-
-    <wsdl:operation name="getReport">
-      <wsdlsoap:operation soapAction=""/>
-      <wsdl:input name="getReportRequest">
-        <wsdlsoap:body use="literal"/>
-      </wsdl:input>
-      <wsdl:output name="getReportResponse">
-        <wsdlsoap:body use="literal"/>
-      </wsdl:output>
-    </wsdl:operation>
-
-  </wsdl:binding>
-  <wsdl:service name="GOMinerWS">
-    <wsdl:port binding="tns:GOMinerWSHttpBinding" name="GOMinerWSHttpPort">
-      <wsdlsoap:address location="http://discover.nci.nih.gov/gominer/xfire/GMService"/>
-    </wsdl:port>
-  </wsdl:service>
-</wsdl:definitions>
\ No newline at end of file
diff --git a/taverna-wsdl-activity-ui/src/test/resources/kegg.wsdl b/taverna-wsdl-activity-ui/src/test/resources/kegg.wsdl
deleted file mode 100644
index a62b707..0000000
--- a/taverna-wsdl-activity-ui/src/test/resources/kegg.wsdl
+++ /dev/null
@@ -1,1889 +0,0 @@
-<?xml version="1.0"?>
-<definitions
-    name="KEGG_v6.1"
-    xmlns:typens="SOAP/KEGG"
-    xmlns:xsd="http://www.w3.org/2001/XMLSchema"
-    xmlns:soap="http://schemas.xmlsoap.org/wsdl/soap/"
-    xmlns:soapenc="http://schemas.xmlsoap.org/soap/encoding/"
-    xmlns:wsdl="http://schemas.xmlsoap.org/wsdl/"
-    xmlns="http://schemas.xmlsoap.org/wsdl/"
-    targetNamespace="SOAP/KEGG">
-
-  <types>
-    <xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" targetNamespace="SOAP/KEGG">
-      <xsd:import namespace="http://schemas.xmlsoap.org/soap/encoding/"/>
-      <xsd:import namespace="http://schemas.xmlsoap.org/wsdl/"/>
-<!-- common variable -->
-      <xsd:complexType name="ArrayOfint">
-        <xsd:complexContent>
-          <xsd:restriction base="soapenc:Array">
-
-            <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:int[]"/>
-          </xsd:restriction>
-        </xsd:complexContent>
-      </xsd:complexType>
-      <xsd:complexType name="ArrayOfstring">
-        <xsd:complexContent>
-          <xsd:restriction base="soapenc:Array">
-            <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="xsd:string[]"/>
-          </xsd:restriction>
-
-        </xsd:complexContent>
-      </xsd:complexType>
-<!-- SSDB -->
-      <xsd:complexType name="SSDBRelation">
-        <xsd:all>
-          <xsd:element name="genes_id1" type="xsd:string"/>
-          <xsd:element name="genes_id2" type="xsd:string"/>
-          <xsd:element name="sw_score" type="xsd:int"/>
-          <xsd:element name="bit_score" type="xsd:float"/>
-
-          <xsd:element name="identity" type="xsd:float"/>
-          <xsd:element name="overlap" type="xsd:int"/>
-          <xsd:element name="start_position1" type="xsd:int"/>
-          <xsd:element name="end_position1" type="xsd:int"/>
-          <xsd:element name="start_position2" type="xsd:int"/>
-          <xsd:element name="end_position2" type="xsd:int"/>
-          <xsd:element name="best_flag_1to2" type="xsd:boolean"/>
-          <xsd:element name="best_flag_2to1" type="xsd:boolean"/>
-          <xsd:element name="definition1" type="xsd:string"/>
-
-          <xsd:element name="definition2" type="xsd:string"/>
-          <xsd:element name="length1" type="xsd:int"/>
-          <xsd:element name="length2" type="xsd:int"/>
-        </xsd:all>
-      </xsd:complexType>
-      <xsd:complexType name="ArrayOfSSDBRelation">
-        <xsd:complexContent>
-          <xsd:restriction base="soapenc:Array">
-            <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:SSDBRelation[]"/>
-
-          </xsd:restriction>
-        </xsd:complexContent>
-      </xsd:complexType>
-<!-- MOTIF -->
-      <xsd:complexType name="MotifResult">
-        <xsd:all>
-          <xsd:element name="motif_id" type="xsd:string"/>
-          <xsd:element name="definition" type="xsd:string"/>
-          <xsd:element name="genes_id" type="xsd:string"/>
-
-          <xsd:element name="start_position" type="xsd:int"/>
-          <xsd:element name="end_position" type="xsd:int"/>
-          <xsd:element name="score" type="xsd:float"/>
-          <xsd:element name="evalue" type="xsd:double"/>
-        </xsd:all>
-      </xsd:complexType>
-      <xsd:complexType name="ArrayOfMotifResult">
-        <xsd:complexContent>
-          <xsd:restriction base="soapenc:Array">
-
-            <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:MotifResult[]"/>
-          </xsd:restriction>
-        </xsd:complexContent>
-      </xsd:complexType>
-<!-- DEFINITION -->
-      <xsd:complexType name="Definition">
-        <xsd:all>
-          <xsd:element name="entry_id" type="xsd:string"/>
-          <xsd:element name="definition" type="xsd:string"/>
-
-        </xsd:all>
-      </xsd:complexType>
-      <xsd:complexType name="ArrayOfDefinition">
-        <xsd:complexContent>
-          <xsd:restriction base="soapenc:Array">
-            <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:Definition[]"/>
-          </xsd:restriction>
-        </xsd:complexContent>
-      </xsd:complexType>
-
-<!-- LinkDB -->
-      <xsd:complexType name="LinkDBRelation">
-        <xsd:all>
-          <xsd:element name="entry_id1" type="xsd:string"/>
-          <xsd:element name="entry_id2" type="xsd:string"/>
-          <xsd:element name="type" type="xsd:string"/>
-          <xsd:element name="path" type="xsd:string"/>
-        </xsd:all>
-      </xsd:complexType>
-
-      <xsd:complexType name="ArrayOfLinkDBRelation">
-        <xsd:complexContent>
-          <xsd:restriction base="soapenc:Array">
-            <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:LinkDBRelation[]"/>
-          </xsd:restriction>
-        </xsd:complexContent>
-      </xsd:complexType>
-<!-- Pathway -->
-      <xsd:complexType name="PathwayElement">
-
-        <xsd:all>
-          <xsd:element name="element_id" type="xsd:int"/>
-          <xsd:element name="type" type="xsd:string"/>
-          <xsd:element name="names" type="typens:ArrayOfstring"/>
-          <xsd:element name="components" type="typens:ArrayOfint"/>
-        </xsd:all>
-      </xsd:complexType>
-      <xsd:complexType name="ArrayOfPathwayElement">
-        <xsd:complexContent>
-
-          <xsd:restriction base="soapenc:Array">
-            <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:PathwayElement[]"/>
-          </xsd:restriction>
-        </xsd:complexContent>
-      </xsd:complexType>
-      <xsd:complexType name="PathwayElementRelation">
-        <xsd:all>
-          <xsd:element name="element_id1" type="xsd:int"/>
-          <xsd:element name="element_id2" type="xsd:int"/>
-
-          <xsd:element name="type" type="xsd:string"/>
-          <!--xsd:element name="name" type="xsd:string"/-->
-          <xsd:element name="subtypes" type="typens:ArrayOfSubtype"/>
-        </xsd:all>
-      </xsd:complexType>
-      <xsd:complexType name="ArrayOfPathwayElementRelation">
-        <xsd:complexContent>
-          <xsd:restriction base="soapenc:Array">
-            <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:PathwayElementRelation[]"/>
-
-          </xsd:restriction>
-        </xsd:complexContent>
-      </xsd:complexType>
-      <xsd:complexType name="Subtype">
-        <xsd:all>
-          <xsd:element name="relation" type="xsd:string"/>
-          <xsd:element name="element_id" type="xsd:int"/>
-          <xsd:element name="type" type="xsd:string"/>
-        </xsd:all>
-
-      </xsd:complexType>
-      <xsd:complexType name="ArrayOfSubtype">
-        <xsd:complexContent>
-          <xsd:restriction base="soapenc:Array">
-            <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:Subtype[]"/>
-          </xsd:restriction>
-        </xsd:complexContent>
-      </xsd:complexType>
-<!-- v6.0 -->
-
-      <xsd:complexType name="StructureAlignment">
-        <xsd:all>
-          <xsd:element name="target_id" type="xsd:string"/>
-          <xsd:element name="score" type="xsd:float"/>
-          <xsd:element name="query_nodes" type="typens:ArrayOfint"/>
-          <xsd:element name="target_nodes" type="typens:ArrayOfint"/>
-        </xsd:all>
-      </xsd:complexType>
-      <xsd:complexType name="ArrayOfStructureAlignment">
-
-        <xsd:complexContent>
-          <xsd:restriction base="soapenc:Array">
-            <xsd:attribute ref="soapenc:arrayType" wsdl:arrayType="typens:StructureAlignment[]"/>
-          </xsd:restriction>
-        </xsd:complexContent>
-      </xsd:complexType>
-
-    </xsd:schema>
-  </types>
-
-<!-- KEGG information -->
-<!-- list_databases -->
-  <message name="list_databasesRequest"/>
-  <message name="list_databasesResponse">
-    <part name="return" type="typens:ArrayOfDefinition"/>
-  </message>
-<!-- list_organisms -->
-  <message name="list_organismsRequest"/>
-  <message name="list_organismsResponse">
-    <part name="return" type="typens:ArrayOfDefinition"/>
-
-  </message>
-<!-- list_pathways -->
-  <message name="list_pathwaysRequest">
-    <part name="org" type="xsd:string"/>
-  </message>
-  <message name="list_pathwaysResponse">
-    <part name="return" type="typens:ArrayOfDefinition"/>
-  </message>
-<!-- list_ko_classes -->
-  <message name="list_ko_classesRequest">
-
-    <part name="class_id" type="xsd:string"/>
-  </message>
-  <message name="list_ko_classesResponse">
-    <part name="return" type="typens:ArrayOfDefinition"/>
-  </message>
-<!-- DBGET -->
-<!-- binfo -->
-  <message name="binfoRequest">
-    <part name="db" type="xsd:string"/>
-  </message>
-
-  <message name="binfoResponse">
-    <part name="return" type="xsd:string"/>
-  </message>
-<!-- bget -->
-  <message name="bgetRequest">
-    <part name="string" type="xsd:string"/>
-  </message>
-  <message name="bgetResponse">
-    <part name="return" type="xsd:string"/>
-
-  </message>
-<!-- bfind -->
-  <message name="bfindRequest">
-    <part name="string" type="xsd:string"/>
-  </message>
-  <message name="bfindResponse">
-    <part name="return" type="xsd:string"/>
-  </message>
-<!-- btit -->
-  <message name="btitRequest">
-
-    <part name="string" type="xsd:string"/>
-  </message>
-  <message name="btitResponse">
-    <part name="return" type="xsd:string"/>
-  </message>
-<!-- bconv -->
-  <message name="bconvRequest">
-    <part name="string" type="xsd:string"/>
-  </message>
-
-  <message name="bconvResponse">
-    <part name="return" type="xsd:string"/>
-  </message>
-<!-- LinkDB -->
-  <message name="get_linkdb_by_entryRequest">
-    <part name="entry_id" type="xsd:string"/>
-    <part name="db" type="xsd:string"/>
-    <part name="offset" type="xsd:int"/>
-    <part name="limit" type="xsd:int"/>
-
-  </message>
-  <message name="get_linkdb_by_entryResponse">
-    <part name="return" type="typens:ArrayOfLinkDBRelation"/>
-  </message>
-<!-- SSDB -->
-<!-- get_best_neighbors_by_gene -->
-  <message name="get_best_neighbors_by_geneRequest">
-    <part name="genes_id" type="xsd:string"/>
-    <part name="offset" type="xsd:int"/>
-    <part name="limit" type="xsd:int"/>
-
-  </message>
-  <message name="get_best_neighbors_by_geneResponse">
-    <part name="return" type="typens:ArrayOfSSDBRelation"/>
-  </message>
-<!-- get_best_best_neighbors_by_gene -->
-  <message name="get_best_best_neighbors_by_geneRequest">
-    <part name="genes_id" type="xsd:string"/>
-    <part name="offset" type="xsd:int"/>
-    <part name="limit" type="xsd:int"/>
-
-  </message>
-  <message name="get_best_best_neighbors_by_geneResponse">
-    <part name="return" type="typens:ArrayOfSSDBRelation"/>
-  </message>
-<!-- get_reverse_best_neighbors_by_gene -->
-  <message name="get_reverse_best_neighbors_by_geneRequest">
-    <part name="genes_id" type="xsd:string"/>
-    <part name="offset" type="xsd:int"/>
-    <part name="limit" type="xsd:int"/>
-
-  </message>
-  <message name="get_reverse_best_neighbors_by_geneResponse">
-    <part name="return" type="typens:ArrayOfSSDBRelation"/>
-  </message>
-<!-- get_paralogs_by_geneRequest -->
-  <message name="get_paralogs_by_geneRequest">
-    <part name="genes_id" type="xsd:string"/>
-    <part name="offset" type="xsd:int"/>
-    <part name="limit" type="xsd:int"/>
-
-  </message>
-  <message name="get_paralogs_by_geneResponse">
-    <part name="return" type="typens:ArrayOfSSDBRelation"/>
-  </message>
-<!-- MOTIF -->
-<!-- get_motifs_by_gene -->
-  <message name="get_motifs_by_geneRequest">
-    <part name="genes_id" type="xsd:string"/>
-    <part name="db" type="xsd:string"/>
-  </message>
-
-  <message name="get_motifs_by_geneResponse">
-    <part name="return" type="typens:ArrayOfMotifResult"/>
-  </message>
-<!-- get_genes_by_motifs -->
-  <message name="get_genes_by_motifsRequest">
-    <part name="motif_id_list" type="typens:ArrayOfstring"/>
-    <part name="offset" type="xsd:int"/>
-    <part name="limit" type="xsd:int"/>
-  </message>
-
-  <message name="get_genes_by_motifsResponse">
-    <part name="return" type="typens:ArrayOfDefinition"/>
-  </message>
-<!-- KO,OC,PC -->
-<!-- get_ko_by_gene -->
-  <message name="get_ko_by_geneRequest">
-    <part name="genes_id" type="xsd:string"/>
-  </message>
-  <message name="get_ko_by_geneResponse">
-    <part name="return" type="typens:ArrayOfstring"/>
-
-  </message>
-<!-- get_ko_by_ko_class -->
-  <message name="get_ko_by_ko_classRequest">
-    <part name="class_id" type="xsd:string"/>
-  </message>
-  <message name="get_ko_by_ko_classResponse">
-    <part name="return" type="typens:ArrayOfDefinition"/>
-  </message>
-<!-- get_genes_by_ko -->
-  <message name="get_genes_by_koRequest">
-
-    <part name="ko_id" type="xsd:string"/>
-    <part name="org" type="xsd:string"/>
-  </message>
-  <message name="get_genes_by_koResponse">
-    <part name="return" type="typens:ArrayOfDefinition"/>
-  </message>
-<!-- get_genes_by_ko_class -->
-  <message name="get_genes_by_ko_classRequest">
-    <part name="class_id" type="xsd:string"/>
-
-    <part name="org" type="xsd:string"/>
-	<part name="offset" type="xsd:int"/>
-    <part name="limit" type="xsd:int"/>
-  </message>
-  <message name="get_genes_by_ko_classResponse">
-    <part name="return" type="typens:ArrayOfDefinition"/>
-  </message>
-<!-- get_oc_members_by_gene -->
-<!--
-  <message name="get_oc_members_by_geneRequest">
-    <part name="genes_id" type="xsd:string"/>
-    <part name="offset" type="xsd:int"/>
-    <part name="limit" type="xsd:int"/>
-  </message>
-  <message name="get_oc_members_by_geneResponse">
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
--->
-<!-- get_pc_members_by_gene -->
-
-<!--
-  <message name="get_pc_members_by_geneRequest">
-    <part name="genes_id" type="xsd:string"/>
-    <part name="offset" type="xsd:int"/>
-    <part name="limit" type="xsd:int"/>
-  </message>
-  <message name="get_pc_members_by_geneResponse">
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
--->
-<!-- PATHWAY -->
-<!-- Coloring pathways -->
-<!-- mark_pathway_by_objects -->
-  <message name="get_elements_by_pathwayRequest">
-    <part name="pathway_id" type="xsd:string"/>
-  </message>
-  <message name="get_elements_by_pathwayResponse">
-    <part name="return" type="typens:ArrayOfPathwayElement"/>
-  </message>
-  <message name="get_element_relations_by_pathwayRequest">
-
-    <part name="pathway_id" type="xsd:string"/>
-  </message>
-  <message name="get_element_relations_by_pathwayResponse">
-    <part name="return" type="typens:ArrayOfPathwayElementRelation"/>
-  </message>
-  <message name="color_pathway_by_elementsRequest">
-    <part name="pathway_id" type="xsd:string"/>
-    <part name="element_list" type="typens:ArrayOfint"/>
-    <part name="fg_color_list" type="typens:ArrayOfstring"/>
-
-    <part name="bg_color_list" type="typens:ArrayOfstring"/>
-  </message>
-  <message name="color_pathway_by_elementsResponse">
-    <part name="return" type="xsd:string"/>
-  </message>
-  <message name="get_html_of_colored_pathway_by_elementsRequest">
-    <part name="pathway_id" type="xsd:string"/>
-    <part name="element_list" type="typens:ArrayOfint"/>
-    <part name="fg_color_list" type="typens:ArrayOfstring"/>
-
-    <part name="bg_color_list" type="typens:ArrayOfstring"/>
-  </message>
-  <message name="get_html_of_colored_pathway_by_elementsResponse">
-    <part name="return" type="xsd:string"/>
-  </message>
-
-  <message name="mark_pathway_by_objectsRequest">
-    <part name="pathway_id" type="xsd:string"/>
-    <part name="object_id_list" type="typens:ArrayOfstring"/>
-
-  </message>
-  <message name="mark_pathway_by_objectsResponse">
-    <part name="return" type="xsd:string"/>
-  </message>
-<!-- color_pathway_by_objects -->
-  <message name="color_pathway_by_objectsRequest">
-    <part name="pathway_id" type="xsd:string"/>
-    <part name="object_id_list" type="typens:ArrayOfstring"/>
-    <part name="fg_color_list" type="typens:ArrayOfstring"/>
-
-    <part name="bg_color_list" type="typens:ArrayOfstring"/>
-  </message>
-  <message name="color_pathway_by_objectsResponse">
-    <part name="return" type="xsd:string"/>
-  </message>
-<!-- get_html_org_marked_pathway_by_objects -->
-  <message name="get_html_of_marked_pathway_by_objectsRequest">
-    <part name="pathway_id" type="xsd:string"/>
-    <part name="object_id_list" type="typens:ArrayOfstring"/>
-
-  </message>
-  <message name="get_html_of_marked_pathway_by_objectsResponse">
-    <part name="return" type="xsd:string"/>
-  </message>
-<!-- get_html_of_colored_pathway_by_objects -->
-  <message name="get_html_of_colored_pathway_by_objectsRequest">
-    <part name="pathway_id" type="xsd:string"/>
-    <part name="object_id_list" type="typens:ArrayOfstring"/>
-    <part name="fg_color_list" type="typens:ArrayOfstring"/>
-
-    <part name="bg_color_list" type="typens:ArrayOfstring"/>
-  </message>
-  <message name="get_html_of_colored_pathway_by_objectsResponse">
-    <part name="return" type="xsd:string"/>
-  </message>
-<!-- Objects on the pathway -->
-<!-- get_genes_by_pathway -->
-  <message name="get_genes_by_pathwayRequest">
-    <part name="pathway_id" type="xsd:string"/>
-  </message>
-
-  <message name="get_genes_by_pathwayResponse">
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
-<!-- get_enzymes_by_pathway -->
-  <message name="get_enzymes_by_pathwayRequest">
-    <part name="pathway_id" type="xsd:string"/>
-  </message>
-  <message name="get_enzymes_by_pathwayResponse">
-    <part name="return" type="typens:ArrayOfstring"/>
-
-  </message>
-<!-- get_reactions_by_pathway -->
-  <message name="get_reactions_by_pathwayRequest">
-    <part name="pathway_id" type="xsd:string"/>
-  </message>
-  <message name="get_reactions_by_pathwayResponse">
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
-<!-- Pathways by objects -->
-<!-- get_pathways_by_genes -->
-
-  <message name="get_pathways_by_genesRequest">
-    <part name="genes_id_list" type="typens:ArrayOfstring"/>
-  </message>
-  <message name="get_pathways_by_genesResponse">
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
-<!-- get_pathways_by_enzymes  -->
-  <message name="get_pathways_by_enzymesRequest">
-    <part name="enzyme_id_list" type="typens:ArrayOfstring"/>
-
-  </message>
-  <message name="get_pathways_by_enzymesResponse">
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
-<!-- get_pathways_by_reactions -->
-  <message name="get_pathways_by_reactionsRequest">
-    <part name="reaction_id_list" type="typens:ArrayOfstring"/>
-  </message>
-  <message name="get_pathways_by_reactionsResponse">
-
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
-<!-- Mutual transformation of objects -->
-<!-- Relation among pathways -->
-<!-- get_linked_pathways -->
-  <message name="get_linked_pathwaysRequest">
-    <part name="pathway_id" type="xsd:string"/>
-  </message>
-  <message name="get_linked_pathwaysResponse">
-    <part name="return" type="typens:ArrayOfstring"/>
-
-  </message>
-<!-- Relation among genes and enzymes -->
-<!-- get_genes_by_enzyme -->
-  <message name="get_genes_by_enzymeRequest">
-    <part name="enzyme_id" type="xsd:string"/>
-    <part name="org" type="xsd:string"/>
-  </message>
-  <message name="get_genes_by_enzymeResponse">
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
-
-<!-- get_enzymes_by_gene -->
-  <message name="get_enzymes_by_geneRequest">
-    <part name="genes_id" type="xsd:string"/>
-  </message>
-  <message name="get_enzymes_by_geneResponse">
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
-<!-- Relation among enzymes, compounds and reactions -->
-<!-- get_enzymes_by_reaction -->
-  <message name="get_enzymes_by_reactionRequest">
-
-    <part name="reaction_id" type="xsd:string"/>
-  </message>
-  <message name="get_enzymes_by_reactionResponse">
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
-<!-- get_reactions_by_enzyme -->
-  <message name="get_reactions_by_enzymeRequest">
-    <part name="enzyme_id" type="xsd:string"/>
-  </message>
-
-  <message name="get_reactions_by_enzymeResponse">
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
-<!-- GENES -->
-<!-- get_genes_by_organism -->
-  <message name="get_genes_by_organismRequest">
-    <part name="org" type="xsd:string"/>
-    <part name="offset" type="xsd:int"/>
-    <part name="limit" type="xsd:int"/>
-  </message>
-
-  <message name="get_genes_by_organismResponse">
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
-<!-- GENOME -->
-<!-- get_number_of_genes_by_organism -->
-  <message name="get_number_of_genes_by_organismRequest">
-    <part name="abbr" type="xsd:string"/>
-  </message>
-  <message name="get_number_of_genes_by_organismResponse">
-    <part name="return" type="xsd:int"/>
-
-  </message>
-<!-- LIGAND -->
-  <message name="get_reactions_by_glycanRequest">
-    <part name="glycan_id" type="xsd:string"/>
-  </message>
-  <message name="get_reactions_by_glycanResponse">
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
-  <message name="get_reactions_by_compoundRequest">
-
-    <part name="compound_id" type="xsd:string"/>
-  </message>
-  <message name="get_reactions_by_compoundResponse">
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
-  <message name="get_enzymes_by_glycanRequest">
-    <part name="glycan_id" type="xsd:string"/>
-  </message>
-  <message name="get_enzymes_by_glycanResponse">
-
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
-  <message name="get_enzymes_by_compoundRequest">
-    <part name="compound_id" type="xsd:string"/>
-  </message>
-  <message name="get_enzymes_by_compoundResponse">
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
-  <message name="get_pathways_by_compoundsRequest">
-
-    <part name="compound_id_list" type="typens:ArrayOfstring"/>
-  </message>
-  <message name="get_pathways_by_compoundsResponse">
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
-  <message name="get_pathways_by_glycansRequest">
-    <part name="glycan_id_list" type="typens:ArrayOfstring"/>
-  </message>
-  <message name="get_pathways_by_glycansResponse">
-
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
-  <message name="get_compounds_by_pathwayRequest">
-    <part name="pathway_id" type="xsd:string"/>
-  </message>
-  <message name="get_compounds_by_pathwayResponse">
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
-  <message name="get_compounds_by_enzymeRequest">
-
-    <part name="enzyme_id" type="xsd:string"/>
-  </message>
-  <message name="get_compounds_by_enzymeResponse">
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
-  <message name="get_glycans_by_enzymeRequest">
-    <part name="enzyme_id" type="xsd:string"/>
-  </message>
-  <message name="get_glycans_by_enzymeResponse">
-
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
-  <message name="get_glycans_by_pathwayRequest">
-    <part name="pathway_id" type="xsd:string"/>
-  </message>
-  <message name="get_glycans_by_pathwayResponse">
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
-  <message name="get_compounds_by_reactionRequest">
-
-    <part name="reaction_id" type="xsd:string"/>
-  </message>
-  <message name="get_compounds_by_reactionResponse">
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
-  <message name="get_glycans_by_reactionRequest">
-    <part name="reaction_id" type="xsd:string"/>
-  </message>
-  <message name="get_glycans_by_reactionResponse">
-
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
-  <message name="convert_mol_to_kcfRequest">
-    <part name="mol_text" type="xsd:string"/>
-  </message>
-  <message name="convert_mol_to_kcfResponse">
-    <part name="return" type="xsd:string"/>
-  </message>
-  <message name="get_kos_by_pathwayRequest">
-
-    <part name="pathway_id" type="xsd:string"/>
-  </message>
-  <message name="get_kos_by_pathwayResponse">
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
-  <message name="get_pathways_by_kosRequest">
-    <part name="ko_id_list" type="typens:ArrayOfstring"/>
-    <part name="org" type="xsd:string"/>
-  </message>
-
-  <message name="get_pathways_by_kosResponse">
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
-
-<!-- v6.0 -->
-  <message name="search_compounds_by_nameRequest">
-    <part name="name" type="xsd:string"/>
-  </message>
-  <message name="search_compounds_by_nameResponse">
-    <part name="return" type="typens:ArrayOfstring"/>
-
-  </message>
-
-  <message name="search_glycans_by_nameRequest">
-    <part name="name" type="xsd:string"/>
-  </message>
-  <message name="search_glycans_by_nameResponse">
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
-
-  <message name="search_compounds_by_compositionRequest">
-
-    <part name="composition" type="xsd:string"/>
-  </message>
-  <message name="search_compounds_by_compositionResponse">
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
-
-  <message name="search_compounds_by_massRequest">
-    <part name="mass" type="xsd:float"/>
-    <part name="range" type="xsd:float"/>
-
-  </message>
-  <message name="search_compounds_by_massResponse">
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
-
-  <message name="search_glycans_by_massRequest">
-    <part name="mass" type="xsd:float"/>
-    <part name="range" type="xsd:float"/>
-  </message>
-
-  <message name="search_glycans_by_massResponse">
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
-
-  <message name="search_glycans_by_compositionRequest">
-    <part name="composition" type="xsd:string"/>
-  </message>
-  <message name="search_glycans_by_compositionResponse">
-    <part name="return" type="typens:ArrayOfstring"/>
-
-  </message>
-
-  <message name="search_compounds_by_subcompRequest">
-    <part name="mol" type="xsd:string"/>
-    <part name="offset" type="xsd:int"/>
-    <part name="limit" type="xsd:int"/>
-  </message>
-  <message name="search_compounds_by_subcompResponse">
-    <part name="return" type="typens:ArrayOfStructureAlignment"/>
-
-  </message>
-
-  <message name="search_glycans_by_kcamRequest">
-    <part name="kcf" type="xsd:string"/>
-    <part name="program" type="xsd:string"/>
-    <part name="option" type="xsd:string"/>
-    <part name="offset" type="xsd:int"/>
-    <part name="limit" type="xsd:int"/>
-  </message>
-
-  <message name="search_glycans_by_kcamResponse">
-    <part name="return" type="typens:ArrayOfStructureAlignment"/>
-  </message>
-
-  <message name="get_linkdb_between_databasesRequest">
-    <part name="from_db" type="xsd:string"/>
-    <part name="to_db" type="xsd:string"/>
-    <part name="offset" type="xsd:int"/>
-    <part name="limit" type="xsd:int"/>
-
-  </message>
-  <message name="get_linkdb_between_databasesResponse">
-    <part name="return" type="typens:ArrayOfLinkDBRelation"/>
-  </message>
-
-<!-- v6.1 -->
-  <message name="search_drugs_by_nameRequest">
-    <part name="name" type="xsd:string"/>
-  </message>
-  <message name="search_drugs_by_nameResponse">
-
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
-
-  <message name="search_drugs_by_compositionRequest">
-    <part name="composition" type="xsd:string"/>
-  </message>
-  <message name="search_drugs_by_compositionResponse">
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
-
-  <message name="search_drugs_by_massRequest">
-    <part name="mass" type="xsd:float"/>
-    <part name="range" type="xsd:float"/>
-  </message>
-  <message name="search_drugs_by_massResponse">
-    <part name="return" type="typens:ArrayOfstring"/>
-  </message>
-
-  <message name="search_drugs_by_subcompRequest">
-
-    <part name="mol" type="xsd:string"/>
-    <part name="offset" type="xsd:int"/>
-    <part name="limit" type="xsd:int"/>
-  </message>
-  <message name="search_drugs_by_subcompResponse">
-    <part name="return" type="typens:ArrayOfStructureAlignment"/>
-  </message>
-
-  <portType name="KEGGPortType">
-
-<!-- KEGG information -->
-    <operation name="list_databases">
-      <input message="typens:list_databasesRequest"/>
-      <output message="typens:list_databasesResponse"/>
-    </operation>
-    <operation name="list_organisms">
-      <input message="typens:list_organismsRequest"/>
-      <output message="typens:list_organismsResponse"/>
-    </operation>
-
-    <operation name="list_pathways">
-      <input message="typens:list_pathwaysRequest"/>
-      <output message="typens:list_pathwaysResponse"/>
-    </operation>
-    <operation name="list_ko_classes">
-      <input message="typens:list_ko_classesRequest"/>
-      <output message="typens:list_ko_classesResponse"/>
-    </operation>
-<!-- DBGET -->
-
-    <operation name="binfo">
-      <input message="typens:binfoRequest"/>
-      <output message="typens:binfoResponse"/>
-    </operation>
-    <operation name="bget">
-      <input message="typens:bgetRequest"/>
-      <output message="typens:bgetResponse"/>
-    </operation>
-    <operation name="bfind">
-
-      <input message="typens:bfindRequest"/>
-      <output message="typens:bfindResponse"/>
-    </operation>
-    <operation name="btit">
-      <input message="typens:btitRequest"/>
-      <output message="typens:btitResponse"/>
-    </operation>
-    <operation name="bconv">
-      <input message="typens:bconvRequest"/>
-
-      <output message="typens:bconvResponse"/>
-    </operation>
-<!-- LinkDB -->
-    <operation name="get_linkdb_by_entry">
-      <input message="typens:get_linkdb_by_entryRequest"/>
-      <output message="typens:get_linkdb_by_entryResponse"/>
-    </operation>
-<!-- SSDB -->
-    <operation name="get_best_neighbors_by_gene">
-      <input message="typens:get_best_neighbors_by_geneRequest"/>
-
-      <output message="typens:get_best_neighbors_by_geneResponse"/>
-    </operation>
-    <operation name="get_best_best_neighbors_by_gene">
-      <input message="typens:get_best_best_neighbors_by_geneRequest"/>
-      <output message="typens:get_best_best_neighbors_by_geneResponse"/>
-    </operation>
-    <operation name="get_reverse_best_neighbors_by_gene">
-      <input message="typens:get_reverse_best_neighbors_by_geneRequest"/>
-      <output message="typens:get_reverse_best_neighbors_by_geneResponse"/>
-
-    </operation>
-    <operation name="get_paralogs_by_gene">
-      <input message="typens:get_paralogs_by_geneRequest"/>
-      <output message="typens:get_paralogs_by_geneResponse"/>
-    </operation>
-<!-- MOTIF -->
-    <operation name="get_motifs_by_gene">
-      <input message="typens:get_motifs_by_geneRequest"/>
-      <output message="typens:get_motifs_by_geneResponse"/>
-
-    </operation>
-    <operation name="get_genes_by_motifs">
-      <input message="typens:get_genes_by_motifsRequest"/>
-      <output message="typens:get_genes_by_motifsResponse"/>
-    </operation>
-<!-- KO,OC,PC -->
-    <operation name="get_ko_by_gene">
-      <input message="typens:get_ko_by_geneRequest"/>
-      <output message="typens:get_ko_by_geneResponse"/>
-
-    </operation>
-    <operation name="get_ko_by_ko_class">
-      <input message="typens:get_ko_by_ko_classRequest"/>
-      <output message="typens:get_ko_by_ko_classResponse"/>
-    </operation>
-    <operation name="get_genes_by_ko">
-      <input message="typens:get_genes_by_koRequest"/>
-      <output message="typens:get_genes_by_koResponse"/>
-    </operation>
-
-    <operation name="get_genes_by_ko_class">
-      <input message="typens:get_genes_by_ko_classRequest"/>
-      <output message="typens:get_genes_by_ko_classResponse"/>
-    </operation>
-<!--
-    <operation name="get_oc_members_by_gene">
-      <input message="typens:get_oc_members_by_geneRequest"/>
-      <output message="typens:get_oc_members_by_geneResponse"/>
-    </operation>
--->
-<!--
-    <operation name="get_pc_members_by_gene">
-      <input message="typens:get_pc_members_by_geneRequest"/>
-      <output message="typens:get_pc_members_by_geneResponse"/>
-    </operation>
--->
-<!-- PATHWAY -->
-<!-- Coloring pathways -->
-    <operation name="get_elements_by_pathway">
-      <input message="typens:get_elements_by_pathwayRequest"/>
-      <output message="typens:get_elements_by_pathwayResponse"/>
-
-    </operation>
-    <operation name="get_element_relations_by_pathway">
-      <input message="typens:get_element_relations_by_pathwayRequest"/>
-      <output message="typens:get_element_relations_by_pathwayResponse"/>
-    </operation>
-    <operation name="color_pathway_by_elements">
-      <input message="typens:color_pathway_by_elementsRequest"/>
-      <output message="typens:color_pathway_by_elementsResponse"/>
-    </operation>
-
-    <operation name="get_html_of_colored_pathway_by_elements">
-      <input message="typens:get_html_of_colored_pathway_by_elementsRequest"/>
-      <output message="typens:get_html_of_colored_pathway_by_elementsResponse"/>
-    </operation>
-
-    <operation name="mark_pathway_by_objects">
-      <input message="typens:mark_pathway_by_objectsRequest"/>
-      <output message="typens:mark_pathway_by_objectsResponse"/>
-    </operation>
-
-    <operation name="color_pathway_by_objects">
-      <input message="typens:color_pathway_by_objectsRequest"/>
-      <output message="typens:color_pathway_by_objectsResponse"/>
-    </operation>
-    <operation name="get_html_of_marked_pathway_by_objects">
-      <input message="typens:get_html_of_marked_pathway_by_objectsRequest"/>
-      <output message="typens:get_html_of_marked_pathway_by_objectsResponse"/>
-    </operation>
-    <operation name="get_html_of_colored_pathway_by_objects">
-
-      <input message="typens:get_html_of_colored_pathway_by_objectsRequest"/>
-      <output message="typens:get_html_of_colored_pathway_by_objectsResponse"/>
-    </operation>
-<!-- Objects on the pathway -->
-    <operation name="get_genes_by_pathway">
-      <input message="typens:get_genes_by_pathwayRequest"/>
-      <output message="typens:get_genes_by_pathwayResponse"/>
-    </operation>
-    <operation name="get_enzymes_by_pathway">
-
-      <input message="typens:get_enzymes_by_pathwayRequest"/>
-      <output message="typens:get_enzymes_by_pathwayResponse"/>
-    </operation>
-    <operation name="get_reactions_by_pathway">
-      <input message="typens:get_reactions_by_pathwayRequest"/>
-      <output message="typens:get_reactions_by_pathwayResponse"/>
-    </operation>
-<!-- Pathways by objects -->
-    <operation name="get_pathways_by_genes">
-
-      <input message="typens:get_pathways_by_genesRequest"/>
-      <output message="typens:get_pathways_by_genesResponse"/>
-    </operation>
-    <operation name="get_pathways_by_enzymes">
-      <input message="typens:get_pathways_by_enzymesRequest"/>
-      <output message="typens:get_pathways_by_enzymesResponse"/>
-    </operation>
-    <operation name="get_pathways_by_reactions">
-      <input message="typens:get_pathways_by_reactionsRequest"/>
-
-      <output message="typens:get_pathways_by_reactionsResponse"/>
-    </operation>
-<!-- Mutual transformation of objects -->
-<!-- Realtion among pathways -->
-    <operation name="get_linked_pathways">
-      <input message="typens:get_linked_pathwaysRequest"/>
-      <output message="typens:get_linked_pathwaysResponse"/>
-    </operation>
-<!-- Realtion among genes and enzymes -->
-    <operation name="get_genes_by_enzyme">
-
-      <input message="typens:get_genes_by_enzymeRequest"/>
-      <output message="typens:get_genes_by_enzymeResponse"/>
-    </operation>
-    <operation name="get_enzymes_by_gene">
-      <input message="typens:get_enzymes_by_geneRequest"/>
-      <output message="typens:get_enzymes_by_geneResponse"/>
-    </operation>
-<!-- Realtion among enzymes, compounds and reactions -->
-    <operation name="get_enzymes_by_reaction">
-
-      <input message="typens:get_enzymes_by_reactionRequest"/>
-      <output message="typens:get_enzymes_by_reactionResponse"/>
-    </operation>
-    <operation name="get_reactions_by_enzyme">
-      <input message="typens:get_reactions_by_enzymeRequest"/>
-      <output message="typens:get_reactions_by_enzymeResponse"/>
-    </operation>
-<!-- GENES -->
-    <operation name="get_genes_by_organism">
-
-      <input message="typens:get_genes_by_organismRequest"/>
-      <output message="typens:get_genes_by_organismResponse"/>
-    </operation>
-<!-- GENOME -->
-    <operation name="get_number_of_genes_by_organism">
-      <input message="typens:get_number_of_genes_by_organismRequest"/>
-      <output message="typens:get_number_of_genes_by_organismResponse"/>
-    </operation>
-<!-- LIGAND -->
-    <operation name="get_reactions_by_glycan">
-
-      <input message="typens:get_reactions_by_glycanRequest"/>
-      <output message="typens:get_reactions_by_glycanResponse"/>
-    </operation>
-    <operation name="get_reactions_by_compound">
-      <input message="typens:get_reactions_by_compoundRequest"/>
-      <output message="typens:get_reactions_by_compoundResponse"/>
-    </operation>
-    <operation name="get_enzymes_by_glycan">
-      <input message="typens:get_enzymes_by_glycanRequest"/>
-
-      <output message="typens:get_enzymes_by_glycanResponse"/>
-    </operation>
-    <operation name="get_enzymes_by_compound">
-      <input message="typens:get_enzymes_by_compoundRequest"/>
-      <output message="typens:get_enzymes_by_compoundResponse"/>
-    </operation>
-    <operation name="get_pathways_by_compounds">
-      <input message="typens:get_pathways_by_compoundsRequest"/>
-      <output message="typens:get_pathways_by_compoundsResponse"/>
-
-    </operation>
-    <operation name="get_pathways_by_glycans">
-      <input message="typens:get_pathways_by_glycansRequest"/>
-      <output message="typens:get_pathways_by_glycansResponse"/>
-    </operation>
-    <operation name="get_compounds_by_pathway">
-      <input message="typens:get_compounds_by_pathwayRequest"/>
-      <output message="typens:get_compounds_by_pathwayResponse"/>
-    </operation>
-
-    <operation name="get_glycans_by_pathway">
-      <input message="typens:get_glycans_by_pathwayRequest"/>
-      <output message="typens:get_glycans_by_pathwayResponse"/>
-    </operation>
-    <operation name="get_compounds_by_reaction">
-      <input message="typens:get_compounds_by_reactionRequest"/>
-      <output message="typens:get_compounds_by_reactionResponse"/>
-    </operation>
-    <operation name="get_glycans_by_reaction">
-
-      <input message="typens:get_glycans_by_reactionRequest"/>
-      <output message="typens:get_glycans_by_reactionResponse"/>
-    </operation>
-    <operation name="get_compounds_by_enzyme">
-      <input message="typens:get_compounds_by_enzymeRequest"/>
-      <output message="typens:get_compounds_by_enzymeResponse"/>
-    </operation>
-    <operation name="get_glycans_by_enzyme">
-      <input message="typens:get_glycans_by_enzymeRequest"/>
-
-      <output message="typens:get_glycans_by_enzymeResponse"/>
-    </operation>
-    <operation name="convert_mol_to_kcf">
-      <input message="typens:convert_mol_to_kcfRequest"/>
-      <output message="typens:convert_mol_to_kcfResponse"/>
-    </operation>
-    <operation name="get_kos_by_pathway">
-      <input message="typens:get_kos_by_pathwayRequest"/>
-      <output message="typens:get_kos_by_pathwayResponse"/>
-
-    </operation>
-    <operation name="get_pathways_by_kos">
-      <input message="typens:get_pathways_by_kosRequest"/>
-      <output message="typens:get_pathways_by_kosResponse"/>
-    </operation>
-<!-- v6.0 -->
-    <operation name="search_compounds_by_name">
-      <input message="typens:search_compounds_by_nameRequest"/>
-      <output message="typens:search_compounds_by_nameResponse"/>
-
-    </operation>
-    <operation name="search_glycans_by_name">
-      <input message="typens:search_glycans_by_nameRequest"/>
-      <output message="typens:search_glycans_by_nameResponse"/>
-    </operation>
-    <operation name="search_compounds_by_composition">
-      <input message="typens:search_compounds_by_compositionRequest"/>
-      <output message="typens:search_compounds_by_compositionResponse"/>
-    </operation>
-
-    <operation name="search_compounds_by_mass">
-      <input message="typens:search_compounds_by_massRequest"/>
-      <output message="typens:search_compounds_by_massResponse"/>
-    </operation>
-    <operation name="search_glycans_by_mass">
-      <input message="typens:search_glycans_by_massRequest"/>
-      <output message="typens:search_glycans_by_massResponse"/>
-    </operation>
-    <operation name="search_glycans_by_composition">
-
-      <input message="typens:search_glycans_by_compositionRequest"/>
-      <output message="typens:search_glycans_by_compositionResponse"/>
-    </operation>
-    <operation name="search_compounds_by_subcomp">
-      <input message="typens:search_compounds_by_subcompRequest"/>
-      <output message="typens:search_compounds_by_subcompResponse"/>
-    </operation>
-    <operation name="search_glycans_by_kcam">
-      <input message="typens:search_glycans_by_kcamRequest"/>
-
-      <output message="typens:search_glycans_by_kcamResponse"/>
-    </operation>
-    <operation name="get_linkdb_between_databases">
-      <input message="typens:get_linkdb_between_databasesRequest"/>
-      <output message="typens:get_linkdb_between_databasesResponse"/>
-    </operation>
-
-<!-- v6.1 -->
-    <operation name="search_drugs_by_name">
-      <input message="typens:search_drugs_by_nameRequest"/>
-
-      <output message="typens:search_drugs_by_nameResponse"/>
-    </operation>
-    <operation name="search_drugs_by_composition">
-      <input message="typens:search_drugs_by_compositionRequest"/>
-      <output message="typens:search_drugs_by_compositionResponse"/>
-    </operation>
-    <operation name="search_drugs_by_mass">
-      <input message="typens:search_drugs_by_massRequest"/>
-      <output message="typens:search_drugs_by_massResponse"/>
-
-    </operation>
-    <operation name="search_drugs_by_subcomp">
-      <input message="typens:search_drugs_by_subcompRequest"/>
-      <output message="typens:search_drugs_by_subcompResponse"/>
-    </operation>
-
-  </portType>
-
-
-  <binding name="KEGGBinding" type="typens:KEGGPortType">
-
-    <soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
-<!-- KEGG information -->
-    <operation name="list_databases">
-      <soap:operation soapAction="SOAP/KEGG#list_databases"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-
-      </output>
-    </operation>
-    <operation name="list_organisms">
-      <soap:operation soapAction="SOAP/KEGG#list_organisms"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-
-      </output>
-    </operation>
-    <operation name="list_pathways">
-      <soap:operation soapAction="SOAP/KEGG#list_pathways"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-
-      </output>
-    </operation>
-    <operation name="list_ko_classes">
-      <soap:operation soapAction="SOAP/KEGG#list_ko_classes"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-
-      </output>
-    </operation>
-<!-- DBGET -->
-    <operation name="binfo">
-      <soap:operation soapAction="SOAP/KEGG#binfo"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="bget">
-      <soap:operation soapAction="SOAP/KEGG#bget"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="bfind">
-      <soap:operation soapAction="SOAP/KEGG#bfind"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="btit">
-      <soap:operation soapAction="SOAP/KEGG#btit"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="bconv">
-      <soap:operation soapAction="SOAP/KEGG#bconv"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-<!-- LinkDB -->
-    <operation name="get_linkdb_by_entry">
-      <soap:operation soapAction="SOAP/KEGG#get_linkdb_by_entry"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-<!-- SSDB -->
-    <operation name="get_best_neighbors_by_gene">
-      <soap:operation soapAction="SOAP/KEGG#get_best_neighbors_by_gene"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="get_best_best_neighbors_by_gene">
-      <soap:operation soapAction="SOAP/KEGG#get_best_best_neighbors_by_gene"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="get_reverse_best_neighbors_by_gene">
-      <soap:operation soapAction="SOAP/KEGG#get_reverse_best_neighbors_by_gene"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="get_paralogs_by_gene">
-      <soap:operation soapAction="SOAP/KEGG#get_paralogs_by_gene"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-<!-- MOTIF -->
-    <operation name="get_motifs_by_gene">
-      <soap:operation soapAction="SOAP/KEGG#get_motifs_by_gene"/>
-      <input>
-
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="get_genes_by_motifs">
-      <soap:operation soapAction="SOAP/KEGG#get_genes_by_motifs"/>
-      <input>
-
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-<!-- KO,OC,PC -->
-    <operation name="get_ko_by_gene">
-      <soap:operation soapAction="SOAP/KEGG#get_ko_by_gene"/>
-
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="get_ko_by_ko_class">
-      <soap:operation soapAction="SOAP/KEGG#get_ko_by_ko_class"/>
-
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="get_genes_by_ko">
-      <soap:operation soapAction="SOAP/KEGG#get_genes_by_ko"/>
-
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="get_genes_by_ko_class">
-      <soap:operation soapAction="SOAP/KEGG#get_genes_by_ko_class"/>
-
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-<!--
-    <operation name="get_oc_members_by_gene">
-      <soap:operation soapAction="SOAP/KEGG#get_oc_members_by_gene"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
--->
-<!--
-    <operation name="get_pc_members_by_gene">
-      <soap:operation soapAction="SOAP/KEGG#get_pc_members_by_gene"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
--->
-<!-- PATHWAY -->
-
-<!-- Coloring pathways -->
-    <operation name="get_elements_by_pathway">
-      <soap:operation soapAction="SOAP/KEGG#get_elements_by_pathway"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-
-    </operation>
-    <operation name="get_element_relations_by_pathway">
-      <soap:operation soapAction="SOAP/KEGG#get_element_relations_by_pathway"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-
-    </operation>
-    <operation name="color_pathway_by_elements">
-      <soap:operation soapAction="SOAP/KEGG#color_pathway_by_elements"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-
-    </operation>
-    <operation name="get_html_of_colored_pathway_by_elements">
-      <soap:operation soapAction="SOAP/KEGG#get_html_of_colored_pathway_by_elements"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-
-    </operation>
-
-    <operation name="mark_pathway_by_objects">
-      <soap:operation soapAction="SOAP/KEGG#mark_pathway_by_objects"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-
-      </output>
-    </operation>
-    <operation name="color_pathway_by_objects">
-      <soap:operation soapAction="SOAP/KEGG#color_pathway_by_objects"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-
-      </output>
-    </operation>
-    <operation name="get_html_of_marked_pathway_by_objects">
-      <soap:operation soapAction="SOAP/KEGG#get_html_of_marked_pathway_by_objects"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-
-      </output>
-    </operation>
-    <operation name="get_html_of_colored_pathway_by_objects">
-      <soap:operation soapAction="SOAP/KEGG#get_html_of_colored_pathway_by_objects"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-
-      </output>
-    </operation>
-<!-- Objects on the pathway -->
-    <operation name="get_genes_by_pathway">
-      <soap:operation soapAction="SOAP/KEGG#get_genes_by_pathway"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="get_enzymes_by_pathway">
-      <soap:operation soapAction="SOAP/KEGG#get_enzymes_by_pathway"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="get_reactions_by_pathway">
-      <soap:operation soapAction="SOAP/KEGG#get_reactions_by_pathway"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-<!-- Pathways by object -->
-    <operation name="get_pathways_by_genes">
-      <soap:operation soapAction="SOAP/KEGG#get_pathways_by_genes"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="get_pathways_by_enzymes">
-      <soap:operation soapAction="SOAP/KEGG#get_pathways_by_enzymes"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="get_pathways_by_reactions">
-      <soap:operation soapAction="SOAP/KEGG#get_pathways_by_reactions"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-<!-- Mutual transformation of objects -->
-    <operation name="get_linked_pathways">
-      <soap:operation soapAction="SOAP/KEGG#get_linked_pathways"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="get_genes_by_enzyme">
-      <soap:operation soapAction="SOAP/KEGG#get_genes_by_enzyme"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="get_enzymes_by_gene">
-      <soap:operation soapAction="SOAP/KEGG#get_enzymes_by_gene"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="get_enzymes_by_reaction">
-      <soap:operation soapAction="SOAP/KEGG#get_enzymes_by_reaction"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="get_reactions_by_enzyme">
-      <soap:operation soapAction="SOAP/KEGG#get_reactions_by_enzyme"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-<!-- GENES -->
-    <operation name="get_genes_by_organism">
-      <soap:operation soapAction="SOAP/KEGG#get_genes_by_organism"/>
-      <input>
-
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-<!-- GENOME -->
-    <operation name="get_number_of_genes_by_organism">
-      <soap:operation soapAction="SOAP/KEGG#get_number_of_genes_by_organism"/>
-
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-<!-- LIGAND -->
-    <operation name="get_reactions_by_glycan">
-
-      <soap:operation soapAction="SOAP/KEGG#get_reactions_by_glycan"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="get_reactions_by_compound">
-
-      <soap:operation soapAction="SOAP/KEGG#get_reactions_by_compound"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="get_enzymes_by_glycan">
-
-      <soap:operation soapAction="SOAP/KEGG#get_enzymes_by_glycan"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="get_enzymes_by_compound">
-
-      <soap:operation soapAction="SOAP/KEGG#get_enzymes_by_compound"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="get_pathways_by_compounds">
-
-      <soap:operation soapAction="SOAP/KEGG#get_pathways_by_compounds"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="get_pathways_by_glycans">
-
-      <soap:operation soapAction="SOAP/KEGG#get_pathways_by_glycans"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="get_compounds_by_pathway">
-
-      <soap:operation soapAction="SOAP/KEGG#get_compounds_by_pathway"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="get_glycans_by_pathway">
-
-      <soap:operation soapAction="SOAP/KEGG#get_glycans_by_pathway"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="get_compounds_by_reaction">
-
-      <soap:operation soapAction="SOAP/KEGG#get_compounds_by_reaction"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="get_glycans_by_reaction">
-
-      <soap:operation soapAction="SOAP/KEGG#get_glycans_by_reaction"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="get_compounds_by_enzyme">
-
-      <soap:operation soapAction="SOAP/KEGG#get_compounds_by_enzyme"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="get_glycans_by_enzyme">
-
-      <soap:operation soapAction="SOAP/KEGG#get_glycans_by_enzyme"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="convert_mol_to_kcf">
-
-      <soap:operation soapAction="SOAP/KEGG#convert_mol_to_kcf"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="get_kos_by_pathway">
-
-      <soap:operation soapAction="SOAP/KEGG#get_kos_by_pathway"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-    <operation name="get_pathways_by_kos">
-
-      <soap:operation soapAction="SOAP/KEGG#get_pathways_by_kos"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-    </operation>
-
-<!-- v6.0 -->
-    <operation name="search_compounds_by_name">
-      <soap:operation soapAction="SOAP/KEGG#search_compounds_by_name"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-
-    </operation>
-    <operation name="search_glycans_by_name">
-      <soap:operation soapAction="SOAP/KEGG#search_glycans_by_name"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-
-    </operation>
-    <operation name="search_compounds_by_composition">
-      <soap:operation soapAction="SOAP/KEGG#search_compounds_by_composition"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-
-    </operation>
-    <operation name="search_compounds_by_mass">
-      <soap:operation soapAction="SOAP/KEGG#search_compounds_by_mass"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-
-    </operation>
-    <operation name="search_glycans_by_mass">
-      <soap:operation soapAction="SOAP/KEGG#search_glycans_by_mass"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-
-    </operation>
-    <operation name="search_glycans_by_composition">
-      <soap:operation soapAction="SOAP/KEGG#search_glycans_by_composition"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-
-    </operation>
-    <operation name="search_compounds_by_subcomp">
-      <soap:operation soapAction="SOAP/KEGG#search_compounds_by_subcomp"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-
-    </operation>
-    <operation name="search_glycans_by_kcam">
-      <soap:operation soapAction="SOAP/KEGG#search_glycans_by_kcam"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-
-    </operation>
-    <operation name="get_linkdb_between_databases">
-      <soap:operation soapAction="SOAP/KEGG#get_linkdb_between_databases"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </output>
-
-    </operation>
-
-<!-- v6.1 -->
-    <operation name="search_drugs_by_name">
-      <soap:operation soapAction="SOAP/KEGG#search_drugs_by_name"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-
-      </output>
-    </operation>
-    <operation name="search_drugs_by_composition">
-      <soap:operation soapAction="SOAP/KEGG#search_drugs_by_composition"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-
-      </output>
-    </operation>
-    <operation name="search_drugs_by_mass">
-      <soap:operation soapAction="SOAP/KEGG#search_drugs_by_mass"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-
-      </output>
-    </operation>
-    <operation name="search_drugs_by_subcomp">
-      <soap:operation soapAction="SOAP/KEGG#search_drugs_by_subcomp"/>
-      <input>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-      </input>
-      <output>
-        <soap:body use="encoded" namespace="SOAP/KEGG" encodingStyle="http://schemas.xmlsoap.org/soap/encoding/"/>
-
-      </output>
-    </operation>
-
-  </binding>
-
-  <service name="KEGG">
-    <port name="KEGGPort" binding="typens:KEGGBinding">
-      <soap:address location="http://soap.genome.jp/keggapi/request_v6.1.cgi"/>
-    </port>
-  </service>
-
-</definitions>
diff --git a/taverna-xpath-activity-ui/pom.xml b/taverna-xpath-activity-ui/pom.xml
deleted file mode 100644
index 53b81ee..0000000
--- a/taverna-xpath-activity-ui/pom.xml
+++ /dev/null
@@ -1,68 +0,0 @@
-<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/xsd/maven-4.0.0.xsd">

-	<modelVersion>4.0.0</modelVersion>

-	<parent>

-		<groupId>net.sf.taverna</groupId>

-		<artifactId>taverna-parent</artifactId>

-		<version>3.0.1-SNAPSHOT</version>

-	</parent>

-	<groupId>net.sf.taverna.t2.ui-activities</groupId>

-	<artifactId>xpath-activity-ui</artifactId>

-	<version>2.0-SNAPSHOT</version>

-	<packaging>bundle</packaging>

-	<name>XPath Activity - UI bindings</name>

-	<dependencies>

-		<dependency>

-			<groupId>net.sf.taverna.t2.activities</groupId>

-			<artifactId>xpath-activity</artifactId>

-			<version>${t2.activities.version}</version>

-		</dependency>

-		<dependency>

-			<groupId>net.sf.taverna.t2.ui-api</groupId>

-			<artifactId>activity-icons-api</artifactId>

-			<version>${t2.ui.api.version}</version>

-		</dependency>

-		<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>menu-api</artifactId>

-			<version>${t2.ui.api.version}</version>

-		</dependency>

-		<dependency>

-			<groupId>net.sf.taverna.t2.ui-api</groupId>

-			<artifactId>report-api</artifactId>

-			<version>${t2.ui.api.version}</version>

-		</dependency>

-		<dependency>

-			<groupId>net.sf.taverna.t2.ui-components</groupId>

-			<artifactId>workflow-view</artifactId>

-			<version>${t2.ui.components.version}</version>

-		</dependency>

-	</dependencies>

-

-	<repositories>

-		<repository>

-			<releases />

-			<snapshots>

-				<enabled>false</enabled>

-			</snapshots>

-			<id>mygrid-repository</id>

-			<name>myGrid Repository</name>

-			<url>http://www.mygrid.org.uk/maven/repository

-			</url>

-		</repository>

-		<repository>

-			<releases>

-				<enabled>false</enabled>

-			</releases>

-			<snapshots />

-			<id>mygrid-snapshot-repository</id>

-			<name>myGrid Snapshot Repository</name>

-			<url>http://www.mygrid.org.uk/maven/snapshot-repository</url>

-		</repository>

-	</repositories>

-</project>

diff --git a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/config/TwoFieldQueryPanel.java b/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/config/TwoFieldQueryPanel.java
deleted file mode 100644
index d0f131a..0000000
--- a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/config/TwoFieldQueryPanel.java
+++ /dev/null
@@ -1,110 +0,0 @@
-package net.sf.taverna.t2.activities.xpath.ui.config;

-

-import java.awt.GridBagConstraints;

-import java.awt.GridBagLayout;

-import java.awt.Insets;

-

-import javax.swing.BorderFactory;

-import javax.swing.JLabel;

-import javax.swing.JPanel;

-import javax.swing.JTextField;

-

-/**

- * Auxiliary class that creates a JPanel with two labels and two text fields.

- *

- * It can be used to be placed into a dialog made by JOptionPane to get two

- * input values, not just one.

- *

- * @author Sergejs Aleksejevs

- */

-public class TwoFieldQueryPanel extends JPanel {

-	private JTextField tfFirstValue;

-	private JTextField tfSecondValue;

-

-	public TwoFieldQueryPanel(String firstFieldName, String secondFieldName) {

-		this(null, firstFieldName, null, secondFieldName, null);

-	}

-

-	public TwoFieldQueryPanel(String message, String firstFieldName,

-			String secondFieldName) {

-		this(message, firstFieldName, null, secondFieldName, null);

-	}

-

-	public TwoFieldQueryPanel(String firstFieldName,

-			String firstFieldDefaultValue, String secondFieldName,

-			String secondFieldDefaultValue) {

-		this(null, firstFieldName, firstFieldDefaultValue, secondFieldName,

-				secondFieldDefaultValue);

-	}

-

-	public TwoFieldQueryPanel(String message, String firstFieldName,

-			String firstFieldDefaultValue, String secondFieldName,

-			String secondFieldDefaultValue) {

-		super();

-		this.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));

-

-		this.setLayout(new GridBagLayout());

-		GridBagConstraints c = new GridBagConstraints();

-

-		c.gridx = 0;

-		c.gridy = 0;

-		c.weightx = 0;

-		c.fill = GridBagConstraints.HORIZONTAL;

-		c.anchor = GridBagConstraints.WEST;

-		c.insets = new Insets(3, 5, 3, 5);

-

-		if (message != null && message.length() > 0) {

-			c.gridwidth = 2;

-			c.insets = new Insets(5, 5, 15, 5);

-			this.add(new JLabel(message), c);

-

-			c.gridwidth = 1;

-			c.gridx = 0;

-			c.gridy++;

-			c.insets = new Insets(3, 5, 3, 5);

-		}

-

-		this.add(new JLabel(firstFieldName), c);

-

-		c.gridx++;

-		c.weightx = 1.0;

-		tfFirstValue = new JTextField(20);

-		if (firstFieldDefaultValue != null) {

-			tfFirstValue.setText(firstFieldDefaultValue);

-		}

-		tfFirstValue.selectAll();

-		tfFirstValue.requestFocusInWindow();

-		this.add(tfFirstValue, c);

-

-		c.gridx = 0;

-		c.gridy++;

-		c.weightx = 0;

-		this.add(new JLabel(secondFieldName), c);

-

-		c.gridx++;

-		c.weightx = 1.0;

-		tfSecondValue = new JTextField(20);

-		if (secondFieldDefaultValue != null) {

-			tfSecondValue.setText(secondFieldDefaultValue);

-		}

-		tfSecondValue.selectAll();

-		this.add(tfSecondValue, c);

-	}

-

-	/**

-	 * @return Trimmed value from the first text field. Guaranteed to be

-	 *         non-null.

-	 */

-	public String getFirstValue() {

-		return (tfFirstValue.getText().trim());

-	}

-

-	/**

-	 * @return Trimmed value from the second text field. Guaranteed to be

-	 *         non-null.

-	 */

-	public String getSecondValue() {

-		return (tfSecondValue.getText().trim());

-	}

-

-}

diff --git a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/config/XPathActivityConfigurationPanel.java b/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/config/XPathActivityConfigurationPanel.java
deleted file mode 100644
index 4342a4a..0000000
--- a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/config/XPathActivityConfigurationPanel.java
+++ /dev/null
@@ -1,1202 +0,0 @@
-package net.sf.taverna.t2.activities.xpath.ui.config;

-

-import java.awt.AWTEvent;

-import java.awt.BorderLayout;

-import java.awt.Color;

-import java.awt.Component;

-import java.awt.Cursor;

-import java.awt.Dimension;

-import java.awt.GridBagConstraints;

-import java.awt.GridBagLayout;

-import java.awt.GridLayout;

-import java.awt.Insets;

-import java.awt.Point;

-import java.awt.Toolkit;

-import java.awt.event.AWTEventListener;

-import java.awt.event.ActionEvent;

-import java.awt.event.ActionListener;

-import java.awt.event.FocusEvent;

-import java.awt.event.FocusListener;

-import java.awt.event.KeyAdapter;

-import java.awt.event.KeyEvent;

-import java.awt.event.KeyListener;

-import java.awt.event.MouseAdapter;

-import java.awt.event.MouseEvent;

-import java.awt.geom.Area;

-import java.io.File;

-import java.io.FileInputStream;

-import java.io.IOException;

-import java.util.HashMap;

-import java.util.List;

-import java.util.Map;

-import java.util.prefs.Preferences;

-

-import javax.swing.AbstractAction;

-import javax.swing.BorderFactory;

-import javax.swing.BoxLayout;

-import javax.swing.JButton;

-import javax.swing.JCheckBoxMenuItem;

-import javax.swing.JFileChooser;

-import javax.swing.JFrame;

-import javax.swing.JLabel;

-import javax.swing.JOptionPane;

-import javax.swing.JPanel;

-import javax.swing.JScrollPane;

-import javax.swing.JSeparator;

-import javax.swing.JTabbedPane;

-import javax.swing.JTable;

-import javax.swing.JTextArea;

-import javax.swing.JTextField;

-import javax.swing.JToggleButton;

-import javax.swing.ListSelectionModel;

-import javax.swing.Popup;

-import javax.swing.PopupFactory;

-import javax.swing.SwingUtilities;

-import javax.swing.Timer;

-import javax.swing.event.CaretEvent;

-import javax.swing.event.CaretListener;

-import javax.swing.filechooser.FileFilter;

-import javax.swing.table.DefaultTableModel;

-

-import net.sf.taverna.t2.activities.xpath.XPathActivityConfigurationBean;

-import net.sf.taverna.t2.activities.xpath.ui.config.xmltree.TableCellListener;

-import net.sf.taverna.t2.activities.xpath.ui.config.xmltree.XPathActivityXMLTree;

-import net.sf.taverna.t2.activities.xpath.ui.servicedescription.XPathActivityIcon;

-import net.sf.taverna.t2.workbench.icons.WorkbenchIcons;

-

-import org.apache.log4j.Logger;

-import org.dom4j.Document;

-import org.dom4j.DocumentException;

-import org.dom4j.DocumentHelper;

-import org.dom4j.InvalidXPathException;

-import org.dom4j.Node;

-import org.dom4j.XPath;

-import org.dom4j.XPathException;

-

-/**

- * @author Sergejs Aleksejevs

- */

-@SuppressWarnings("serial")

-public class XPathActivityConfigurationPanel extends JPanel {

-

-	private Logger logger = Logger.getLogger(XPathActivityConfigurationPanel.class);

-

-	// --- CONSTANTS ---

-	public static final int MAX_NUMBER_OF_MATCHING_NODES_TO_HIGHLIGHT_IN_THE_TREE = 100;

-

-	private static final Color INACTIVE_PANEL_BACKGROUND_COLOR = new Color(215,

-			215, 215);

-

-	private static final String EXAMPLE_XML_PROMPT = "Paste example XML here...";

-

-	private static final String XPATH_XML_DOCUMENT_DIR_PROPERTY="XPathXMLDocumentDir";

-

-	private XPathActivityConfigurationPanel thisPanel;

-

-	// --- COMPONENTS FOR ACTIVITY CONFIGURATION PANEL ---

-	private JPanel jpActivityConfiguration;

-

-	private JPanel jpLeft;

-	private JPanel jpRight;

-

-	private JToggleButton bShowXMLTreeSettings;

-	private Popup xmlTreeSettingsMenu;

-	private long xmlTreeSettingsMenuLastShownAt;

-	private JButton bGenerateXPathExpression;

-	private JPanel jpXMLTreeSettingsMenuContents;

-	private JCheckBoxMenuItem miIncludeAttributes;

-	private JCheckBoxMenuItem miIncludeValues;

-	private JCheckBoxMenuItem miIncludeNamespaces;

-

-	private JTextArea taSourceXML;

-	private JButton bLoadXMLDocument;

-	private JButton bParseXML;

-	private XPathActivityXMLTree xmlTree;

-	private JScrollPane spXMLTreePlaceholder;

-

-	// --- COMPONENTS FOR XPATH EDITING PANEL ---

-	private JLabel jlXPathExpressionStatus;

-	private JLabel jlXPathExpression;

-	private JTextField tfXPathExpression;

-	private Map<String, String> xpathNamespaceMap;

-	private JButton bRunXPath;

-

-	private JLabel jlShowHideNamespaceMappings;

-	private JTable jtXPathNamespaceMappings;

-	private JButton bAddMapping;

-	private JButton bRemoveMapping;

-	private JPanel jpNamespaceMappingsWithButton;

-

-	// --- COMPONENTS FOR XPATH TESTING PANEL ---

-	private JPanel jpXPathTesting;

-

-	private JTextField tfExecutedXPathExpression;

-	private JTextField tfMatchingElementCount;

-

-	private JTabbedPane tpExecutedXPathExpressionResults;

-	private JTextArea taExecutedXPathExpressionResultsAsText;

-	private JScrollPane spExecutedXPathExpressionResultsAsText;

-	private JTextArea taExecutedXPathExpressionResultsAsXML;

-	private JScrollPane spExecutedXPathExpressionResultsAsXML;

-

-	public XPathActivityConfigurationPanel() {

-		this.thisPanel = this;

-

-		this.setLayout(new GridBagLayout());

-		GridBagConstraints c = new GridBagConstraints();

-

-		c.gridx = 0;

-		c.gridy = 0;

-		c.fill = GridBagConstraints.BOTH;

-		c.weightx = 1.0;

-		c.weighty = 0.50;

-		c.insets = new Insets(0, 10, 10, 10);

-		this.jpActivityConfiguration = createActivityConfigurationPanel();

-		this.add(this.jpActivityConfiguration, c);

-

-		c.gridy++;

-		c.fill = GridBagConstraints.HORIZONTAL;

-		c.weighty = 0;

-		c.insets = new Insets(0, 10, 0, 10);

-		this.add(new JSeparator(), c);

-

-		// XPath expression editing panel

-		c.gridy++;

-		c.fill = GridBagConstraints.BOTH;

-		c.weighty = 0.05;

-		c.insets = new Insets(5, 10, 5, 10);

-		this.add(createXPathExpressionEditingPanel(), c);

-

-		c.gridy++;

-		;

-		c.fill = GridBagConstraints.HORIZONTAL;

-		c.weighty = 0;

-		c.insets = new Insets(0, 10, 0, 10);

-		this.add(new JSeparator(), c);

-

-		// XPath expression testing panel

-		c.gridy++;

-		c.fill = GridBagConstraints.BOTH;

-		c.weighty = 0.35;

-		c.insets = new Insets(5, 10, 0, 10);

-		this.jpXPathTesting = createXPathExpressionTestingPanel();

-		this.add(this.jpXPathTesting, c);

-	}

-

-	private JPanel createActivityConfigurationPanel() {

-		JPanel jpConfig = new JPanel(new GridBagLayout());

-		GridBagConstraints c = new GridBagConstraints();

-

-		// text area for example XML document

-		c.gridx = 0;

-		c.gridy = 0;

-		c.fill = GridBagConstraints.BOTH;

-		c.weightx = 0.5;

-		c.weighty = 1.0;

-		c.insets = new Insets(5, 0, 0, 5);

-		taSourceXML = new JTextArea(10, 30);

-		taSourceXML

-				.setToolTipText("<html>Use this text area to paste or load an example XML document.<br>"

-						+ "This document can then be parsed by clicking the button<br>"

-						+ "with a green arrow in order to see its tree structure.</html>");

-		taSourceXML.setText(EXAMPLE_XML_PROMPT);

-		taSourceXML.addFocusListener(new FocusListener() {

-			public void focusGained(FocusEvent e) {

-				taSourceXML.selectAll();

-			}

-

-			public void focusLost(FocusEvent e) { /* do nothing */

-			}

-		});

-		taSourceXML.addCaretListener(new CaretListener() {

-			public void caretUpdate(CaretEvent e) {

-				// make sure that it is only allowed to "parse example XML"

-				// when something is actually present in the text area

-				bParseXML.setEnabled(taSourceXML.getText().trim().length() > 0

-						&& !taSourceXML.getText().trim().equals(

-								EXAMPLE_XML_PROMPT));

-			}

-		});

-		jpLeft = new JPanel(new GridLayout(1, 1));

-		jpLeft.add(new JScrollPane(taSourceXML));

-		jpConfig.add(jpLeft, c);

-

-		// button to parse example XML document

-

-		c.gridx++;

-		c.fill = GridBagConstraints.NONE;

-		c.weightx = 0;

-		c.weighty = 0;

-		c.insets = new Insets(0, 0, 0, 0);

-		bParseXML = new JButton(

-				XPathActivityIcon

-						.getIconById(XPathActivityIcon.XPATH_ACTIVITY_CONFIGURATION_PARSE_XML_ICON));

-		bParseXML

-				.setToolTipText("Parse example XML document and generate its tree structure");

-		bParseXML.setEnabled(false);

-		bParseXML.addActionListener(new ActionListener() {

-			public void actionPerformed(ActionEvent e) {

-				parseXML();

-			}

-		});

-		jpConfig.add(bParseXML, c);

-

-		// placeholder for XML tree (will be replaced by a real tree when the

-		// parsing is done)

-

-		c.gridx++;

-		c.fill = GridBagConstraints.BOTH;

-		c.weightx = 0.5;

-		c.weighty = 1.0;

-		c.insets = new Insets(5, 5, 0, 0);

-		JTextArea taXMLTreePlaceholder = new JTextArea(10, 30);

-		taXMLTreePlaceholder

-				.setToolTipText("<html>This area will show tree structure of the example XML after you<br>"

-						+ "paste it into the space on the left-hand side and press 'Parse'<br>"

-						+ "button with the green arrow.</html>");

-		taXMLTreePlaceholder.setEditable(false);

-		taXMLTreePlaceholder.setBackground(INACTIVE_PANEL_BACKGROUND_COLOR);

-		spXMLTreePlaceholder = new JScrollPane(taXMLTreePlaceholder);

-		jpRight = new JPanel(new GridLayout(1, 1));

-		jpRight.add(spXMLTreePlaceholder);

-		jpConfig.add(jpRight, c);

-

-		// Button to load XML document from a file

-		

-		bLoadXMLDocument = new JButton("Load XML from file", WorkbenchIcons.openIcon);	

-		bLoadXMLDocument.addActionListener(new ActionListener() {

-			

-			@Override

-			public void actionPerformed(ActionEvent e) {

-				JFileChooser fileChooser = new JFileChooser();

-				Preferences prefs = Preferences.userNodeForPackage(getClass());

-				String curDir = prefs.get(XPATH_XML_DOCUMENT_DIR_PROPERTY, System.getProperty("user.home"));

-				fileChooser.setDialogTitle("Select file to load XML from");

-				fileChooser.setFileFilter(new FileFilter() {  

-					public boolean accept(File f) {

-				        return f.isDirectory() || f.getName().toLowerCase().endsWith(".xml");

-				    }

-				    

-				    public String getDescription() {

-				        return ".xml files";

-				    }

-				});

-				fileChooser.setCurrentDirectory(new File(curDir));		

-				int returnVal = fileChooser.showOpenDialog(((JButton) e

-						.getSource()).getParent());

-				if (returnVal == JFileChooser.APPROVE_OPTION) {

-					prefs.put(XPATH_XML_DOCUMENT_DIR_PROPERTY, fileChooser

-							.getCurrentDirectory().toString());

-					File file = fileChooser.getSelectedFile();

-					// Read the contents of a file into a string

-					// and set the value of the XML document text area to it

-					FileInputStream fis = null;

-					try{

-						byte[] fileBytes = new byte[(int)file.length()];

-						fis = new FileInputStream(file);

-						fis.read(fileBytes);

-						String xmlDocument = new String(fileBytes, "UTF-8");

-						setSourceXML(xmlDocument);

-					}

-					catch(Exception ex){

-						logger.error("An error occured while trying to read the XML document from file " + file.getAbsolutePath(), ex);

-						JOptionPane.showMessageDialog(

-								((JButton) e.getSource()).getParent(), 

-								"There was an error while trying to read the file", 

-								"XPath Activity", 

-								JOptionPane.ERROR_MESSAGE);

-					}

-					finally{

-						try {

-							fis.close();

-						} catch (IOException e1) {

-							// Ignore

-						}

-					}

-

-				}

-			}

-		});

-		c.gridx = 0;

-		c.gridy++;

-		c.gridwidth = 1;

-		c.fill = GridBagConstraints.NONE;

-		c.weightx = 0;

-		c.weighty = 0;

-		c.insets = new Insets(5, 0, 0, 5);

-		c.anchor = GridBagConstraints.EAST;

-		jpConfig.add(bLoadXMLDocument, c);

-		

-		// settings for the view of XML tree from example XML document

-

-		miIncludeAttributes = new JCheckBoxMenuItem("Show XML node attributes");

-		miIncludeAttributes.setSelected(true);

-		miIncludeAttributes.addActionListener(new ActionListener() {

-			public void actionPerformed(ActionEvent e) {

-				refreshXMLTreeUI();

-			}

-		});

-

-		miIncludeValues = new JCheckBoxMenuItem(

-				"Show values of XML elements and attributes");

-		miIncludeValues.setSelected(true);

-		miIncludeValues.addActionListener(new ActionListener() {

-			public void actionPerformed(ActionEvent e) {

-				refreshXMLTreeUI();

-			}

-		});

-

-		miIncludeNamespaces = new JCheckBoxMenuItem(

-				"Show namespaces of XML elements");

-		miIncludeNamespaces.addActionListener(new ActionListener() {

-			public void actionPerformed(ActionEvent e) {

-				refreshXMLTreeUI();

-			}

-		});

-

-		jpXMLTreeSettingsMenuContents = new JPanel();

-		jpXMLTreeSettingsMenuContents.setBorder(BorderFactory

-				.createRaisedBevelBorder());

-		jpXMLTreeSettingsMenuContents.setLayout(new BoxLayout(

-				jpXMLTreeSettingsMenuContents, BoxLayout.Y_AXIS));

-		jpXMLTreeSettingsMenuContents.add(miIncludeAttributes);

-		jpXMLTreeSettingsMenuContents.add(miIncludeValues);

-		jpXMLTreeSettingsMenuContents.add(miIncludeNamespaces);

-

-		bShowXMLTreeSettings = new JToggleButton("Show XML tree settings...",

-				XPathActivityIcon.getIconById(XPathActivityIcon.UNFOLD_ICON));

-		bShowXMLTreeSettings.setSelectedIcon(XPathActivityIcon

-				.getIconById(XPathActivityIcon.FOLD_ICON));

-		bShowXMLTreeSettings.setEnabled(false);

-		bShowXMLTreeSettings.addActionListener(new ActionListener() {

-			public void actionPerformed(ActionEvent e) {

-				if (xmlTreeSettingsMenu == null) {

-					xmlTreeSettingsMenuLastShownAt = System.currentTimeMillis();

-

-					Point parentPosition = bShowXMLTreeSettings

-							.getLocationOnScreen();

-					xmlTreeSettingsMenu = PopupFactory.getSharedInstance()

-							.getPopup(

-									bShowXMLTreeSettings,

-									jpXMLTreeSettingsMenuContents,

-									parentPosition.x,

-									parentPosition.y

-											+ bShowXMLTreeSettings.getHeight());

-					xmlTreeSettingsMenu.show();

-				} else {

-					bShowXMLTreeSettings.setSelected(false);

-				}

-			}

-		});

-		

-		bGenerateXPathExpression = new JButton("Generate XPath expression",

-				XPathActivityIcon

-						.getIconById(XPathActivityIcon.XML_TREE_NODE_ICON));

-		bGenerateXPathExpression.addActionListener(new ActionListener() {

-			@Override

-			public void actionPerformed(ActionEvent e) {

-			     updateXPathEditingPanelValues();	

-			}	

-		});

-		

-		JPanel xmlTreeButtonPanel = new JPanel();

-		xmlTreeButtonPanel.add(bGenerateXPathExpression);

-		xmlTreeButtonPanel.add(bShowXMLTreeSettings);

-		

-		c.gridx = 2;

-		c.gridwidth = 1;

-		c.fill = GridBagConstraints.NONE;

-		c.weightx = 0;

-		c.weighty = 0;

-		c.insets = new Insets(5, 0, 0, 0);

-		c.anchor = GridBagConstraints.EAST;

-		jpConfig.add(xmlTreeButtonPanel, c);

-

-		// register a new listener for all AWT mouse events - this will be used

-		// to identify clicks outside of the XML tree popup menu and the toggle

-		// button used to show/hide it

-		Toolkit.getDefaultToolkit().addAWTEventListener(new AWTEventListener() {

-			public void eventDispatched(AWTEvent event) {

-				if (event instanceof MouseEvent && xmlTreeSettingsMenu != null) {

-					MouseEvent e = (MouseEvent) event;

-					if (e.getClickCount() > 0

-							&& (e.getWhen() - xmlTreeSettingsMenuLastShownAt) > 100) {

-						// convert a point where mouse click was made from

-						// relative coordinates of the source component

-						// to the coordinates of the panel that represents the

-						// contents of the popup menu

-						Point clickRelativeToOverlay = SwingUtilities

-								.convertPoint((Component) e.getSource(), e

-										.getPoint(),

-										jpXMLTreeSettingsMenuContents);

-

-						Area areaOfPopupPanelAndToggleButton = new Area(

-								jpXMLTreeSettingsMenuContents.getBounds());

-

-						// only hide the popup menu if a click was made outside

-						// of the calculated area --

-						// plus not on one of the associated toggle buttons

-						if (!areaOfPopupPanelAndToggleButton

-								.contains(clickRelativeToOverlay)) {

-							xmlTreeSettingsMenu.hide();

-							bShowXMLTreeSettings.setSelected(false);

-

-							// if the popup menu was dismissed by a click on the

-							// toggle button that

-							// has made it visible, this timer makes sure that

-							// this click doesn't

-							// re-show the popup menu

-							new Timer(100, new ActionListener() {

-								public void actionPerformed(ActionEvent e) {

-									((Timer) e.getSource()).stop();

-									xmlTreeSettingsMenu = null;

-								}

-							}).start();

-

-						}

-					}

-				}

-			}

-		}, AWTEvent.MOUSE_EVENT_MASK);

-

-		return (jpConfig);

-	}

-

-	private JPanel createXPathExpressionEditingPanel() {

-		this.jlXPathExpressionStatus = new JLabel();

-

-		this.jlXPathExpression = new JLabel("XPath expression");

-

-		this.bRunXPath = new JButton("Run XPath");

-		this.bRunXPath.setEnabled(false);

-		this.bRunXPath.addActionListener(new ActionListener() {

-			public void actionPerformed(ActionEvent e) {

-				runXPath(true);

-			}

-		});

-

-		this.tfXPathExpression = new JTextField(30);

-		this.tfXPathExpression.setPreferredSize(new Dimension(0, this.bRunXPath

-				.getPreferredSize().height));

-		this.tfXPathExpression.setMinimumSize(new Dimension(0, this.bRunXPath

-				.getPreferredSize().height));

-		this.tfXPathExpression.addCaretListener(new CaretListener() {

-			public void caretUpdate(CaretEvent e) {

-				validateXPathAndUpdateUI();

-			}

-		});

-		this.tfXPathExpression.addKeyListener(new KeyListener() {

-			public void keyPressed(KeyEvent e) {

-				if (e.getKeyCode() == KeyEvent.VK_ENTER) {

-					if (bRunXPath.isEnabled()) {

-						// it is safe to check that ENTER key may execute the

-						// XPath expression if the

-						// "Run XPath" button is enabled, as expression

-						// validation is responsible for

-						// enabling / disabling the button as the expression

-						// changes

-						runXPath(true);

-					}

-				}

-			}

-

-			public void keyReleased(KeyEvent e) { /* not in use */

-			}

-

-			public void keyTyped(KeyEvent e) { /* not in use */

-			}

-		});

-

-		JPanel jpXPath = new JPanel(new GridBagLayout());

-		GridBagConstraints c = new GridBagConstraints();

-		c.fill = GridBagConstraints.HORIZONTAL;

-		c.weighty = 0;

-

-		c.gridx = 0;

-		c.gridy = 0;

-		c.weightx = 0;

-		jpXPath.add(jlXPathExpressionStatus);

-

-		c.gridx++;

-		c.weightx = 0.0;

-		c.insets = new Insets(0, 10, 0, 0);

-		jpXPath.add(jlXPathExpression, c);

-		

-		c.gridx++;

-		c.weightx = 1.0;

-		c.insets = new Insets(0, 10, 0, 10);

-		jpXPath.add(tfXPathExpression, c);

-

-		c.gridx++;

-		c.weightx = 0;

-		c.insets = new Insets(0, 0, 0, 0);

-		jpXPath.add(bRunXPath, c);

-

-		c.gridx = 2;

-		c.gridy++;

-		c.weightx = 1.0;

-		c.weighty = 0;

-		c.gridwidth = 2;

-		c.fill = GridBagConstraints.NONE;

-		c.anchor = GridBagConstraints.WEST;

-		c.insets = new Insets(0, 10, 0, 10);

-		jlShowHideNamespaceMappings = new JLabel("Show namespace mappings...");

-		jlShowHideNamespaceMappings.setForeground(Color.BLUE);

-		jlShowHideNamespaceMappings.setCursor(new Cursor(Cursor.HAND_CURSOR));

-		jlShowHideNamespaceMappings.addMouseListener(new MouseAdapter() {

-			public void mouseClicked(MouseEvent e) {

-				jpNamespaceMappingsWithButton

-						.setVisible(!jpNamespaceMappingsWithButton.isVisible());

-				jlShowHideNamespaceMappings

-						.setText((jpNamespaceMappingsWithButton.isVisible() ? "Hide"

-								: "Show")

-								+ " namespace mappings...");

-				thisPanel.validate();

-			}

-		});

-		jpXPath.add(jlShowHideNamespaceMappings, c);

-

-		// namespace mapping table

-		DefaultTableModel tableModel = new DefaultTableModel();

-		tableModel.addColumn("Namespace Prefix");

-		tableModel.addColumn("Namespace URI");

-

-		jtXPathNamespaceMappings = new JTable();

-		jtXPathNamespaceMappings.setModel(tableModel);

-		// ((DefaultCellEditor)jtXPathNamespaceMappings.getDefaultEditor(String.class)).setClickCountToStart(1);

-		// // TODO - enable if one-click-to-start-editing behaviour is required

-		// TODO - next line is to be enabled when Taverna is migrated to Java

-		// 1.6; for now it's fine to run without this

-		// jtXPathNamespaceMappings.setFillsViewportHeight(true); // makes sure

-		// that when the dedicated area is larger than the table, the latter is

-		// stretched vertically to fill the empty space

-		jtXPathNamespaceMappings

-				.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); // only one row can be selected at a time

-		jtXPathNamespaceMappings

-				.setPreferredScrollableViewportSize(new Dimension(200, 50)); // NB! this prevents the table from occupying most of the space in the panel when screen is maximized

-		jtXPathNamespaceMappings.addKeyListener(new KeyAdapter() {

-			public void keyReleased(KeyEvent e) {

-				if (e.getKeyCode() == KeyEvent.VK_DELETE) {

-					removeNamespaceMapping();

-				}

-			}

-		});

-

-		TableCellListener cellListener = new TableCellListener(

-				jtXPathNamespaceMappings, new AbstractAction() {

-					public void actionPerformed(ActionEvent e) {

-						TableCellListener tcl = (TableCellListener) e

-								.getSource();

-

-						if (tcl.getColumn() == 0) {

-							// prefix was modified

-							String newPrefix = (String) tcl.getNewValue();

-							if (xpathNamespaceMap.containsKey(newPrefix)) {

-								// such prefix already exists - change won't be

-								// saved

-								JOptionPane

-										.showMessageDialog(

-												thisPanel,

-												"Cannot update namespace prefix: "

-														+ "updated value already exists",

-												"XPath Activity",

-												JOptionPane.WARNING_MESSAGE);

-							} else {

-								// update the map with the new prefix for the

-								// same URI value

-								String oldPrefix = (String) tcl.getOldValue();

-								xpathNamespaceMap.put(newPrefix,

-										xpathNamespaceMap.remove(oldPrefix));

-							}

-						} else {

-							// simple case - just the URI value has changed:

-							// just overwrite the value in the namespace map

-							String prefixOfUpdatedURI = (String) jtXPathNamespaceMappings

-									.getModel().getValueAt(tcl.getRow(), 0);

-							xpathNamespaceMap.put(prefixOfUpdatedURI,

-									(String) tcl.getNewValue());

-						}

-

-						// either way - reload from the local map (map could be

-						// not updated if the validation didn't succeed)

-						reloadNamespaceMappingTableFromLocalMap();

-					}

-				});

-

-		jtXPathNamespaceMappings.getColumnModel().getColumn(0)

-				.setPreferredWidth(20); // set relative sizes of columns

-		jtXPathNamespaceMappings.getColumnModel().getColumn(1)

-				.setPreferredWidth(300);

-

-		JScrollPane spXPathNamespaceMappings = new JScrollPane(

-				jtXPathNamespaceMappings);

-		spXPathNamespaceMappings.setAlignmentY(TOP_ALIGNMENT);

-		spXPathNamespaceMappings.setMinimumSize(new Dimension(200, 50)); // makes the table to have at least two rows visible in all cases - no matter how small the parent panel is

-

-		bAddMapping = new JButton("Add Mapping");

-		bAddMapping.addActionListener(new ActionListener() {

-			public void actionPerformed(ActionEvent e) {

-				addNamespaceMapping();

-			}

-		});

-

-		bRemoveMapping = new JButton("Remove Mapping");

-		bRemoveMapping.setEnabled(false);

-		bRemoveMapping.addActionListener(new ActionListener() {

-			public void actionPerformed(ActionEvent e) {

-				removeNamespaceMapping();

-			}

-		});

-

-		bAddMapping.setMinimumSize(bRemoveMapping.getPreferredSize()); // make sure that the 'Add Mapping' button is of the same size as 'Remove Mapping'

-															

-		bAddMapping.setPreferredSize(bRemoveMapping.getPreferredSize()); // -- both are required to achieve desired behaviour when window is resized / namespace mapping table is enabled/disabled 												

-

-		bRunXPath.setMinimumSize(bRemoveMapping.getPreferredSize()); // do the same for 'Run XPath' button

-		

-		bRunXPath.setPreferredSize(bRemoveMapping.getPreferredSize());

-

-		JPanel jpAddRemoveButtons = new JPanel();

-		jpAddRemoveButtons.setLayout(new GridBagLayout());

-		GridBagConstraints cAddRemove = new GridBagConstraints();

-		cAddRemove.gridx = 0;

-		cAddRemove.gridy = 0;

-		cAddRemove.weightx = 1.0;

-		cAddRemove.anchor = GridBagConstraints.NORTH;

-		cAddRemove.fill = GridBagConstraints.HORIZONTAL;

-		jpAddRemoveButtons.add(bAddMapping, cAddRemove);

-		cAddRemove.gridy++;

-		cAddRemove.weighty = 1.0;

-		cAddRemove.insets = new Insets(2, 0, 0, 0);

-		jpAddRemoveButtons.add(bRemoveMapping, cAddRemove);

-

-		jpNamespaceMappingsWithButton = new JPanel();

-		jpNamespaceMappingsWithButton.setVisible(false);

-		jpNamespaceMappingsWithButton.setLayout(new BorderLayout(10, 0));

-		jpNamespaceMappingsWithButton.add(spXPathNamespaceMappings,

-				BorderLayout.CENTER);

-		jpNamespaceMappingsWithButton

-				.add(jpAddRemoveButtons, BorderLayout.EAST);

-

-		c.gridx = 0;

-		c.gridy++;

-		c.gridwidth = 4;

-		c.fill = GridBagConstraints.BOTH;

-		c.weightx = 1.0;

-		c.weighty = 1.0;

-		c.insets = new Insets(5, 0, 0, 0);

-		jpXPath.add(jpNamespaceMappingsWithButton, c);

-

-		// initialise some values / tooltips

-		resetXPathEditingPanel();

-

-		return (jpXPath);

-	}

-

-	protected void addNamespaceMapping() {

-		TwoFieldQueryPanel queryPanel = new TwoFieldQueryPanel(

-				"Namespace prefix:", "Namespace URI:");

-		int result = JOptionPane.showConfirmDialog(this, queryPanel,

-				"XPath Activity - Create new namespace mapping",

-				JOptionPane.OK_CANCEL_OPTION);

-

-		if (result == JOptionPane.OK_OPTION) {

-			boolean bInvalidMapping = true;

-			do {

-				bInvalidMapping = queryPanel.getFirstValue().length() == 0

-						|| queryPanel.getSecondValue().length() == 0

-						|| xpathNamespaceMap.containsKey(queryPanel

-								.getFirstValue());

-

-				if (bInvalidMapping) {

-					queryPanel = new TwoFieldQueryPanel(

-							"<html><center><font color=\"red\">ERROR: you must "

-									+ "enter values for both namespace prefix and URI. Prefix must be<br>"

-									+ "unique in the mapping table - duplicates are not allowed!</font></center></html>",

-							"Namespace prefix:", queryPanel.getFirstValue(),

-							"Namespace URI:", queryPanel.getSecondValue());

-					result = JOptionPane.showConfirmDialog(this, queryPanel,

-							"XPath Activity - Create new namespace mapping",

-							JOptionPane.OK_CANCEL_OPTION);

-				}

-			} while (bInvalidMapping && result == JOptionPane.OK_OPTION);

-

-			if (result == JOptionPane.OK_OPTION && !bInvalidMapping) {

-				// the value appears to be valid and OK was pressed - create new

-				// mapping

-				this.xpathNamespaceMap.put(queryPanel.getFirstValue(),

-						queryPanel.getSecondValue());

-				reloadNamespaceMappingTableFromLocalMap();

-			}

-		}

-	}

-

-	protected void removeNamespaceMapping() {

-		int selectedRow = jtXPathNamespaceMappings.getSelectedRow();

-		if (selectedRow != -1) {

-			// some row is selected - need to delete it and refresh table's UI

-			// (but first stop editing to avoid

-			// problems with cell editor trying to store an edited value after

-			// edited row has been deleted)

-			if (jtXPathNamespaceMappings.getCellEditor() != null) {

-				jtXPathNamespaceMappings.getCellEditor().stopCellEditing();

-			}

-			xpathNamespaceMap.remove(jtXPathNamespaceMappings.getValueAt(

-					selectedRow, 0));

-			reloadNamespaceMappingTableFromLocalMap();

-

-			// select another row in the table

-			int rowCount = jtXPathNamespaceMappings.getRowCount();

-			if (rowCount > 0) {

-				if (selectedRow < jtXPathNamespaceMappings.getRowCount()) {

-					// select the row that followed the one that was deleted

-					jtXPathNamespaceMappings.getSelectionModel()

-							.setSelectionInterval(selectedRow, selectedRow);

-				} else {

-					// last row in the table was deleted - select the one that

-					// is the new last row

-					jtXPathNamespaceMappings.getSelectionModel()

-							.setSelectionInterval(rowCount - 1, rowCount - 1);

-				}

-			}

-		} else {

-			JOptionPane.showMessageDialog(thisPanel,

-					"Please select a mapping to delete in the table first!",

-					"XPath Activity", JOptionPane.WARNING_MESSAGE);

-		}

-	}

-

-	private JPanel createXPathExpressionTestingPanel() {

-		JPanel jpTesting = new JPanel(new GridBagLayout());

-		GridBagConstraints c = new GridBagConstraints();

-

-		c.gridx = 0;

-		c.gridy = 0;

-		c.gridwidth = 1;

-		c.anchor = GridBagConstraints.WEST;

-		c.fill = GridBagConstraints.NONE;

-		c.weightx = 0;

-		c.weighty = 0;

-		c.insets = new Insets(0, 0, 10, 10);

-		jpTesting.add(new JLabel("Executed XPath expression:"), c);

-

-		c.gridx++;

-		c.fill = GridBagConstraints.HORIZONTAL;

-		c.weightx = 1.0;

-		c.weighty = 0;

-		c.insets = new Insets(0, 0, 10, 10);

-		tfExecutedXPathExpression = new JTextField();

-		tfExecutedXPathExpression.setEditable(false);

-		tfExecutedXPathExpression.setBorder(null);

-		jpTesting.add(tfExecutedXPathExpression, c);

-

-		c.gridx = 0;

-		c.gridy++;

-		c.fill = GridBagConstraints.NONE;

-		c.weightx = 0;

-		c.weighty = 0;

-		c.insets = new Insets(0, 0, 5, 10);

-		jpTesting.add(new JLabel("Number of matching nodes:"), c);

-

-		c.gridx++;

-		c.fill = GridBagConstraints.HORIZONTAL;

-		c.weightx = 1.0;

-		c.weighty = 0;

-		c.insets = new Insets(0, 0, 5, 10);

-		tfMatchingElementCount = new JTextField();

-		tfMatchingElementCount.setEditable(false);

-		tfMatchingElementCount.setBorder(null);

-		jpTesting.add(tfMatchingElementCount, c);

-

-		c.gridx = 0;

-		c.gridy++;

-		c.gridwidth = 2;

-		c.fill = GridBagConstraints.BOTH;

-		c.weightx = 1.0;

-		c.weighty = 1.0;

-		tpExecutedXPathExpressionResults = new JTabbedPane();

-		jpTesting.add(tpExecutedXPathExpressionResults, c);

-

-		taExecutedXPathExpressionResultsAsText = new JTextArea();

-		taExecutedXPathExpressionResultsAsText.setEditable(false);

-		spExecutedXPathExpressionResultsAsText = new JScrollPane(

-				taExecutedXPathExpressionResultsAsText);

-		spExecutedXPathExpressionResultsAsText.setPreferredSize(new Dimension(

-				200, 60));

-		spExecutedXPathExpressionResultsAsText.setBorder(BorderFactory

-				.createLineBorder(INACTIVE_PANEL_BACKGROUND_COLOR, 3));

-		tpExecutedXPathExpressionResults.add("Results as text",

-				spExecutedXPathExpressionResultsAsText);

-

-		taExecutedXPathExpressionResultsAsXML = new JTextArea();

-		taExecutedXPathExpressionResultsAsXML.setEditable(false);

-		spExecutedXPathExpressionResultsAsXML = new JScrollPane(

-				taExecutedXPathExpressionResultsAsXML);

-		spExecutedXPathExpressionResultsAsXML.setPreferredSize(new Dimension(

-				200, 60));

-		spExecutedXPathExpressionResultsAsXML.setBorder(BorderFactory

-				.createLineBorder(INACTIVE_PANEL_BACKGROUND_COLOR, 3));

-		tpExecutedXPathExpressionResults.add("Results as XML",

-				spExecutedXPathExpressionResultsAsXML);

-

-		// initialise some values / tooltips

-		resetXPathTestingPanel();

-

-		return (jpTesting);

-	}

-

-	protected void parseXML() {

-		String xmlData = taSourceXML.getText();

-

-		try {

-			xmlTree = XPathActivityXMLTree.createFromXMLData(xmlData,

-					miIncludeAttributes.isSelected(), miIncludeValues

-							.isSelected(), miIncludeNamespaces.isSelected(),

-					this);

-			xmlTree

-					.setToolTipText("<html>This is a tree structure of the XML document that you have pasted.<br><br>"

-							+ "Clicking on the nodes in this tree will automatically generate a<br>"

-							+ "corresponding XPath expression. Multiple <b>identical</b> nodes can<br>"

-							+ "be selected at once - in this case <b>wildcards</b> will be used in the<br>"

-							+ "generated XPath expression to if selected nodes have different<br>"

-							+ "ancestors. Other nodes that match the generated XPath expression<br>"

-							+ "will also be selected in the tree.<br><br>"

-							+ "Contextual menu provides convenience methods for expanding or<br>"

-							+ "collapsing the tree." + "</html>");

-			xmlTree.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));

-			JScrollPane spXMLTree = new JScrollPane(xmlTree);

-			spXMLTree.setPreferredSize(spXMLTreePlaceholder.getPreferredSize());

-			jpRight.removeAll();

-			jpRight.add(spXMLTree);

-

-			// all successful - enable options to modify the tree

-			this.bShowXMLTreeSettings.setEnabled(true);

-

-			// data structures inside the XML tree were reset (as the tree was

-			// re-created) -

-			// now reset the UI to the initial state as well

-			resetXPathEditingPanel();

-			resetXPathTestingPanel();

-

-			// XML tree has pre-populated the namespace map with the namespaces

-			// specified in the

-			// root element of the tree - load these values

-			updateXPathEditingPanelValues();

-

-			this.validate();

-			this.repaint();

-		} catch (DocumentException e) {

-			JOptionPane.showMessageDialog(this, e.getMessage(),

-					"XPath Activity", JOptionPane.ERROR_MESSAGE);

-			this.taSourceXML.requestFocusInWindow();

-			return;

-		}

-	}

-

-	/**

-	 * Makes the {@link XPathActivityXMLTree} to refresh its UI from the

-	 * original XML document that was used to create it in first place.

-	 * 

-	 * The reason for using this method is to apply new options to the way the

-	 * tree is rendered - e.g. attributes shown/hidden in the tree, values and

-	 * namespaces shown/hidden, etc.

-	 */

-	protected void refreshXMLTreeUI() {

-		this.xmlTree.refreshFromExistingDocument(this.miIncludeAttributes

-				.isSelected(), this.miIncludeValues.isSelected(),

-				this.miIncludeNamespaces.isSelected());

-	}

-

-	/**

-	 * Initialises XPath Editing panel: -- resets XPath expression that is being

-	 * shown; -- resets local copy of namespace map; -- resets UI of namespace

-	 * mapping table;

-	 */

-	private void resetXPathEditingPanel() {

-		tfXPathExpression.setText("");

-		validateXPathAndUpdateUI();

-

-		// clear the local copy of namespace map

-		xpathNamespaceMap = new HashMap<String, String>();

-

-		// clear the namespace mapping table and reload the data from the map

-		DefaultTableModel tableModel = (DefaultTableModel) jtXPathNamespaceMappings

-				.getModel();

-		tableModel.getDataVector().removeAllElements();

-	}

-

-	/**

-	 * Initialises XPath testing panel which shows results of executing current

-	 * XPath expression against the example XML - the panel is returned to the

-	 * way it looks when it is first loaded.

-	 */

-	private void resetXPathTestingPanel() {

-		this.tfExecutedXPathExpression.setText("--");

-		this.tfMatchingElementCount.setText("--");

-

-		this.taExecutedXPathExpressionResultsAsText.setText("");

-		this.taExecutedXPathExpressionResultsAsText

-				.setBackground(INACTIVE_PANEL_BACKGROUND_COLOR);

-

-		this.taExecutedXPathExpressionResultsAsXML.setText("");

-		this.taExecutedXPathExpressionResultsAsXML

-				.setBackground(INACTIVE_PANEL_BACKGROUND_COLOR);

-	}

-

-	public void updateXPathEditingPanelValues() {

-		if (xmlTree.getCurrentXPathExpression() != null) {

-			tfXPathExpression.setText(xmlTree.getCurrentXPathExpression()

-					.getText());

-		}

-

-		// clear the local copy of namespace map and update it with all values

-		// from

-		// the map in XML tree instance (which was apparently just re-generated

-		// on user request)

-		xpathNamespaceMap.clear();

-		xpathNamespaceMap.putAll(xmlTree.getCurrentXPathNamespaces());

-

-		// clear the namespace mapping table and reload the data from the map

-		reloadNamespaceMappingTableFromLocalMap();

-	}

-

-	protected void reloadNamespaceMappingTableFromLocalMap() {

-		// clear the namespace mapping table and reload the data from the map

-		DefaultTableModel tableModel = (DefaultTableModel) jtXPathNamespaceMappings

-				.getModel();

-		tableModel.getDataVector().removeAllElements();

-		for (Map.Entry<String, String> mapping : this.xpathNamespaceMap

-				.entrySet()) {

-			tableModel.addRow(new Object[] { mapping.getKey(),

-					mapping.getValue() });

-		}

-

-		bRemoveMapping.setEnabled(this.xpathNamespaceMap.entrySet().size() > 0);

-

-		repaint();

-	}

-

-	private String getXPathValidationErrorMessage() {

-		try {

-			// try to parse the XPath expression...

-			DocumentHelper.createXPath(tfXPathExpression.getText().trim());

-			// ...success

-			return ("");

-		} catch (InvalidXPathException e) {

-			// ...failed to parse the XPath expression: notify of the error

-			return (e.getMessage());

-		}

-	}

-

-	/**

-	 * Validates the current XPath expression and updates UI accordingly: --

-	 * XPath status icon is updated; -- tooltip for the icon explains the

-	 * status; -- 'Run XPath' button is enabled/disabled depending on validity

-	 * of XPath expression and existence of example data in the XML tree

-	 */

-	protected void validateXPathAndUpdateUI() {

-		String candidatePath = tfXPathExpression.getText();

-		int xpathStatus = XPathActivityConfigurationBean

-				.validateXPath(candidatePath);

-

-		switch (xpathStatus) {

-		case XPathActivityConfigurationBean.XPATH_VALID:

-			// success: expression is correct

-			jlXPathExpressionStatus.setIcon(XPathActivityIcon

-					.getIconById(XPathActivityIcon.XPATH_STATUS_OK_ICON));

-			jlXPathExpressionStatus

-					.setToolTipText("Current XPath expression is well-formed and valid");

-

-			// could allow to execute against example XML, with only condition:

-			// XML tree must be populated

-			// (that is, there should be something to run the expression

-			// against)

-			if (xmlTree != null) {

-				this.bRunXPath.setEnabled(true);

-				this.bRunXPath

-						.setToolTipText("<html>Evaluate current XPath expression against the XML document<br>"

-								+ "whose structure is shown in the tree view above.</html>");

-			} else {

-				this.bRunXPath.setEnabled(false);

-				this.bRunXPath

-						.setToolTipText("<html>No XML document to evaluate the current XPath expression against.<br><br>"

-								+ "Paste some example XML into the area in the top-left section of the<br>"

-								+ "window, then parse it by clicking on the button with the green arrow<br>"

-								+ "in order to test your XPath expression.</html>");

-			}

-			break;

-

-		case XPathActivityConfigurationBean.XPATH_EMPTY:

-			// no XPath expression - can't tell if it is correct + nothing to

-			// execute

-			jlXPathExpressionStatus.setIcon(XPathActivityIcon

-					.getIconById(XPathActivityIcon.XPATH_STATUS_UNKNOWN_ICON));

-			jlXPathExpressionStatus

-					.setToolTipText("<html>There is no XPath expression to validate.<br><br>"

-							+ "<b>Hint:</b> select something in the tree view showing the structure<br>"

-							+ "of the XML document that you have pasted (or type the XPath<br>"

-							+ "expression manually).</html>");

-			this.bRunXPath.setEnabled(false);

-			this.bRunXPath.setToolTipText("No XPath expression to execute");

-			break;

-

-		case XPathActivityConfigurationBean.XPATH_INVALID:

-			// failed to parse the XPath expression: notify of the error

-			jlXPathExpressionStatus.setIcon(XPathActivityIcon

-					.getIconById(XPathActivityIcon.XPATH_STATUS_ERROR_ICON));

-			jlXPathExpressionStatus

-					.setToolTipText(getXPathValidationErrorMessage());

-

-			this.bRunXPath.setEnabled(false);

-			this.bRunXPath

-					.setToolTipText("Cannot execute invalid XPath expression");

-			break;

-		}

-

-	}

-

-	/**

-	 * Executes the current XPath expression against the current XML tree.

-	 * 

-	 * @param displayResults

-	 *            <code>true</code> to execute and display results in the XPath

-	 *            activity configuration panel (this happens when the 'Run

-	 *            XPath' button is clicked);<br/>

-	 *            <false> to run the expression quietly and simply return the

-	 *            number of matching nodes.

-	 * @return Number of nodes in the XML tree that match the current XPath

-	 *         expression. (Or <code>-1</code> if an error has occurred during

-	 *         the execution -- error messages will only be shown if

-	 *         <code>displayResults == true</code>).

-	 */

-	public int runXPath(boolean displayResults) {

-		// ----- RUNNING THE XPath EXPRESSION -----

-		XPath expr = null;

-		try {

-			expr = DocumentHelper.createXPath(this.tfXPathExpression.getText());

-			expr.setNamespaceURIs(this.xpathNamespaceMap);

-		} catch (InvalidXPathException e) {

-			if (displayResults) {

-				JOptionPane

-						.showMessageDialog(

-								thisPanel,

-								"Incorrect XPath Expression\n\n"

-										+ "Please check the expression if you have manually modified it;\n"

-										+ "Alternatively, try to select another node from the XML tree.\n\n"

-										+ "------------------------------------------------------------------------------------\n\n"

-										+ "XPath processing library reported the following error:\n"

-										+ e.getMessage(), "XPath Activity",

-								JOptionPane.ERROR_MESSAGE);

-			}

-			return (-1);

-		}

-

-		Document doc = xmlTree.getDocumentUsedToPopulateTree();

-		List<Node> matchingNodes = null;

-		int matchingNodeCount = -1;

-		try {

-			matchingNodes = expr.selectNodes(doc);

-			matchingNodeCount = matchingNodes.size();

-		} catch (XPathException e) {

-			if (displayResults) {

-				JOptionPane

-						.showMessageDialog(

-								thisPanel,

-								"Unexpected error has occurred while executing the XPath expression.\n\n"

-										+ "If you have manually modified the XPath expression and/or namespace mappings,\n"

-										+ "please check you changes. Alternatively, make your selection in the XML tree and\n"

-										+ "a correct XPath expression with corresponding namespace mapping will be generated.\n\n"

-										+ "-------------------------------------------------------------------------------------------------------------\n\n"

-										+ "XPath processing library reported the following error:\n"

-										+ e.getMessage(), "XPath Activity",

-								JOptionPane.ERROR_MESSAGE);

-			}

-			return (-1);

-		}

-

-		// ----- DISPLAYING THE RESULTS -----

-		if (displayResults) {

-			tfExecutedXPathExpression.setText(expr.getText());

-			tfMatchingElementCount.setText("" + matchingNodeCount);

-

-			StringBuffer outNodesText = new StringBuffer();

-			StringBuffer outNodesXML = new StringBuffer();

-			for (Node n : matchingNodes) {

-				if (n.getStringValue() != null

-						&& n.getStringValue().length() > 0) {

-					outNodesText.append(n.getStringValue() + "\n");

-				}

-				outNodesXML.append(n.asXML() + "\n");

-			}

-

-			// tpExecutedXPathExpressionResults.setSelectedIndex(0); // open the

-			// first tab (should be the one with textual results) // TODO -

-			// enable if needed

-

-			taExecutedXPathExpressionResultsAsText.setText(outNodesText

-					.toString());

-			taExecutedXPathExpressionResultsAsText.setBackground(Color.WHITE);

-			taExecutedXPathExpressionResultsAsText.setCaretPosition(0);

-			spExecutedXPathExpressionResultsAsText.setBorder(BorderFactory

-					.createLineBorder(Color.WHITE, 3));

-

-			taExecutedXPathExpressionResultsAsXML.setText(outNodesXML

-					.toString());

-			taExecutedXPathExpressionResultsAsXML.setBackground(Color.WHITE);

-			taExecutedXPathExpressionResultsAsXML.setCaretPosition(0);

-			spExecutedXPathExpressionResultsAsXML.setBorder(BorderFactory

-					.createLineBorder(Color.WHITE, 3));

-		}

-

-		return (matchingNodeCount);

-	}

-

-	protected void setSourceXML(String xmlData) {

-		this.taSourceXML.setText(xmlData);

-	}

-

-	protected String getCurrentXPathExpression() {

-		return (this.tfXPathExpression.getText().trim());

-	}

-

-	protected void setCurrentXPathExpression(String xpathExpression) {

-		this.tfXPathExpression.setText(xpathExpression);

-	}

-

-	protected Map<String, String> getCurrentXPathNamespaceMap() {

-		return (this.xpathNamespaceMap);

-	}

-

-	/**

-	 * This method doesn't simply set a reference to the passed map, but rather

-	 * performs a shallow copy of values.

-	 * 

-	 * This is because the method is used during configuration panel's

-	 * initialisation from the values that are held in the configuration bean.

-	 * In case of simple reference assignment, any changes made to map in the

-	 * configuration panel are also taking effect on the same map - referenced

-	 * from the configuration bean, which leads to undesired behaviour.

-	 */

-	protected void setCurrentXPathNamespaceMapValues(

-			Map<String, String> xpathNamespaceMap) {

-		this.xpathNamespaceMap.clear();

-		this.xpathNamespaceMap.putAll(xpathNamespaceMap);

-	}

-

-	protected XPathActivityXMLTree getCurrentXMLTree() {

-		return (this.xmlTree);

-	}

-

-	/**

-	 * For testing

-	 */

-	public static void main(String[] args) {

-		JFrame frame = new JFrame();

-		frame.getContentPane().add(new XPathActivityConfigurationPanel());

-		frame.pack();

-		frame.setSize(new Dimension(900, 600));

-		frame.setLocationRelativeTo(null);

-		frame.setVisible(true);

-	}

-

-}

diff --git a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/config/XPathActivityConfigurationPanelProvider.java b/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/config/XPathActivityConfigurationPanelProvider.java
deleted file mode 100644
index 5954986..0000000
--- a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/config/XPathActivityConfigurationPanelProvider.java
+++ /dev/null
@@ -1,158 +0,0 @@
-package net.sf.taverna.t2.activities.xpath.ui.config;

-

-import java.awt.BorderLayout;

-import java.util.ArrayList;

-import java.util.HashMap;

-import java.util.List;

-import java.util.Map;

-import java.util.Map.Entry;

-

-import javax.swing.BorderFactory;

-import javax.swing.JOptionPane;

-

-import net.sf.taverna.t2.activities.xpath.XPathActivityConfigurationBean;

-import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ActivityConfigurationPanel;

-import uk.org.taverna.commons.services.ServiceRegistry;

-import uk.org.taverna.scufl2.api.activity.Activity;

-

-import com.fasterxml.jackson.databind.JsonNode;

-import com.fasterxml.jackson.databind.node.ArrayNode;

-

-/**

- *

- * @author Sergejs Aleksejevs

- * @author David Withers

- */

-@SuppressWarnings("serial")

-public class XPathActivityConfigurationPanelProvider extends ActivityConfigurationPanel {

-

-	private XPathActivityConfigurationPanel configPanel;

-	private final ServiceRegistry serviceRegistry;

-

-	public XPathActivityConfigurationPanelProvider(Activity activity, ServiceRegistry serviceRegistry) {

-		super(activity);

-		this.serviceRegistry = serviceRegistry;

-		initialise();

-	}

-

-	@Override

-	protected void initialise() {

-		super.initialise();

-		removeAll();

-		setLayout(new BorderLayout());

-

-		// create actual contents of the config panel

-		this.configPanel = new XPathActivityConfigurationPanel();

-		add(configPanel, BorderLayout.CENTER);

-

-		// place the whole configuration panel into a raised area, so that

-		// automatically added 'Apply' / 'Close' buttons visually apply to

-		// the whole of the panel, not just part of it

-		this.setBorder(BorderFactory.createCompoundBorder(

-				BorderFactory.createEmptyBorder(12, 12, 2, 12),

-				BorderFactory.createRaisedBevelBorder()));

-

-		// Populate fields from activity configuration bean

-		refreshConfiguration();

-	}

-

-	/**

-	 * Prepare a new configuration bean from the UI, to be returned with

-	 * getConfiguration()

-	 */

-	@Override

-	public void noteConfiguration() {

-		if (configPanel.getCurrentXMLTree() != null) {

-			setProperty("exampleXmlDocument", configPanel.getCurrentXMLTree()

-					.getDocumentUsedToPopulateTree().asXML());

-		}

-		setProperty("xpathExpression", configPanel.getCurrentXPathExpression());

-

-		Map<String, String> xPathNamespaceMap = configPanel.getCurrentXPathNamespaceMap();

-		if (xPathNamespaceMap.isEmpty()) {

-			json.remove("xpathNamespaceMap");

-		} else {

-			ArrayNode namespaceMapNode = json.arrayNode();

-			for (Entry<String, String> namespaceMapping : xPathNamespaceMap.entrySet()) {

-				namespaceMapNode.addObject().put("prefix", namespaceMapping.getKey()).put("uri", namespaceMapping.getValue());

-			}

-			json.set("xpathNamespaceMap", namespaceMapNode);

-		}

-

-		configureInputPorts(serviceRegistry);

-		configureOutputPorts(serviceRegistry);

-}

-

-	/**

-	 * Check that user values in the UI are valid.

-	 */

-	@Override

-	public boolean checkValues() {

-		// the only validity condition is the correctness of the XPath

-		// expression -- so checking that

-		int xpathExpressionStatus = XPathActivityConfigurationBean.validateXPath(this.configPanel

-				.getCurrentXPathExpression());

-

-		// show an explicit warning message to explain the problem

-		if (xpathExpressionStatus == XPathActivityConfigurationBean.XPATH_EMPTY) {

-			JOptionPane.showMessageDialog(this, "XPath expression should not be empty",

-					"XPath Activity", JOptionPane.WARNING_MESSAGE);

-		} else if (xpathExpressionStatus == XPathActivityConfigurationBean.XPATH_INVALID) {

-			JOptionPane.showMessageDialog(this,

-					"<html><center>XPath expression is invalid - hover the mouse over the XPath status<br>"

-							+ "icon to get more information</center></html>", "XPath Activity",

-					JOptionPane.WARNING_MESSAGE);

-		}

-

-		return (xpathExpressionStatus == XPathActivityConfigurationBean.XPATH_VALID);

-	}

-

-	/**

-	 * Update GUI from a changed configuration bean (perhaps by undo / redo).

-	 */

-	@Override

-	public void refreshConfiguration() {

-		if (json.has("exampleXmlDocument")) {

-			configPanel.setSourceXML(getProperty("exampleXmlDocument"));

-			configPanel.parseXML();

-		}

-

-		configPanel.setCurrentXPathExpression(getProperty("xpathExpression"));

-

-		Map<String, String> xpathNamespaceMap = new HashMap<>();

-		if (json.has("xpathNamespaceMap")) {

-			for (JsonNode namespaceMapping : json.get("xpathNamespaceMap")) {

-				xpathNamespaceMap.put(namespaceMapping.get("prefix").asText(), namespaceMapping.get("uri").asText());

-			}

-		}

-		configPanel.setCurrentXPathNamespaceMapValues(xpathNamespaceMap);

-		configPanel.reloadNamespaceMappingTableFromLocalMap();

-

-		// if the XML tree was populated, (re-)run the XPath expression

-		// and restore selection of nodes in the tree, if possible

-		if (configPanel.getCurrentXMLTree() != null) {

-			configPanel.runXPath(true);

-

-			// convert the XPath expression into the required list form;

-			// discard the first 'leg', as it's a side effect of

-			// "String.split()" -

-			// non-existent string to the left of the first "/"

-			String[] xpathLegs = getProperty("xpathExpression").split("/");

-			List<String> xpathLegList = new ArrayList<String>();

-			for (int i = 1; i < xpathLegs.length; i++) {

-				xpathLegList.add("/" + xpathLegs[i]);

-			}

-

-			// if nothing was obtained, we should be looking at the root node -

-			// but add the actual expression as it was, just in case

-			if (xpathLegList.size() == 0) {

-				xpathLegList.add(configPanel.getCurrentXPathExpression());

-			}

-

-			// invoke selection handler of the XML tree to do the job

-			configPanel.getCurrentXMLTree().getXMLTreeSelectionHandler()

-					.selectAllNodesThatMatchTheCurrentXPath(xpathLegList, null);

-		}

-

-	}

-}

diff --git a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/config/XPathActivityConfigureAction.java b/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/config/XPathActivityConfigureAction.java
deleted file mode 100644
index 4e68948..0000000
--- a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/config/XPathActivityConfigureAction.java
+++ /dev/null
@@ -1,52 +0,0 @@
-package net.sf.taverna.t2.activities.xpath.ui.config;

-

-import java.awt.Frame;

-import java.awt.event.ActionEvent;

-

-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;

-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;

-import net.sf.taverna.t2.workbench.edits.EditManager;

-import net.sf.taverna.t2.workbench.file.FileManager;

-import net.sf.taverna.t2.workbench.ui.actions.activity.ActivityConfigurationAction;

-import net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ActivityConfigurationDialog;

-import uk.org.taverna.commons.services.ServiceRegistry;

-import uk.org.taverna.scufl2.api.activity.Activity;

-

-/**

- * @author Sergejs Aleksejevs

- * @author David Withers

- */

-@SuppressWarnings("serial")

-public class XPathActivityConfigureAction extends ActivityConfigurationAction {

-

-	private final EditManager editManager;

-	private final FileManager fileManager;

-	private final ServiceRegistry serviceRegistry;

-

-	public XPathActivityConfigureAction(Activity activity, Frame owner,

-			EditManager editManager, FileManager fileManager,

-			ActivityIconManager activityIconManager,

-			ServiceDescriptionRegistry serviceDescriptionRegistry, ServiceRegistry serviceRegistry) {

-		super(activity, activityIconManager, serviceDescriptionRegistry);

-		this.editManager = editManager;

-		this.fileManager = fileManager;

-		this.serviceRegistry = serviceRegistry;

-	}

-

-	public void actionPerformed(ActionEvent e) {

-		ActivityConfigurationDialog currentDialog = ActivityConfigurationAction.getDialog(getActivity());

-

-		if (currentDialog != null) {

-			currentDialog.toFront();

-			return;

-		}

-

-		XPathActivityConfigurationPanelProvider panel = new XPathActivityConfigurationPanelProvider(

-				getActivity(), serviceRegistry);

-		ActivityConfigurationDialog dialog = new ActivityConfigurationDialog(

-				getActivity(), panel, editManager);

-

-		ActivityConfigurationAction.setDialog(getActivity(), dialog, fileManager);

-	}

-

-}

diff --git a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/config/xmltree/TableCellListener.java b/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/config/xmltree/TableCellListener.java
deleted file mode 100644
index 872fd70..0000000
--- a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/config/xmltree/TableCellListener.java
+++ /dev/null
@@ -1,186 +0,0 @@
-package net.sf.taverna.t2.activities.xpath.ui.config.xmltree;

-

-import java.awt.event.*;

-import javax.swing.*;

-import java.beans.*;

-

-/**

- *  This class listens for changes made to the data in the table via the

- *  TableCellEditor. When editing is started, the value of the cell is saved

- *  When editing is stopped the new value is saved. When the oold and new

- *  values are different, then the provided Action is invoked.

- *

- *  The source of the Action is a TableCellListener instance.

- *  

- *  TODO: update to work with Java 1.6, when Taverna is migrated to that version

- *        (see the next TODO tag - this is where the change needs to be made) 

- *  

- *  @author Robert Camick

- *  

- *  @see <a href="http://tips4java.wordpress.com/2009/06/07/table-cell-listener/">http://tips4java.wordpress.com/2009/06/07/table-cell-listener/</a>

- *  @see <a href="http://www.camick.com/java/source/TableCellListener.java">http://www.camick.com/java/source/TableCellListener.java</a>

- */

-public class TableCellListener implements PropertyChangeListener, Runnable

-{

-  private JTable table;

-  private Action action;

-

-  private int row;

-  private int column;

-  private Object oldValue;

-  private Object newValue;

-

-  /**

-   *  Create a TableCellListener.

-   *

-   *  @param table   the table to be monitored for data changes

-   *  @param action  the Action to invoke when cell data is changed

-   */

-  public TableCellListener(JTable table, Action action)

-  {

-    this.table = table;

-    this.action = action;

-    this.table.addPropertyChangeListener( this );

-  }

-

-  /**

-   *  Create a TableCellListener with a copy of all the data relevant to

-   *  the change of data for a given cell.

-   *

-   *  @param row  the row of the changed cell

-   *  @param column  the column of the changed cell

-   *  @param oldValue  the old data of the changed cell

-   *  @param newValue  the new data of the changed cell

-   */

-  private TableCellListener(JTable table, int row, int column, Object oldValue, Object newValue)

-  {

-    this.table = table;

-    this.row = row;

-    this.column = column;

-    this.oldValue = oldValue;

-    this.newValue = newValue;

-  }

-

-  /**

-   *  Get the column that was last edited - value as in table model, not in the UI

-   *

-   *  @return the column that was edited

-   */

-  public int getColumn()

-  {

-    return column;

-  }

-

-  /**

-   *  Get the new value in the cell

-   *

-   *  @return the new value in the cell

-   */

-  public Object getNewValue()

-  {

-    return newValue;

-  }

-

-  /**

-   *  Get the old value of the cell

-   *

-   *  @return the old value of the cell

-   */

-  public Object getOldValue()

-  {

-    return oldValue;

-  }

-

-  /**

-   *  Get the row that was last edited - value as in table model, not in the UI

-   *

-   *  @return the row that was edited

-   */

-  public int getRow()

-  {

-    return row;

-  }

-

-  /**

-   *  Get the table of the cell that was changed

-   *

-   *  @return the table of the cell that was changed

-   */

-  public JTable getTable()

-  {

-    return table;

-  }

-  

-  //

-  //  Implement the PropertyChangeListener interface

-  //

-  public void propertyChange(PropertyChangeEvent e)

-  {

-    //  A cell has started/stopped editing

-

-    if ("tableCellEditor".equals(e.getPropertyName()))

-    {

-      if (table.isEditing())

-        processEditingStarted();

-      else

-        processEditingStopped();

-    }

-  }

-

-  /*

-   *  Save information of the cell about to be edited

-   */

-  private void processEditingStarted()

-  {

-    //  The invokeLater is necessary because the editing row and editing

-    //  column of the table have not been set when the "tableCellEditor"

-    //  PropertyChangeEvent is fired.

-    //  This results in the "run" method being invoked

-

-    SwingUtilities.invokeLater( this );

-  }

-  

-  /*

-   *  See above.

-   */

-  public void run()

-  {

-//    TODO - the next line is a correct implementation for Java 1.6    

-//    row = table.convertRowIndexToModel( table.getEditingRow() );

-    

-//    in Java 1.5 which is currently used, tables are not easily sortable

-//    (and that is the case for the XPath Activity, where this class is used) --

-//    hence, row numbers in the view and in the model will always be identical

-//    --> HACK: just use the row number from the view...

-    row = table.getEditingRow();

-    

-    column = table.convertColumnIndexToModel( table.getEditingColumn() );

-    oldValue = table.getModel().getValueAt(row, column);

-    newValue = null;

-  }

-

-  /*

-   *  Update the Cell history when necessary

-   */

-  private void processEditingStopped()

-  {

-    newValue = table.getModel().getValueAt(row, column);

-

-    //  The data has changed, invoke the supplied Action

-

-    if (! newValue.equals(oldValue))

-    {

-      //  Make a copy of the data in case another cell starts editing

-      //  while processing this change

-

-      TableCellListener tcl = new TableCellListener(

-        getTable(), getRow(), getColumn(), getOldValue(), getNewValue());

-

-      ActionEvent event = new ActionEvent(

-        tcl,

-        ActionEvent.ACTION_PERFORMED,

-        "");

-      action.actionPerformed(event);

-    }

-  }

-}

diff --git a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/config/xmltree/XPathActivityXMLTree.java b/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/config/xmltree/XPathActivityXMLTree.java
deleted file mode 100644
index 4f98851..0000000
--- a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/config/xmltree/XPathActivityXMLTree.java
+++ /dev/null
@@ -1,572 +0,0 @@
-package net.sf.taverna.t2.activities.xpath.ui.config.xmltree;

-

-import java.awt.Component;

-import java.awt.event.ActionEvent;

-import java.awt.event.ActionListener;

-import java.awt.event.MouseAdapter;

-import java.awt.event.MouseEvent;

-import java.util.ArrayList;

-import java.util.HashMap;

-import java.util.Iterator;

-import java.util.LinkedList;

-import java.util.List;

-import java.util.Map;

-

-import javax.swing.JLabel;

-import javax.swing.JMenuItem;

-import javax.swing.JPopupMenu;

-import javax.swing.JTree;

-import javax.swing.event.TreeSelectionListener;

-import javax.swing.text.Position;

-import javax.swing.tree.DefaultMutableTreeNode;

-import javax.swing.tree.DefaultTreeCellRenderer;

-import javax.swing.tree.DefaultTreeModel;

-import javax.swing.tree.TreePath;

-

-import net.sf.taverna.t2.activities.xpath.ui.config.XPathActivityConfigurationPanel;

-import net.sf.taverna.t2.activities.xpath.ui.servicedescription.XPathActivityIcon;

-

-import org.dom4j.Attribute;

-import org.dom4j.Document;

-import org.dom4j.DocumentException;

-import org.dom4j.DocumentHelper;

-import org.dom4j.Element;

-import org.dom4j.Namespace;

-import org.dom4j.QName;

-import org.dom4j.XPath;

-

-

-/**

- * 

- * @author Sergejs Aleksejevs

- */

-public class XPathActivityXMLTree extends JTree

-{

-  private XPathActivityXMLTree instanceOfSelf;

-  private XPathActivityXMLTreeRenderer treeRenderer;

-  

-  private JPopupMenu contextualMenu;

-  

-  private TreeSelectionListener[] allSelectionListeners;

-  private XPathActivityXMLTreeSelectionHandler xmlTreeSelectionHandler;

-  

-  /**

-   * 

-   */

-  private XPathActivityConfigurationPanel parentConfigPanel;

-

-  private Document documentUsedToPopulateTree;

-  

-  /**

-   *  holds value of the current XPath expression obtained from 

-   *  the combination of nodes selected in the XML tree 

-   */

-  private XPath currentXPathExpression;

-  

-  private Map<String,String> currentXPathNamespaces;

-  

-  

-  

-  private XPathActivityXMLTree(XPathActivityXMLTreeNode root, Document documentUsedToPopulateTree, 

-      boolean bIncludeElementValues, boolean bIncludeElementNamespaces, XPathActivityConfigurationPanel parentConfigPanel)

-  {

-    super(root);

-    

-    this.instanceOfSelf = this;

-    this.allSelectionListeners = new TreeSelectionListener[0];

-    

-    this.parentConfigPanel = parentConfigPanel;

-    

-    this.documentUsedToPopulateTree = documentUsedToPopulateTree;

-    this.currentXPathExpression = null;

-    this.currentXPathNamespaces = new HashMap<String,String>();

-    this.prepopulateNamespaceMap();

-    

-    

-    // custom renderer of the nodes in the XML tree

-    this.treeRenderer = new XPathActivityXMLTreeRenderer(bIncludeElementValues, bIncludeElementNamespaces);

-    this.setCellRenderer(treeRenderer);

-    

-    

-    // add listener to handle various selections of nodes in the tree 

-    this.xmlTreeSelectionHandler = new XPathActivityXMLTreeSelectionHandler(parentConfigPanel, this);

-    this.addTreeSelectionListener(xmlTreeSelectionHandler);

-    

-    

-    // --- CONTEXTUAL MENU FOR EXPANDING / COLLAPSING THE TREE ---

-    

-    // create popup menu for expanding / collapsing all nodes in the tree

-    JMenuItem miExpandAll = new JMenuItem("Expand all", XPathActivityIcon.getIconById(XPathActivityIcon.XML_TREE_EXPAND_ALL_ICON));

-    miExpandAll.setToolTipText("Expand all nodes in the filtering tree");

-    miExpandAll.addActionListener(new ActionListener() {

-      public void actionPerformed(ActionEvent e) {

-        for (int i = 0; i < getRowCount(); i++) {

-          instanceOfSelf.expandRow(i);

-        }

-      }

-    });

-    JMenuItem miCollapseAll = new JMenuItem("Collapse all", XPathActivityIcon.getIconById(XPathActivityIcon.XML_TREE_COLLAPSE_ALL_ICON));

-    miCollapseAll.setToolTipText("Collapse all expanded nodes in the filtering tree");

-    miCollapseAll.addActionListener(new ActionListener() {

-      public void actionPerformed(ActionEvent e) {

-        for (int i = getRowCount() - 1; i >= 0; i--) {

-          instanceOfSelf.collapseRow(i);

-        }

-      }

-    });

-    

-    // populate the popup menu with created menu items

-    contextualMenu = new JPopupMenu();

-    contextualMenu.add(miExpandAll);

-    contextualMenu.add(miCollapseAll);

-    

-    // mouse events may cause the contextual menu to be shown - adding a listener

-    this.addMouseListener(new MouseAdapter()

-    {

-      public void mousePressed(MouseEvent e) {

-        if (e.isPopupTrigger()) {

-          contextualMenu.show(instanceOfSelf, e.getX(), e.getY());

-        }

-      }

-      public void mouseReleased(MouseEvent e) {

-        if (e.isPopupTrigger()) {

-          // another way a popup menu may be called on different systems

-          contextualMenu.show(instanceOfSelf, e.getX(), e.getY());

-        }

-      }

-    });

-    

-  }

-  

-  

-  /**

-   * Pre-populates namespace map with the namespaced declared in the root

-   * node of the XML document, which was used to populate the tree.

-   */

-  private void prepopulateNamespaceMap()

-  {

-    Document doc = this.getDocumentUsedToPopulateTree();

-    Element root = doc.getRootElement();

-    

-    // get opening tag of the root node

-    String rootAsXML = root.asXML().substring(0, root.asXML().indexOf(">"));

-    

-    // split the opening tag into tokens (all attributes are separated by a space)

-    String[] rootTokens = rootAsXML.split(" ");

-    

-    // for each attribute check if that's a namespace declaration

-    for (String token : rootTokens) {

-      if (token.startsWith("xmlns"))

-      {

-        String[] namespacePrefixAndURI = token.split("=");

-        

-        // a prefix is either given explicitly, or an empty one will be used

-        String prefix = namespacePrefixAndURI[0].indexOf(":") == -1 ?

-                        "" :

-                        namespacePrefixAndURI[0].split(":")[1];

-        

-        // URI is the value of the XML attribute, so need to strip out surrounding quotes

-        String URI = namespacePrefixAndURI[1].replaceAll("\"", "");

-        

-        // now add the details of the current namespace to the map

-        this.addNamespaceToXPathMap(new Namespace(prefix, URI));

-      }

-    }

-  }

-

-

-  protected XPathActivityConfigurationPanel getParentConfigPanel() {

-    return parentConfigPanel;

-  }

-  

-  public XPathActivityXMLTreeSelectionHandler getXMLTreeSelectionHandler() {

-    return xmlTreeSelectionHandler;

-  }

-  

-  public Document getDocumentUsedToPopulateTree() {

-    return documentUsedToPopulateTree;

-  }

-  

-  public XPath getCurrentXPathExpression() {

-    return currentXPathExpression;

-  }

-  protected void setCurrentXPathExpression(XPath xpathExpression) {

-    this.currentXPathExpression = xpathExpression;

-  }

-  

-  

-  public Map<String,String> getCurrentXPathNamespaces() {

-    return currentXPathNamespaces;

-  }

-  

-  

-  

-  protected void removeAllSelectionListeners()

-  {

-    this.allSelectionListeners = this.getTreeSelectionListeners();

-    for (TreeSelectionListener listener : this.allSelectionListeners) {

-      this.removeTreeSelectionListener(listener);

-    }

-  }

-  

-  protected void restoreAllSelectionListeners()

-  {

-    for (TreeSelectionListener listener : this.allSelectionListeners) {

-      this.addTreeSelectionListener(listener);

-    }

-  }

-  

-  

-  

-  /**

-   * Creates an instance of the XML tree from provided XML data.

-   * 

-   * @param xmlData XML document in the form of a <code>String</code> to

-   *        derive the tree from.

-   * @param bIncludeAttributesIntoTree

-   * @param bIncludeValuesIntoTree

-   * @param bIncludeElementNamespacesIntoTree

-   * @param parentConfigPanel

-   * @return

-   * @throws DocumentException if <code>xmlData</code> does not

-   *                           contain a valid XML document. 

-   * 

-   */

-  public static XPathActivityXMLTree createFromXMLData(String xmlData, boolean bIncludeAttributesIntoTree,

-                   boolean bIncludeValuesIntoTree, boolean bIncludeElementNamespacesIntoTree,

-                   XPathActivityConfigurationPanel parentConfigPanel) throws DocumentException

-  {

-    // ----- XML DOCUMENT PARSING -----

-    // try to parse the XML document - the next line will throw an exception if

-    // the document is not well-formed; proceed otherwise

-    Document doc = DocumentHelper.parseText(xmlData);

-    Element rootElement = doc.getRootElement();

-    

-    

-    // ----- POPULATE XML TREE -----

-    XPathActivityXMLTreeElementNode rootNode = new XPathActivityXMLTreeElementNode(rootElement);

-    populate(rootNode, rootElement, bIncludeAttributesIntoTree);

-    

-    return (new XPathActivityXMLTree(rootNode, doc, bIncludeValuesIntoTree, bIncludeElementNamespacesIntoTree, parentConfigPanel));

-  }

-  

-  

-  /**

-   * Worker method for populating the tree recursively from a list of Elements.

-   * 

-   * @param node

-   * @param element

-   */

-  private static void populate(DefaultMutableTreeNode node, Element element,

-                               boolean bIncludeAttributesIntoTree)

-  {

-    Iterator<Element> elementIterator = element.elements().iterator();

-    while (elementIterator.hasNext()) {

-      Element childElement = elementIterator.next();

-      XPathActivityXMLTreeElementNode childNode = new XPathActivityXMLTreeElementNode(childElement);

-      node.add(childNode);

-      

-      // recursively repeat for all children of the current child element

-      populate(childNode, childElement, bIncludeAttributesIntoTree);

-    }

-    

-    

-    // add attributes of the element as its children, if necessary

-    if (bIncludeAttributesIntoTree) {

-      List<Attribute> attributes = element.attributes();

-      for (Attribute attribute : attributes) {

-        node.add(new XPathActivityXMLTreeAttributeNode(attribute));

-      }

-    }

-  }

-  

-  

-  // ---------------- RESPONDING TO REQUESTS TO CHANGE APPEARANCE OF EXISTING TREE -----------------

-  

-  /**

-   * NB! May be inefficient, as this solution re-generates the whole tree from

-   *     stored XML document and replaces the root node of itself with a newly

-   *     generated root node (that will be populated with updated children,

-   *     according to the new values of options).

-   *  

-   *     However, this is a simple solution that will work for now.

-   * 

-   * @param bIncludeAttributes

-   * @param bIncludeValues

-   * @param bIncludeNamespaces

-   */

-  public void refreshFromExistingDocument(boolean bIncludeAttributes, boolean bIncludeValues, boolean bIncludeNamespaces)

-  {

-    this.setEnabled(false);

-    removeAllSelectionListeners();

-    

-    // store expansion and selection state of the XML tree

-    // see documentation for restoreExpandedPaths() for more details

-    //

-    // stored paths to expanded nodes are quite reliable, as paths are recorded;

-    // stored selected rows are less reliable, as only indices are kept -- however,

-    // the tree is re-created from the same document, so ordering/number of nodes

-    // cannot change (apart from attributes that may be added / removed - the attributes

-    // appear after other child nodes of some node in the tree, therefore only their

-    // selection could be affected)

-    HashMap<String,ArrayList<String>> toExpand = new HashMap<String,ArrayList<String>>();

-    ArrayList<Integer> toSelect = new ArrayList<Integer>();

-    for( int i = 1; i < this.getRowCount(); i++) {

-      if( this.isExpanded(i) ) {

-        TreePath path = this.getPathForRow(i);

-        String parentPath = path.getParentPath().toString();

-        ArrayList<String> values = toExpand.get(parentPath);

-        if(values == null) {

-          values = new ArrayList<String>();

-        }

-        values.add(path.getLastPathComponent().toString());

-        toExpand.put(parentPath, values);

-      }

-      if (this.isRowSelected(i)) {

-        toSelect.add(i);

-      }

-    }

-    

-    

-    // update presentation options

-    this.treeRenderer.setIncludeElementValues(bIncludeValues);

-    this.treeRenderer.setIncludeElementNamespaces(bIncludeNamespaces);

-    

-    // re-create the root node of the tree and replace the old one with it

-    Element rootElement = this.documentUsedToPopulateTree.getRootElement();

-    XPathActivityXMLTreeNode newRootNode = new XPathActivityXMLTreeElementNode(rootElement);

-    populate(newRootNode, rootElement, bIncludeAttributes);

-    ((DefaultTreeModel)this.getModel()).setRoot(newRootNode);

-    

-    

-    // restore previous state of the tree from saved values

-    restoreExpandedPaths(toExpand, this.getPathForRow(0));

-    restoreSelectedPaths(toSelect);

-    

-    this.restoreAllSelectionListeners();

-    this.setEnabled(true);

-  }

-  

-  

-  /**

-   * This method can only reliably work when the tree is re-generated from the same

-   * XML document, so that number / order of nodes would not change.

-   * 

-   * @param toSelect List of indices of rows to re-select after tree was re-generated.

-   */

-  private void restoreSelectedPaths(ArrayList<Integer> toSelect)

-  {

-    if (toSelect == null || toSelect.isEmpty()) return;

-    

-    // something definitely needs to be selected, so include root element into selection

-    this.addSelectionRow(0);

-    

-    // select all stored rows

-    for (Integer value : toSelect) {

-      this.addSelectionRow(value);

-    }

-  }

-

-

-

-  /**

-   * Taken from: <a href="http://java.itags.org/java-core-gui-apis/58504/">http://java.itags.org/java-core-gui-apis/58504/</a>

-   * 

-   * This method recursively expands all previously stored paths.

-   * Works under assumption that the name of the root node did not change.

-   * Otherwise, it can handle changed structure of the tree.

-   * 

-   * To achieve its goal, it cannot simply use stored TreePath from your the original tree,

-   * since the paths are invalid after the tree is refreshed. Instead, a HashMap which links

-   * a String representation of the parent tree path to all expanded child node names is used.

-   * 

-   * @param toExpand Map which links a String representation of the parent tree path to all

-   *                 expanded child node names is used.

-   * @param rootPath Path to root node.

-   */

-  void restoreExpandedPaths(HashMap<String,ArrayList<String>> toExpand, TreePath rootPath)

-  {

-    ArrayList<String> values = toExpand.remove(rootPath.toString());

-    if (values == null) return;

-    

-    int row = this.getRowForPath(rootPath);

-    for (String value : values)

-    {

-      TreePath nextMatch = this.getNextMatch(value, row, Position.Bias.Forward);

-      this.expandPath(nextMatch);

-      if (toExpand.containsKey(nextMatch.toString())) {

-        restoreExpandedPaths(toExpand, nextMatch);

-      }

-    }

-  }

-  

-  

-  

-  // ---------------- TREE SELECTION MODEL + XPath GENERATION -----------------

-  

-  

-  protected String generateXPathFromTreePath(TreePath path)

-  {

-    StringBuilder xpath = new StringBuilder();

-    

-    for (String leg : generateXPathFromTreePathAsLegList(path)) {

-      xpath.append(leg);

-    }

-    

-    return (xpath.toString());

-  }

-  

-  

-  protected List<String> generateXPathFromTreePathAsLegList(TreePath path)

-  {

-    List<String> pathLegs = new LinkedList<String>();

-    

-    TreePath parentPath = path;

-    for (int i = 0; i < path.getPathCount(); i++)

-    {

-      XPathActivityXMLTreeNode lastXMLTreeNodeInThisPath = (XPathActivityXMLTreeNode)parentPath.getLastPathComponent();

-      pathLegs.add(0, this.getXMLTreeNodeEffectiveQualifiedNameAsXPathLeg(lastXMLTreeNodeInThisPath));

-      

-      parentPath = parentPath.getParentPath();

-    }

-    

-    return (pathLegs);

-  }

-  

-  

-  protected String getXMLTreeNodeEffectiveQualifiedNameAsXPathLeg(XPathActivityXMLTreeNode node)

-  {

-    QName qname = node.getNodeQName();

-    String effectiveNamespacePrefix = addNamespaceToXPathMap(qname.getNamespace());

-    

-    return("/" +

-           (node.isAttribute() ? "@" : "") +

-           (effectiveNamespacePrefix.length() > 0 ? (effectiveNamespacePrefix + ":") : "") +

-           qname.getName());

-  }

-  

-  

-  

-  private String addNamespaceToXPathMap(Namespace namespace) 

-  {

-    // EMTPY PREFIX

-    if (namespace.getPrefix().length() == 0) {

-      if (namespace.getURI().length() == 0) {

-        // DEFAULT NAMESPACE with no URI - nothing to worry about

-        return "";

-      }

-      else {

-        // DEFAULT NAMESPACE WITH NO PREFIX, BUT URI IS KNOWN

-        return (addNamespaceToXPathMap(new Namespace("default", namespace.getURI())));

-      }

-    }

-    

-    // NEW NON-EMPTY PREFIX

-    if (!this.currentXPathNamespaces.containsKey(namespace.getPrefix())) {

-      this.currentXPathNamespaces.put(namespace.getPrefix(), namespace.getURI());

-      return (namespace.getPrefix());

-    }

-    

-    // EXISTING NON-EMPTY PREFIX AND THE SAME URI - NO NEED TO ADD AGAIN

-    else if (this.currentXPathNamespaces.get(namespace.getPrefix()).equals(namespace.getURI())) {

-      return (namespace.getPrefix());

-    }

-    

-    // EXISTING NON-EMPTY PREFIX, BUT DIFFERENT URI

-    else {

-      String repeatedPrefix = namespace.getPrefix();

-      

-      int i = 0;

-      while (this.currentXPathNamespaces.containsKey(repeatedPrefix + i)) {

-        // check if current alternative prefix wasn't yet applied to current URI

-        if (this.currentXPathNamespaces.get(repeatedPrefix + i).equals(namespace.getURI())) {

-          return (repeatedPrefix + i);

-        }

-        else {

-          // still another URI for the same prefix, keep trying to increase the ID in the prefix

-          i++;

-        }

-      }

-      

-      String modifiedPrefix = repeatedPrefix + i;

-      this.currentXPathNamespaces.put(modifiedPrefix, namespace.getURI());

-      return (modifiedPrefix);

-    }

-  }

-  

-  

-  // ----------------------- Tree Cell Renderer --------------------------

-  

-  /**

-   * 

-   * @author Sergejs Aleksejevs

-   */

-  private class XPathActivityXMLTreeRenderer extends DefaultTreeCellRenderer

-  {

-    private boolean bIncludeElementValues;

-    private boolean bIncludeElementNamespaces;

-    

-    public XPathActivityXMLTreeRenderer(boolean bIncludeElementValues, boolean bIncludeElementNamespaces) {

-      super();

-      this.bIncludeElementValues = bIncludeElementValues;

-      this.bIncludeElementNamespaces = bIncludeElementNamespaces;

-    }

-    

-    

-    public boolean getIncludeElementValues() {

-      return bIncludeElementValues;

-    }

-    public void setIncludeElementValues(boolean bIncludeElementValues) {

-      this.bIncludeElementValues = bIncludeElementValues;

-    }

-    

-    public boolean getIncludeElementNamespaces() {

-      return bIncludeElementNamespaces;

-    }

-    public void setIncludeElementNamespaces(boolean bIncludeElementNamespaces) {

-      this.bIncludeElementNamespaces = bIncludeElementNamespaces;

-    }

-    

-    

-    public Component getTreeCellRendererComponent(JTree tree, Object value,

-        boolean selected, boolean expanded, boolean leaf, int row,

-        boolean hasFocus)

-    {

-      // obtain the default rendering, we'll then customize it

-      Component defaultRendering = super.getTreeCellRendererComponent(tree, value, selected, expanded, leaf, row, hasFocus);

-      

-      // it is most likely that the default rendering will be a JLabel, check just to be safe

-      if (defaultRendering instanceof JLabel)

-      {

-        JLabel defaultRenderedLabel = ((JLabel)defaultRendering);

-        

-        // ---------- CHOOSE APPROPRIATE ICON FOR THE NODE ------------

-        if (row == 0) {

-          // set the icon for the XML tree root node

-          defaultRenderedLabel.setIcon(XPathActivityIcon.getIconById(XPathActivityIcon.XML_TREE_ROOT_ICON));

-        }

-        else {

-          // set the icon for the XML tree node

-          if (value instanceof XPathActivityXMLTreeNode && 

-              ((XPathActivityXMLTreeNode)value).isAttribute())

-          {

-            defaultRenderedLabel.setIcon(XPathActivityIcon.getIconById(XPathActivityIcon.XML_TREE_ATTRIBUTE_ICON));

-          }

-          else {

-            defaultRenderedLabel.setIcon(XPathActivityIcon.getIconById(XPathActivityIcon.XML_TREE_NODE_ICON));

-          }

-        }

-        

-        

-        // ----------- CHOOSE THE DISPLAY TITLE FOR THE NODE ------------

-        if (value instanceof XPathActivityXMLTreeNode) {

-          defaultRenderedLabel.setText(((XPathActivityXMLTreeNode)value).getTreeNodeDisplayLabel(

-              this.bIncludeElementValues, this.bIncludeElementNamespaces, true));

-        }

-      }

-      

-      return (defaultRendering);

-    }

-    

-  }

-}

diff --git a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/config/xmltree/XPathActivityXMLTreeAttributeNode.java b/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/config/xmltree/XPathActivityXMLTreeAttributeNode.java
deleted file mode 100644
index d22623f..0000000
--- a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/config/xmltree/XPathActivityXMLTreeAttributeNode.java
+++ /dev/null
@@ -1,50 +0,0 @@
-package net.sf.taverna.t2.activities.xpath.ui.config.xmltree;

-

-import org.dom4j.Attribute;

-

-/**

- * 

- * @author Sergejs Aleksejevs

- */

-public class XPathActivityXMLTreeAttributeNode extends XPathActivityXMLTreeNode

-{

-  private Attribute associatedAttribute;

-  

-  public XPathActivityXMLTreeAttributeNode(Attribute associatedAttribute) {

-    super(associatedAttribute, true);

-    this.associatedAttribute = associatedAttribute;

-  }

-  

-  public Attribute getAssociatedAttribute() {

-    return associatedAttribute;

-  }

-  

-  public String getTreeNodeDisplayLabel(boolean bIncludeValue, boolean bUseStyling)

-  {

-    StringBuilder label = new StringBuilder();

-    

-    // add qualified attribute name (possibly) with styling

-    label.append((bUseStyling ? "<font color=\"purple\">" : "") +

-                 this.associatedAttribute.getQualifiedName() +

-                 (bUseStyling ? "</font>" : ""));

-    

-    // add attribute value

-    if (bIncludeValue)

-    {

-      String attributeTextValue = this.associatedAttribute.getText();

-      

-      if (attributeTextValue != null && attributeTextValue.length() > 0) {

-        label.append((bUseStyling ? "<font color=\"gray\"> - </font><font color=\"green\">" : "") +

-                     truncateElementTextValue(stripAllHTML(attributeTextValue)) +

-                     (bUseStyling ? "</font>" : ""));

-      }

-    }

-    

-    if (bUseStyling) {

-      label.insert(0, "<html>");

-      label.append("</html>");

-    }

-    

-    return (label.toString());

-  }

-}
\ No newline at end of file
diff --git a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/config/xmltree/XPathActivityXMLTreeElementNode.java b/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/config/xmltree/XPathActivityXMLTreeElementNode.java
deleted file mode 100644
index a151753..0000000
--- a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/config/xmltree/XPathActivityXMLTreeElementNode.java
+++ /dev/null
@@ -1,62 +0,0 @@
-package net.sf.taverna.t2.activities.xpath.ui.config.xmltree;

-

-import org.dom4j.Element;

-import org.dom4j.Namespace;

-

-

-/**

- * 

- * @author Sergejs Aleksejevs

- */

-public class XPathActivityXMLTreeElementNode extends XPathActivityXMLTreeNode

-{

-  private Element associatedElement;

-  

-  public XPathActivityXMLTreeElementNode(Element associatedElement) {

-    super(associatedElement, false);

-    this.associatedElement = associatedElement;

-  }

-  

-  public Element getAssociatedElement() {

-    return associatedElement;

-  }

-  

-  public String getTreeNodeDisplayLabel(boolean bIncludeValue, boolean bIncludeNamespace, boolean bUseStyling)

-  {

-    StringBuilder label = new StringBuilder();

-    

-    // add qualified element name

-    label.append(this.associatedElement.getQualifiedName());

-    

-    // add element namespace

-    if (bIncludeNamespace)

-    {

-      Namespace ns = this.associatedElement.getNamespace();

-      

-      label.append((bUseStyling ? "<font color=\"gray\">" : "") +

-          " - xmlns" + (ns.getPrefix().length() > 0 ? (":" + ns.getPrefix()) : "") + "=\"" + 

-          this.associatedElement.getNamespaceURI() +

-          (bUseStyling ? "\"</font>" : ""));

-    }

-    

-    // add element value

-    if (bIncludeValue)

-    {

-      String elementTextValue = this.associatedElement.getTextTrim();

-      

-      if (elementTextValue != null && elementTextValue.length() > 0) {

-        label.append((bUseStyling ? "<font color=\"gray\"> - </font><font color=\"blue\">" : "") +

-                     truncateElementTextValue(stripAllHTML(elementTextValue)) +

-                     (bUseStyling ? "</font>" : ""));

-      }

-    }

-    

-    if (bUseStyling) {

-      label.insert(0, "<html>");

-      label.append("</html>");

-    }

-    

-    return (label.toString());

-  }

-  

-}
\ No newline at end of file
diff --git a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/config/xmltree/XPathActivityXMLTreeNode.java b/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/config/xmltree/XPathActivityXMLTreeNode.java
deleted file mode 100644
index d1e98f7..0000000
--- a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/config/xmltree/XPathActivityXMLTreeNode.java
+++ /dev/null
@@ -1,81 +0,0 @@
-package net.sf.taverna.t2.activities.xpath.ui.config.xmltree;

-

-import javax.swing.tree.DefaultMutableTreeNode;

-

-import org.dom4j.QName;

-

-

-/**

- * 

- * @author Sergejs Aleksejevs

- */

-public abstract class XPathActivityXMLTreeNode extends DefaultMutableTreeNode

-{

-  protected static final int DISPLAY_LABEL_MAX_LENGTH = 200;

-  

-  private final boolean isAttribute;

-

-  public XPathActivityXMLTreeNode(Object userObject, boolean isAttribute)

-  {

-    super(userObject);

-    this.isAttribute = isAttribute;

-  }

-  

-  public boolean isAttribute() {

-    return (isAttribute);

-  }

-  

-  

-  public QName getNodeQName() {

-    if (this.isAttribute()) {

-      return (((XPathActivityXMLTreeAttributeNode)this).getAssociatedAttribute().getQName());

-    }

-    else {

-      return (((XPathActivityXMLTreeElementNode)this).getAssociatedElement().getQName());

-    }

-  }

-  

-  

-  public String getTreeNodeDisplayLabel(boolean bIncludeValue, boolean bIncludeElementNamespace, boolean bUseStyling)

-  {

-    if (this.isAttribute()) {

-      return (((XPathActivityXMLTreeAttributeNode)this).getTreeNodeDisplayLabel(bIncludeValue, bUseStyling));

-    }

-    else {

-      return (((XPathActivityXMLTreeElementNode)this).getTreeNodeDisplayLabel(bIncludeValue, bIncludeElementNamespace, bUseStyling));

-    }

-  }

-  

-  

-  protected String truncateElementTextValue(String textValue)

-  {

-    if (textValue != null && textValue.length() > DISPLAY_LABEL_MAX_LENGTH) {

-      textValue = textValue.substring(0, DISPLAY_LABEL_MAX_LENGTH) + "(...)";

-    }

-    return (textValue);

-  }

-  

-  

-  /**

-   * Tiny helper to strip out all HTML tags. This will not leave any HTML tags

-   * at all (so that the content can be displayed in DialogTextArea - and the

-   * like - components. This helps to present HTML content inside JAVA easier.

-   */

-  public static String stripAllHTML(String source) {

-        // don't do anything if not string is provided

-        if (source == null)

-          return ("");

-

-        // need to preserve at least all line breaks

-        // (ending and starting paragraph also make a line break)

-        source = source.replaceAll("</p>[\r\n]*<p>", "<br>");

-        source = source.replaceAll("\\<br/?\\>", "\n\n");

-

-        // strip all HTML

-        source = source.replaceAll("\\<.*?\\>", ""); // any HTML tags

-        source = source.replaceAll("&\\w{1,4};", ""); // this is for things like "&nbsp;", "&gt;", etc

-

-        return (source);

-  }

-  

-}
\ No newline at end of file
diff --git a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/config/xmltree/XPathActivityXMLTreeSelectionHandler.java b/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/config/xmltree/XPathActivityXMLTreeSelectionHandler.java
deleted file mode 100644
index 389bf1a..0000000
--- a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/config/xmltree/XPathActivityXMLTreeSelectionHandler.java
+++ /dev/null
@@ -1,251 +0,0 @@
-package net.sf.taverna.t2.activities.xpath.ui.config.xmltree;

-

-import java.util.ArrayList;

-import java.util.Enumeration;

-import java.util.List;

-

-import javax.swing.JOptionPane;

-import javax.swing.event.TreeSelectionEvent;

-import javax.swing.event.TreeSelectionListener;

-import javax.swing.tree.DefaultTreeModel;

-import javax.swing.tree.TreeNode;

-import javax.swing.tree.TreePath;

-

-import net.sf.taverna.t2.activities.xpath.ui.config.XPathActivityConfigurationPanel;

-

-import org.dom4j.DocumentHelper;

-

-

-/**

- * 

- * @author Sergejs Aleksejevs

- */

-public class XPathActivityXMLTreeSelectionHandler implements TreeSelectionListener

-{

-  private final XPathActivityXMLTree theTree;

-  private final XPathActivityConfigurationPanel parentConfigPanel;

-

-

-  public XPathActivityXMLTreeSelectionHandler(XPathActivityConfigurationPanel parentConfigPanel,

-                  XPathActivityXMLTree tree)

-  {

-    this.parentConfigPanel = parentConfigPanel;

-    this.theTree = tree;

-  }

-  

-  

-  public void valueChanged(TreeSelectionEvent e)

-  {

-    // get the newly made selection

-    TreePath newSelectedPath = e.getNewLeadSelectionPath();

-    

-    // NB! Safety check - sometimes the container of the XML tree will remove all selections,

-    //     in such case this listener is not supposed to perform any action -> terminate 

-    if (newSelectedPath == null) return;

-    

-    

-    // --- XPath GENERATION ---

-    

-    // get the XPath expression for the new selection + taking into consideration all previous ones

-    List<String> wildcardedXPath = generateWildcardedXPathExpression(newSelectedPath);

-    

-    // assemble the xpath expression as one string

-    StringBuilder xpath = new StringBuilder();

-    for (String leg : wildcardedXPath) {

-      xpath.append(leg);

-    }

-    theTree.setCurrentXPathExpression(DocumentHelper.createXPath(xpath.toString()));

-    theTree.getCurrentXPathExpression().setNamespaceURIs(theTree.getCurrentXPathNamespaces());

-    

-    

-    // --- UPDATE CONFIG PANEL ---

-    // (with new values for XPath expression and namespace mappings)

-    

-    // inform the parent activity configuration panel to update the XPath expression in the UI

-    /* We do not update the XPath expression after changes in selection in the XML tree - we

-     * now have a button to explicitly do that.

-     * theTree.getParentConfigPanel().updateXPathEditingPanelValues();

-     */

-    

-    // --- SELECTION ---

-    selectAllNodesThatMatchTheCurrentXPath(wildcardedXPath, newSelectedPath);

-  }

-  

-  

-  /**

-   * Selects all nodes that match the <code>wildcardedXPath</code> expression.

-   * 

-   * Keyboard focus is set to remain on the "deepest" (e.g. furthest from root)

-   * element of the <code>lastSelectedPath</code>. 

-   * 

-   * @param wildcardedXPath List of strings, where each string contains one "leg" of the XPath expression

-   *                        (e.g. a string starting with a "/" and containing the name of one node of the tree).

-   * 

-   * @param lastSelectedPath The path that was last selected in the tree (normally,

-   *                         because of this selection {@link XPathActivityXMLTreeSelectionHandler#valueChanged(TreeSelectionEvent)}

-   *                         was executed and this method was started as a part of that.

-   */

-  public void selectAllNodesThatMatchTheCurrentXPath(List<String> wildcardedXPath, TreePath lastSelectedPath)

-  {

-    // first of all - calculate the number of nodes that match this XPath

-    // expression in the XML tree

-    int numberOfMatchingNodes = parentConfigPanel.runXPath(false);

-    

-    

-    // store all tree selection listeners in order to temporarily remove them;

-    // this is necessary as selection modifications will be made here -- don't

-    // want any listeners to respond to these new events

-    theTree.removeAllSelectionListeners();

-    

-    

-    // remove all previous selections - safest way to get the new ones correctly

-    theTree.clearSelection();

-    

-    

-    if (numberOfMatchingNodes <= XPathActivityConfigurationPanel.MAX_NUMBER_OF_MATCHING_NODES_TO_HIGHLIGHT_IN_THE_TREE)

-    {

-      // find all nodes that match the XPath expression

-      List<XPathActivityXMLTreeNode> matchingNodes = new ArrayList<XPathActivityXMLTreeNode>();

-      findAllNodesThatMatchWildcardedXPath(

-          (XPathActivityXMLTreeNode)theTree.getModel().getRoot(),

-          wildcardedXPath.subList(1, wildcardedXPath.size()),

-          matchingNodes);

-      

-      // obtain and select TreePaths for each of the matching nodes

-      for (XPathActivityXMLTreeNode matchingNode : matchingNodes) {

-        TreeNode[] pathAsObjects = ((DefaultTreeModel)theTree.getModel()).getPathToRoot(matchingNode);

-        TreePath path = new TreePath(pathAsObjects);

-        selectTreePathAndAllItsAncestors(path);

-      }

-    }

-    else {

-      JOptionPane.showMessageDialog(parentConfigPanel,

-          "Current XPath expression matches " + numberOfMatchingNodes + " nodes in the XML tree.\n" +

-          "The XPath Activity is unable to highlight all these nodes in the tree due to\n" +

-          "performance reasons.\n\n" +

-          "The XPath Activity will still work correctly - both during the workflow execution\n" +

-          "and if 'Run XPath' button is clicked to run this expression against the example XML.",

-          "XPath Activity", JOptionPane.INFORMATION_MESSAGE);

-    }

-    

-    

-    // make sure the keyboard focus stays on the actual node that was clicked on -

-    // no direct way to do this, so simply de-select and re-select again

-    if (lastSelectedPath != null) {

-      theTree.removeSelectionPath(lastSelectedPath);

-      theTree.addSelectionPath(lastSelectedPath);

-    }

-    

-    // restore all previously stored selection listeners

-    theTree.restoreAllSelectionListeners();

-  }

-  

-  

-  

-  /**

-   * This cannot work for XPath expressions that were modified manually -

-   * only works for the type generated by the click in the XML tree. 

-   * 

-   * @param nodeToStartAt

-   * @param xpathLegs From <code>nodeToStartAt</code>.

-   * @param matchingNodes

-   */

-  private void findAllNodesThatMatchWildcardedXPath(XPathActivityXMLTreeNode nodeToStartAt, 

-                  List<String> xpathLegs, List<XPathActivityXMLTreeNode> matchingNodes)

-  {

-    // some of the input data is missing, just return...

-    if (nodeToStartAt == null || xpathLegs == null || matchingNodes == null) {

-      return;

-    }

-    

-    // no XPath expression to match against the 'nodeToStartAt', therefore

-    // we've "found" the macthing node: 'nodeToStartAt'

-    if (xpathLegs.size() == 0) {

-      matchingNodes.add(nodeToStartAt);

-      return;

-    }

-    

-    // standard case - there is something to match, proceed as normal

-    Enumeration<XPathActivityXMLTreeNode> startNodeChildren = nodeToStartAt.children();

-    while (startNodeChildren.hasMoreElements()) {

-      XPathActivityXMLTreeNode child = startNodeChildren.nextElement();

-      

-      if (xpathLegs.get(0).equals("/*") ||

-          xpathLegs.get(0).equals(this.theTree.getXMLTreeNodeEffectiveQualifiedNameAsXPathLeg(child)))

-      {

-        // this node matches current section of the XPath expression

-        if (xpathLegs.size() == 1) {

-          // no more sections in the XPath leg list to match, so this child

-          // node is the one we were looking for - add to the result

-          matchingNodes.add(child);

-        }

-        else {

-          // ...or process its children recursively

-          findAllNodesThatMatchWildcardedXPath(child, xpathLegs.subList(1, xpathLegs.size()), matchingNodes);

-        }

-      }

-    }

-  }

-

-

-  private List<String> generateWildcardedXPathExpression(TreePath newSelectedPath)

-  {

-    // look through previous selection to find paths of the same length, as the newly selected one

-    List<TreePath> pathsOfSameLength = new ArrayList<TreePath>();

-    TreePath[] previouslySelectedPaths = theTree.getSelectionPaths();

-    for (TreePath path : previouslySelectedPaths) {

-      if (path.getPathCount() == newSelectedPath.getPathCount()) {

-        pathsOfSameLength.add(path);

-      }

-    }

-    

-    // if there were found any paths of the same length, we have a "wildcard" situation

-    List<String> wildcardXPathLegs = theTree.generateXPathFromTreePathAsLegList(newSelectedPath);

-    

-    if (pathsOfSameLength.size() > 0)

-    {

-      // it's okay to use just the first path - TODO: explain that this is because of previous comparisons

-      List<String> firstMatchingLengthPathLegs = theTree.generateXPathFromTreePathAsLegList(pathsOfSameLength.get(0));

-      

-      int pathLength = wildcardXPathLegs.size();

-      

-      // only use wildcards if the last segments of both paths are identical

-      if (wildcardXPathLegs.get(pathLength - 1).equals(firstMatchingLengthPathLegs.get(pathLength - 1)))

-      {

-        // continue all the way to the last segment, but don't touch it

-        for (int i = 0; i < wildcardXPathLegs.size() - 1; i++)

-        {

-          if (!wildcardXPathLegs.get(i).equals(firstMatchingLengthPathLegs.get(i))) {

-            // set wildcard

-            // TODO - make wildcard a constant

-            // TODO - may need to make the wildcard to have a namespace? (e.g. "/default:*" instead of simply "/*")

-            wildcardXPathLegs.set(i, "/*"); // definitely an element, not an attribute (as not the last segment in the path)

-          }

-        }

-      }

-    }

-    

-    return (wildcardXPathLegs);

-  }

-  

-  

-  

-  private void selectTreePathAndAllItsAncestors(TreePath path)

-  {

-    // select all ancestors of that path

-    TreePath pathToSelect = path;

-    for (int i = 0; i < path.getPathCount(); i++)

-    {

-      pathToSelect = pathToSelect.getParentPath();

-      theTree.addSelectionPath(pathToSelect);

-    }

-    

-    // select the specified path itself

-    //

-    // NB! important to do this after the ancestors, so that the supplied

-    // path is the one that retains the keyboard focus after this method terminates

-    theTree.addSelectionPath(path);

-  }

-  

-  

-}

diff --git a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/contextualview/ConfigureXPathActivityMenuAction.java b/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/contextualview/ConfigureXPathActivityMenuAction.java
deleted file mode 100644
index 6695dc9..0000000
--- a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/contextualview/ConfigureXPathActivityMenuAction.java
+++ /dev/null
@@ -1,65 +0,0 @@
-package net.sf.taverna.t2.activities.xpath.ui.contextualview;

-

-import javax.swing.Action;

-

-import net.sf.taverna.t2.activities.xpath.ui.config.XPathActivityConfigureAction;

-import net.sf.taverna.t2.activities.xpath.ui.servicedescription.XPathTemplateService;

-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;

-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;

-import net.sf.taverna.t2.workbench.activitytools.AbstractConfigureActivityMenuAction;

-import net.sf.taverna.t2.workbench.edits.EditManager;

-import net.sf.taverna.t2.workbench.file.FileManager;

-import uk.org.taverna.commons.services.ServiceRegistry;

-

-/**

- * This action is responsible for enabling the contextual menu entry on processors that perform

- * XPathActivity'ies.

- * NB! As a side-effect this also enables the pop-up with for configuration of the processor when it

- * is added to the workflow from the Service Panel.

- *

- * @author Sergejs Aleksejevs

- * @author David Withers

- */

-public class ConfigureXPathActivityMenuAction extends AbstractConfigureActivityMenuAction {

-

-	private EditManager editManager;

-	private FileManager fileManager;

-	private ActivityIconManager activityIconManager;

-	private ServiceDescriptionRegistry serviceDescriptionRegistry;

-	private ServiceRegistry serviceRegistry;

-

-	public ConfigureXPathActivityMenuAction() {

-		super(XPathTemplateService.ACTIVITY_TYPE);

-	}

-

-	@Override

-	protected Action createAction() {

-		XPathActivityConfigureAction configAction = new XPathActivityConfigureAction(

-				findActivity(), getParentFrame(), editManager, fileManager, activityIconManager,

-				serviceDescriptionRegistry, serviceRegistry);

-		configAction.putValue(Action.NAME, "Configure XPath service");

-		addMenuDots(configAction);

-		return configAction;

-	}

-

-	public void setEditManager(EditManager editManager) {

-		this.editManager = editManager;

-	}

-

-	public void setFileManager(FileManager fileManager) {

-		this.fileManager = fileManager;

-	}

-

-	public void setActivityIconManager(ActivityIconManager activityIconManager) {

-		this.activityIconManager = activityIconManager;

-	}

-

-	public void setServiceDescriptionRegistry(ServiceDescriptionRegistry serviceDescriptionRegistry) {

-		this.serviceDescriptionRegistry = serviceDescriptionRegistry;

-	}

-

-	public void setServiceRegistry(ServiceRegistry serviceRegistry) {

-		this.serviceRegistry = serviceRegistry;

-	}

-

-}

diff --git a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/contextualview/XPathActivityMainContextViewFactory.java b/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/contextualview/XPathActivityMainContextViewFactory.java
deleted file mode 100644
index 355ab8d..0000000
--- a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/contextualview/XPathActivityMainContextViewFactory.java
+++ /dev/null
@@ -1,59 +0,0 @@
-package net.sf.taverna.t2.activities.xpath.ui.contextualview;

-

-import java.util.Arrays;

-import java.util.List;

-

-import net.sf.taverna.t2.activities.xpath.ui.servicedescription.XPathTemplateService;

-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;

-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;

-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;

-import uk.org.taverna.commons.services.ServiceRegistry;

-import uk.org.taverna.scufl2.api.activity.Activity;

-

-/**

- * @author Sergejs Aleksejevs

- */

-public class XPathActivityMainContextViewFactory implements ContextualViewFactory<Activity> {

-

-	private EditManager editManager;

-	private FileManager fileManager;

-	private ActivityIconManager activityIconManager;

-	private ServiceDescriptionRegistry serviceDescriptionRegistry;

-	private ServiceRegistry serviceRegistry;

-

-	public boolean canHandle(Object selection) {

-		return selection instanceof Activity

-				&& ((Activity) selection).getType()

-						.equals(XPathTemplateService.ACTIVITY_TYPE);

-	}

-

-	public List<ContextualView> getViews(Activity selection) {

-		return Arrays.<ContextualView> asList(new XPathActivityMainContextualView(selection,

-				editManager, fileManager, activityIconManager, serviceDescriptionRegistry,

-				serviceRegistry));

-	}

-

-	public void setEditManager(EditManager editManager) {

-		this.editManager = editManager;

-	}

-

-	public void setFileManager(FileManager fileManager) {

-		this.fileManager = fileManager;

-	}

-

-	public void setActivityIconManager(ActivityIconManager activityIconManager) {

-		this.activityIconManager = activityIconManager;

-	}

-

-	public void setServiceDescriptionRegistry(ServiceDescriptionRegistry serviceDescriptionRegistry) {

-		this.serviceDescriptionRegistry = serviceDescriptionRegistry;

-	}

-

-	public void setServiceRegistry(ServiceRegistry serviceRegistry) {

-		this.serviceRegistry = serviceRegistry;

-	}

-

-}

diff --git a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/contextualview/XPathActivityMainContextualView.java b/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/contextualview/XPathActivityMainContextualView.java
deleted file mode 100644
index d872228..0000000
--- a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/contextualview/XPathActivityMainContextualView.java
+++ /dev/null
@@ -1,209 +0,0 @@
-package net.sf.taverna.t2.activities.xpath.ui.contextualview;

-

-import java.awt.Color;

-import java.awt.Cursor;

-import java.awt.Dimension;

-import java.awt.Font;

-import java.awt.Frame;

-import java.awt.GridBagConstraints;

-import java.awt.GridBagLayout;

-import java.awt.Insets;

-import java.awt.event.MouseAdapter;

-import java.awt.event.MouseEvent;

-

-import javax.swing.Action;

-import javax.swing.BorderFactory;

-import javax.swing.JComponent;

-import javax.swing.JLabel;

-import javax.swing.JPanel;

-import javax.swing.JScrollPane;

-import javax.swing.JTable;

-import javax.swing.JTextField;

-import javax.swing.table.DefaultTableModel;

-

-import net.sf.taverna.t2.activities.xpath.ui.config.XPathActivityConfigureAction;

-import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry;

-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;

-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 uk.org.taverna.commons.services.ServiceRegistry;

-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 com.fasterxml.jackson.databind.JsonNode;

-

-/**

- *

- * @author Sergejs Aleksejevs

- * @author David Withers

- */

-@SuppressWarnings("serial")

-public class XPathActivityMainContextualView extends ContextualView {

-

-	private final Scufl2Tools scufl2Tools = new Scufl2Tools();

-

-	private XPathActivityMainContextualView thisContextualView;

-

-	private final Activity activity;

-

-	private JPanel jpMainPanel;

-	private JTextField tfXPathExpression;

-

-	private DefaultTableModel xpathNamespaceMappingsTableModel;

-	private JTable jtXPathNamespaceMappings;

-	private JScrollPane spXPathNamespaceMappings;

-	private final EditManager editManager;

-	private final FileManager fileManager;

-	private final ActivityIconManager activityIconManager;

-	private final ServiceDescriptionRegistry serviceDescriptionRegistry;

-	private final ServiceRegistry serviceRegistry;

-

-	public XPathActivityMainContextualView(Activity activity, EditManager editManager,

-			FileManager fileManager, ActivityIconManager activityIconManager,

-			ServiceDescriptionRegistry serviceDescriptionRegistry, ServiceRegistry serviceRegistry) {

-		this.editManager = editManager;

-		this.fileManager = fileManager;

-		this.activityIconManager = activityIconManager;

-		this.serviceDescriptionRegistry = serviceDescriptionRegistry;

-		this.serviceRegistry = serviceRegistry;

-		this.thisContextualView = this;

-		this.activity = activity;

-		initView();

-	}

-

-	@Override

-	public JComponent getMainFrame() {

-		jpMainPanel = new JPanel(new GridBagLayout());

-		jpMainPanel.setBorder(BorderFactory.createCompoundBorder(

-				BorderFactory.createEmptyBorder(4, 2, 4, 2), BorderFactory.createEmptyBorder()));

-

-		GridBagConstraints c = new GridBagConstraints();

-		c.fill = GridBagConstraints.HORIZONTAL;

-		c.anchor = GridBagConstraints.WEST;

-		c.weighty = 0;

-

-		// --- XPath Expression ---

-

-		c.gridx = 0;

-		c.gridy = 0;

-		c.insets = new Insets(5, 5, 5, 5);

-		JLabel jlXPathExpression = new JLabel("XPath Expression:");

-		jlXPathExpression.setFont(jlXPathExpression.getFont().deriveFont(Font.BOLD));

-		jpMainPanel.add(jlXPathExpression, c);

-

-		c.gridx++;

-		c.weightx = 1.0;

-		tfXPathExpression = new JTextField();

-		tfXPathExpression.setEditable(false);

-		jpMainPanel.add(tfXPathExpression, c);

-

-		// --- Label to Show/Hide Mapping Table ---

-

-		final JLabel jlShowHideNamespaceMappings = new JLabel("Show namespace mappings...");

-		jlShowHideNamespaceMappings.setForeground(Color.BLUE);

-		jlShowHideNamespaceMappings.setCursor(new Cursor(Cursor.HAND_CURSOR));

-		jlShowHideNamespaceMappings.addMouseListener(new MouseAdapter() {

-			public void mouseClicked(MouseEvent e) {

-				spXPathNamespaceMappings.setVisible(!spXPathNamespaceMappings.isVisible());

-				jlShowHideNamespaceMappings.setText((spXPathNamespaceMappings.isVisible() ? "Hide"

-						: "Show") + " namespace mappings...");

-				thisContextualView.revalidate();

-			}

-		});

-

-		c.gridx = 0;

-		c.gridy++;

-		c.gridwidth = 2;

-		c.weightx = 1.0;

-		c.weighty = 0;

-		c.fill = GridBagConstraints.HORIZONTAL;

-		jpMainPanel.add(jlShowHideNamespaceMappings, c);

-

-		// --- Namespace Mapping Table ---

-

-		xpathNamespaceMappingsTableModel = new DefaultTableModel() {

-			/**

-			 * No cells should be editable

-			 */

-			public boolean isCellEditable(int rowIndex, int columnIndex) {

-				return (false);

-			}

-		};

-		xpathNamespaceMappingsTableModel.addColumn("Namespace Prefix");

-		xpathNamespaceMappingsTableModel.addColumn("Namespace URI");

-

-		jtXPathNamespaceMappings = new JTable();

-		jtXPathNamespaceMappings.setModel(xpathNamespaceMappingsTableModel);

-		jtXPathNamespaceMappings.setPreferredScrollableViewportSize(new Dimension(200, 90));

-		// TODO - next line is to be enabled when Taverna is migrated to Java

-		// 1.6; for now it's fine to run without this

-		// jtXPathNamespaceMappings.setFillsViewportHeight(true); // makes sure

-		// that when the dedicated area is larger than the table, the latter is

-		// stretched vertically to fill the empty space

-

-		jtXPathNamespaceMappings.getColumnModel().getColumn(0).setPreferredWidth(20); // set

-																						// relative

-																						// sizes of

-																						// columns

-		jtXPathNamespaceMappings.getColumnModel().getColumn(1).setPreferredWidth(300);

-

-		c.gridy++;

-		spXPathNamespaceMappings = new JScrollPane(jtXPathNamespaceMappings);

-		spXPathNamespaceMappings.setVisible(false);

-		jpMainPanel.add(spXPathNamespaceMappings, c);

-

-		// populate the view with values

-		refreshView();

-

-		return jpMainPanel;

-	}

-

-	@Override

-	/**

-	 * This is the title of the contextual view - shown in the list of other available

-	 * views (even when this contextual view is collapsed).

-	 */

-	public String getViewTitle() {

-		return "XPath Service Details";

-	}

-

-	/**

-	 * Typically called when the activity configuration has changed.

-	 */

-	@Override

-	public void refreshView() {

-		Configuration configuration = scufl2Tools.configurationFor(activity, activity.getParent());

-		JsonNode json = configuration.getJson();

-

-		// Set XPath Expression

-		tfXPathExpression.setText(json.get("xpathExpression").asText());

-

-		// Populate Namespace Mappings

-		xpathNamespaceMappingsTableModel.getDataVector().removeAllElements();

-		if (json.has("xpathNamespaceMap")) {

-			for (JsonNode mapping : json.get("xpathNamespaceMap")) {

-				xpathNamespaceMappingsTableModel.addRow(new Object[] {

-						mapping.get("prefix").asText(), mapping.get("uri").asText() });

-			}

-		}

-	}

-

-	/**

-	 * View position hint

-	 */

-	@Override

-	public int getPreferredPosition() {

-		// want to be on top, as it's the main contextual view for this activity

-		return 100;

-	}

-

-	@Override

-	public Action getConfigureAction(final Frame owner) {

-		// "Configure" button appears because of this action being returned

-		return new XPathActivityConfigureAction(activity, owner, editManager, fileManager,

-				activityIconManager, serviceDescriptionRegistry, serviceRegistry);

-	}

-

-}

diff --git a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/menu/AddXPathTemplateAction.java b/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/menu/AddXPathTemplateAction.java
deleted file mode 100644
index a80696d..0000000
--- a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/menu/AddXPathTemplateAction.java
+++ /dev/null
@@ -1,110 +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.activities.xpath.ui.menu;
-
-import java.awt.event.ActionEvent;
-import java.net.URI;
-
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-
-import net.sf.taverna.t2.activities.xpath.ui.servicedescription.XPathTemplateService;
-import net.sf.taverna.t2.ui.menu.AbstractContextualMenuAction;
-import net.sf.taverna.t2.ui.menu.MenuManager;
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.selection.SelectionManager;
-import net.sf.taverna.t2.workbench.ui.workflowview.WorkflowView;
-import uk.org.taverna.commons.services.ServiceRegistry;
-import uk.org.taverna.scufl2.api.core.Workflow;
-
-/**
- * An action to add a REST activity + a wrapping processor to the workflow.
- *
- * @author Alex Nenadic
- */
-@SuppressWarnings("serial")
-public class AddXPathTemplateAction extends AbstractContextualMenuAction {
-
-	private static final String ADD_XPATH = "XPath";
-
-	private static final URI insertSection = URI
-			.create("http://taverna.sf.net/2009/contextMenu/insert");
-
-	private EditManager editManager;
-
-	private MenuManager menuManager;
-
-	private SelectionManager selectionManager;
-
-	private ActivityIconManager activityIconManager;
-
-	private ServiceRegistry serviceRegistry;
-
-	public AddXPathTemplateAction() {
-		super(insertSection, 1000);
-	}
-
-	@Override
-	public boolean isEnabled() {
-		return super.isEnabled() && getContextualSelection().getSelection() instanceof Workflow;
-	}
-
-	@Override
-	protected Action createAction() {
-
-		return new AddXPathAction();
-	}
-
-	protected class AddXPathAction extends AbstractAction {
-		AddXPathAction() {
-			super(ADD_XPATH, activityIconManager
-					.iconForActivity(XPathTemplateService.ACTIVITY_TYPE));
-		}
-
-		public void actionPerformed(ActionEvent e) {
-
-			WorkflowView.importServiceDescription(XPathTemplateService.getServiceDescription(),
-					false, editManager, menuManager, selectionManager, serviceRegistry);
-		}
-	}
-
-	public void setEditManager(EditManager editManager) {
-		this.editManager = editManager;
-	}
-
-	public void setMenuManager(MenuManager menuManager) {
-		this.menuManager = menuManager;
-	}
-
-	public void setSelectionManager(SelectionManager selectionManager) {
-		this.selectionManager = selectionManager;
-	}
-
-	public void setActivityIconManager(ActivityIconManager activityIconManager) {
-		this.activityIconManager = activityIconManager;
-	}
-
-	public void setServiceRegistry(ServiceRegistry serviceRegistry) {
-		this.serviceRegistry = serviceRegistry;
-	}
-
-}
diff --git a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/menu/AddXPathTemplateMenuAction.java b/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/menu/AddXPathTemplateMenuAction.java
deleted file mode 100644
index 9132110..0000000
--- a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/menu/AddXPathTemplateMenuAction.java
+++ /dev/null
@@ -1,117 +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.activities.xpath.ui.menu;
-
-import java.awt.event.ActionEvent;
-import java.awt.event.InputEvent;
-import java.awt.event.KeyEvent;
-import java.net.URI;
-
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-import javax.swing.KeyStroke;
-
-import net.sf.taverna.t2.activities.xpath.ui.servicedescription.XPathTemplateService;
-import net.sf.taverna.t2.ui.menu.AbstractMenuAction;
-import net.sf.taverna.t2.ui.menu.DesignOnlyAction;
-import net.sf.taverna.t2.ui.menu.MenuManager;
-import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;
-import net.sf.taverna.t2.workbench.edits.EditManager;
-import net.sf.taverna.t2.workbench.selection.SelectionManager;
-import net.sf.taverna.t2.workbench.ui.workflowview.WorkflowView;
-import uk.org.taverna.commons.services.ServiceRegistry;
-
-/**
- * An action to add a REST activity + a wrapping processor to the workflow.
- *
- * @author Alex Nenadic
- * @author alanrw
- */
-@SuppressWarnings("serial")
-public class AddXPathTemplateMenuAction extends AbstractMenuAction {
-
-	private static final String ADD_XPATH = "XPath";
-
-	private static final URI INSERT = URI
-			.create("http://taverna.sf.net/2008/t2workbench/menu#insert");
-
-	private static final URI ADD_XPATH_URI = URI
-			.create("http://taverna.sf.net/2008/t2workbench/menu#graphMenuAddXPath");
-
-	private EditManager editManager;
-
-	private MenuManager menuManager;
-
-	private SelectionManager selectionManager;
-
-	private ActivityIconManager activityIconManager;
-
-	private ServiceRegistry serviceRegistry;
-
-	public AddXPathTemplateMenuAction() {
-		super(INSERT, 1000, ADD_XPATH_URI);
-	}
-
-	@Override
-	protected Action createAction() {
-		return new AddXPathMenuAction();
-	}
-
-	protected class AddXPathMenuAction extends AbstractAction implements DesignOnlyAction {
-		AddXPathMenuAction() {
-			super();
-			putValue(SMALL_ICON,
-					activityIconManager.iconForActivity(XPathTemplateService.ACTIVITY_TYPE));
-			putValue(NAME, ADD_XPATH);
-			putValue(SHORT_DESCRIPTION, "XPath service");
-			putValue(
-					Action.ACCELERATOR_KEY,
-					KeyStroke.getKeyStroke(KeyEvent.VK_P, InputEvent.SHIFT_DOWN_MASK
-							| InputEvent.ALT_DOWN_MASK));
-		}
-
-		public void actionPerformed(ActionEvent e) {
-			WorkflowView.importServiceDescription(XPathTemplateService.getServiceDescription(),
-					false, editManager, menuManager, selectionManager, serviceRegistry);
-		}
-	}
-
-	public void setEditManager(EditManager editManager) {
-		this.editManager = editManager;
-	}
-
-	public void setMenuManager(MenuManager menuManager) {
-		this.menuManager = menuManager;
-	}
-
-	public void setSelectionManager(SelectionManager selectionManager) {
-		this.selectionManager = selectionManager;
-	}
-
-	public void setActivityIconManager(ActivityIconManager activityIconManager) {
-		this.activityIconManager = activityIconManager;
-	}
-
-	public void setServiceRegistry(ServiceRegistry serviceRegistry) {
-		this.serviceRegistry = serviceRegistry;
-	}
-
-}
diff --git a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/servicedescription/XPathActivityIcon.java b/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/servicedescription/XPathActivityIcon.java
deleted file mode 100644
index 2251efb..0000000
--- a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/servicedescription/XPathActivityIcon.java
+++ /dev/null
@@ -1,86 +0,0 @@
-package net.sf.taverna.t2.activities.xpath.ui.servicedescription;

-

-import java.awt.Color;

-import java.net.URI;

-

-import javax.swing.Icon;

-import javax.swing.ImageIcon;

-

-import net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI;

-import net.sf.taverna.t2.workbench.configuration.colour.ColourManager;

-

-/**

- * @author Sergejs Aleksejevs

- */

-public class XPathActivityIcon implements ActivityIconSPI {

-	private static final Color PROCESSOR_COLOUR = Color.decode("#E6FF5E");

-

-	// --- LOCATIONS OF ICONS USED IN THE XPath ACTIVITY ---

-

-	private static final String FAMFAMFAM_SILK_PATH = "famfamfam_silk/";

-	private static final String FOLDS_PATH = "folds/";

-

-	public static final String XPATH_ACTIVITY_ICON = FAMFAMFAM_SILK_PATH + "page_white_code.png";

-	public static final String XPATH_ACTIVITY_CONFIGURATION_PARSE_XML_ICON = "arrow_right.png";

-

-	public static final String XML_TREE_ROOT_ICON = FAMFAMFAM_SILK_PATH + "page_white_code.png";

-	public static final String XML_TREE_NODE_ICON = FAMFAMFAM_SILK_PATH + "tag.png";

-	public static final String XML_TREE_ATTRIBUTE_ICON = "xpath_attribute.png";

-

-	public static final String XML_TREE_EXPAND_ALL_ICON = FAMFAMFAM_SILK_PATH

-			+ "text_linespacing.png";

-	public static final String XML_TREE_COLLAPSE_ALL_ICON = FAMFAMFAM_SILK_PATH

-			+ "text_linespacing (collapse).png";

-

-	public static final String XPATH_STATUS_OK_ICON = FAMFAMFAM_SILK_PATH + "accept.png";

-	public static final String XPATH_STATUS_ERROR_ICON = FAMFAMFAM_SILK_PATH + "exclamation.png";

-	public static final String XPATH_STATUS_UNKNOWN_ICON = FAMFAMFAM_SILK_PATH + "help.png";

-

-	public static final String FOLD_ICON = FOLDS_PATH + "fold.png";

-	public static final String UNFOLD_ICON = FOLDS_PATH + "unfold.png";

-

-	// ------

-

-	private static ImageIcon icon;

-

-	public int canProvideIconScore(URI activityType) {

-		if (XPathTemplateService.ACTIVITY_TYPE.equals(activityType))

-			return DEFAULT_ICON + 1;

-		else

-			return NO_ICON;

-	}

-

-	public Icon getIcon(URI activityType) {

-		return getXPathActivityIcon();

-	}

-

-	public static Icon getXPathActivityIcon() {

-		if (icon == null) {

-			synchronized (XPathActivityIcon.class) {

-				if (icon == null) {

-					try {

-						icon = new ImageIcon(

-								XPathActivityIcon.class.getResource(XPATH_ACTIVITY_ICON));

-					} catch (NullPointerException e) {

-						/* icon wasn't found - do nothing, but no icon will be available */

-					}

-				}

-			}

-		}

-		return (icon);

-	}

-

-	public static Icon getIconById(String iconID) {

-		try {

-			return (new ImageIcon(XPathActivityIcon.class.getResource(iconID)));

-		} catch (NullPointerException e) {

-			// requested icon wasn't found - just return null

-			return (null);

-		}

-	}

-

-	public void setColourManager(ColourManager colourManager) {

-		colourManager.setPreferredColour(XPathTemplateService.ACTIVITY_TYPE.toString(), PROCESSOR_COLOUR);

-	}

-

-}

diff --git a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/servicedescription/XPathTemplateService.java b/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/servicedescription/XPathTemplateService.java
deleted file mode 100644
index d55235d..0000000
--- a/taverna-xpath-activity-ui/src/main/java/net/sf/taverna/t2/activities/xpath/ui/servicedescription/XPathTemplateService.java
+++ /dev/null
@@ -1,57 +0,0 @@
-package net.sf.taverna.t2.activities.xpath.ui.servicedescription;

-

-import java.net.URI;

-

-import javax.swing.Icon;

-

-import net.sf.taverna.t2.servicedescriptions.AbstractTemplateService;

-import net.sf.taverna.t2.servicedescriptions.ServiceDescription;

-import uk.org.taverna.scufl2.api.configurations.Configuration;

-

-import com.fasterxml.jackson.databind.node.ObjectNode;

-

-/**

- * @author Sergejs Aleksejevs

- * @author David Withers

- */

-public class XPathTemplateService extends AbstractTemplateService {

-

-	public static final URI ACTIVITY_TYPE = URI.create("http://ns.taverna.org.uk/2010/activity/xpath");

-

-	@Override

-	public URI getActivityType() {

-		return ACTIVITY_TYPE;

-	}

-

-	@Override

-	public Configuration getActivityConfiguration() {

-		Configuration configuration = new Configuration();

-		configuration.setType(ACTIVITY_TYPE.resolve("#Config"));

-		ObjectNode json = (ObjectNode) configuration.getJson();

-		json.put("xpathExpression", "/");

-		return configuration;

-	}

-

-	@Override

-	public Icon getIcon() {

-		return XPathActivityIcon.getXPathActivityIcon();

-	}

-

-	public String getName() {

-		return "XPath";

-	}

-

-	public String getDescription() {

-		return "Service for point-and-click creation of XPath expressions for XML data";

-	}

-

-	public static ServiceDescription getServiceDescription() {

-		XPathTemplateService gts = new XPathTemplateService();

-		return gts.templateService;

-	}

-

-	public String getId() {

-		return "http://www.taverna.org.uk/2010/services/xpath";

-	}

-

-}

diff --git a/taverna-xpath-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider b/taverna-xpath-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider
deleted file mode 100644
index be7da5f..0000000
--- a/taverna-xpath-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider
+++ /dev/null
@@ -1 +0,0 @@
-net.sf.taverna.t2.activities.xpath.ui.servicedescription.XPathTemplateService
\ No newline at end of file
diff --git a/taverna-xpath-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent b/taverna-xpath-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent
deleted file mode 100644
index 7700abb..0000000
--- a/taverna-xpath-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent
+++ /dev/null
@@ -1,3 +0,0 @@
-net.sf.taverna.t2.activities.xpath.ui.contextualview.ConfigureXPathActivityMenuAction
-net.sf.taverna.t2.activities.xpath.ui.menu.AddXPathTemplateAction
-net.sf.taverna.t2.activities.xpath.ui.menu.AddXPathTemplateMenuAction
\ No newline at end of file
diff --git a/taverna-xpath-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI b/taverna-xpath-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI
deleted file mode 100644
index b759c2e..0000000
--- a/taverna-xpath-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI
+++ /dev/null
@@ -1 +0,0 @@
-net.sf.taverna.t2.activities.xpath.ui.servicedescription.XPathActivityIcon
\ No newline at end of file
diff --git a/taverna-xpath-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory b/taverna-xpath-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory
deleted file mode 100644
index e248981..0000000
--- a/taverna-xpath-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory
+++ /dev/null
@@ -1 +0,0 @@
- net.sf.taverna.t2.activities.xpath.ui.contextualview.XPathActivityMainContextViewFactory

diff --git a/taverna-xpath-activity-ui/src/main/resources/META-INF/spring/xpath-activity-ui-context-osgi.xml b/taverna-xpath-activity-ui/src/main/resources/META-INF/spring/xpath-activity-ui-context-osgi.xml
deleted file mode 100644
index 1e53ea6..0000000
--- a/taverna-xpath-activity-ui/src/main/resources/META-INF/spring/xpath-activity-ui-context-osgi.xml
+++ /dev/null
@@ -1,28 +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="XPathActivityIcon" interface="net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI" />
-
-	<service ref="XPathTemplateService" interface="net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider" />
-
-	<service ref="ConfigureXPathActivityMenuAction" auto-export="interfaces" />
-	<service ref="AddXPathTemplateAction" auto-export="interfaces" />
-	<service ref="AddXPathTemplateMenuAction" auto-export="interfaces" />
-
-	<service ref="XPathActivityMainContextViewFactory" 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" />
-	<reference id="menuManager" interface="net.sf.taverna.t2.ui.menu.MenuManager" />
-	<reference id="selectionManager" interface="net.sf.taverna.t2.workbench.selection.SelectionManager" />
-	<reference id="activityIconManager" interface="net.sf.taverna.t2.workbench.activityicons.ActivityIconManager" />
-	<reference id="colourManager" interface="net.sf.taverna.t2.workbench.configuration.colour.ColourManager" />
-	<reference id="serviceDescriptionRegistry" interface="net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry" />
-	<reference id="serviceRegistry" interface="uk.org.taverna.commons.services.ServiceRegistry" />
-
-</beans:beans>
diff --git a/taverna-xpath-activity-ui/src/main/resources/META-INF/spring/xpath-activity-ui-context.xml b/taverna-xpath-activity-ui/src/main/resources/META-INF/spring/xpath-activity-ui-context.xml
deleted file mode 100644
index 0116b2e..0000000
--- a/taverna-xpath-activity-ui/src/main/resources/META-INF/spring/xpath-activity-ui-context.xml
+++ /dev/null
@@ -1,49 +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="XPathActivityIcon"
-		class="net.sf.taverna.t2.activities.xpath.ui.servicedescription.XPathActivityIcon">
-		<property name="colourManager" ref="colourManager" />
-	</bean>
-
-	<bean id="XPathTemplateService"
-		class="net.sf.taverna.t2.activities.xpath.ui.servicedescription.XPathTemplateService" />
-
-	<bean id="ConfigureXPathActivityMenuAction"
-		class="net.sf.taverna.t2.activities.xpath.ui.contextualview.ConfigureXPathActivityMenuAction">
-		<property name="editManager" ref="editManager" />
-		<property name="fileManager" ref="fileManager" />
-		<property name="activityIconManager" ref="activityIconManager" />
-		<property name="serviceDescriptionRegistry" ref="serviceDescriptionRegistry" />
-		<property name="serviceRegistry" ref="serviceRegistry" />
-	</bean>
-	<bean id="AddXPathTemplateAction"
-		class="net.sf.taverna.t2.activities.xpath.ui.menu.AddXPathTemplateAction">
-		<property name="editManager" ref="editManager" />
-		<property name="menuManager" ref="menuManager" />
-		<property name="selectionManager" ref="selectionManager" />
-		<property name="activityIconManager" ref="activityIconManager" />
-		<property name="serviceRegistry" ref="serviceRegistry" />
-	</bean>
-	<bean id="AddXPathTemplateMenuAction"
-		class="net.sf.taverna.t2.activities.xpath.ui.menu.AddXPathTemplateMenuAction">
-		<property name="editManager" ref="editManager" />
-		<property name="menuManager" ref="menuManager" />
-		<property name="selectionManager" ref="selectionManager" />
-		<property name="activityIconManager" ref="activityIconManager" />
-		<property name="serviceRegistry" ref="serviceRegistry" />
-	</bean>
-
-	<bean id="XPathActivityMainContextViewFactory"
-		class="net.sf.taverna.t2.activities.xpath.ui.contextualview.XPathActivityMainContextViewFactory">
-		<property name="editManager" ref="editManager" />
-		<property name="fileManager" ref="fileManager" />
-		<property name="activityIconManager" ref="activityIconManager" />
-		<property name="serviceDescriptionRegistry" ref="serviceDescriptionRegistry" />
-		<property name="serviceRegistry" ref="serviceRegistry" />
-	</bean>
-
-</beans>
diff --git a/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/arrow_right.png b/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/arrow_right.png
deleted file mode 100644
index 2cf15f1..0000000
--- a/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/arrow_right.png
+++ /dev/null
Binary files differ
diff --git a/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/famfamfam_silk/accept.png b/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/famfamfam_silk/accept.png
deleted file mode 100644
index 89c8129..0000000
--- a/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/famfamfam_silk/accept.png
+++ /dev/null
Binary files differ
diff --git a/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/famfamfam_silk/exclamation.png b/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/famfamfam_silk/exclamation.png
deleted file mode 100644
index c37bd06..0000000
--- a/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/famfamfam_silk/exclamation.png
+++ /dev/null
Binary files differ
diff --git a/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/famfamfam_silk/help.png b/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/famfamfam_silk/help.png
deleted file mode 100644
index 5c87017..0000000
--- a/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/famfamfam_silk/help.png
+++ /dev/null
Binary files differ
diff --git a/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/famfamfam_silk/page_white_code.png b/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/famfamfam_silk/page_white_code.png
deleted file mode 100644
index 0c76bd1..0000000
--- a/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/famfamfam_silk/page_white_code.png
+++ /dev/null
Binary files differ
diff --git a/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/famfamfam_silk/tag.png b/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/famfamfam_silk/tag.png
deleted file mode 100644
index e093032..0000000
--- a/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/famfamfam_silk/tag.png
+++ /dev/null
Binary files differ
diff --git "a/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/famfamfam_silk/text_linespacing \050collapse\051.png" "b/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/famfamfam_silk/text_linespacing \050collapse\051.png"
deleted file mode 100644
index ff09e31..0000000
--- "a/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/famfamfam_silk/text_linespacing \050collapse\051.png"
+++ /dev/null
Binary files differ
diff --git a/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/famfamfam_silk/text_linespacing.png b/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/famfamfam_silk/text_linespacing.png
deleted file mode 100644
index 1a91cbd..0000000
--- a/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/famfamfam_silk/text_linespacing.png
+++ /dev/null
Binary files differ
diff --git a/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/folds/fold.png b/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/folds/fold.png
deleted file mode 100644
index a13d280..0000000
--- a/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/folds/fold.png
+++ /dev/null
Binary files differ
diff --git a/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/folds/unfold.png b/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/folds/unfold.png
deleted file mode 100644
index 589e2c9..0000000
--- a/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/folds/unfold.png
+++ /dev/null
Binary files differ
diff --git a/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/xpath_attribute.png b/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/xpath_attribute.png
deleted file mode 100644
index 3fa7811..0000000
--- a/taverna-xpath-activity-ui/src/main/resources/net/sf/taverna/t2/activities/xpath/ui/servicedescription/xpath_attribute.png
+++ /dev/null
Binary files differ
diff --git a/taverna-xpath-activity-ui/src/test/java/Dom4JTest.java b/taverna-xpath-activity-ui/src/test/java/Dom4JTest.java
deleted file mode 100644
index 6d6efd7..0000000
--- a/taverna-xpath-activity-ui/src/test/java/Dom4JTest.java
+++ /dev/null
@@ -1,71 +0,0 @@
-import java.util.List;

-

-import org.dom4j.Document;

-import org.dom4j.DocumentHelper;

-import org.dom4j.Node;

-import org.dom4j.XPath;

-

-

-public class Dom4JTest

-{

-  private static void testDom4j() throws Exception

-  {

-    String strDoc = 

-      "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" +

-      "<services>" +

-        "<parameters>" +

-          "<filters>" +

-          "</filters>" +

-          "<query urlKey=\"q\"></query>" +

-          "<sortBy urlKey=\"sort_by\" urlValue=\"created\">Created at date</sortBy>" +

-          "<sortOrder urlKey=\"sort_order\" urlValue=\"desc\">Descending</sortOrder>" +

-          "<page urlKey=\"page\">1</page>" +

-          "<pageSize urlKey=\"per_page\">10</pageSize>" +

-        "</parameters>" +

-        "<statistics>" +

-          "<pages>170</pages>" +

-          "<results>1695</results>" +

-          "<total>1695</total>" +

-        "</statistics>" +

-        "<results>" +

-          "<services>" +

-            "<service name=\"1\" />" +

-            "<service name=\"2\" />" +

-            "<service name=\"3\" />" +

-            "<service name=\"4\" />" +

-          "</services>" +

-        "</results>" +

-      "</services>";

-    

-    

-    Document doc = DocumentHelper.parseText(strDoc);

-    

-//    // Pretty print the document to System.out

-//    OutputFormat format = OutputFormat.createPrettyPrint();

-//    XMLWriter writer = new XMLWriter( System.out, format );

-//    writer.write( doc );

-

-    

-    XPath expr = DocumentHelper.createXPath("//pages");

-    

-    List<Node> matchingNodes = expr.selectNodes(doc);

-    

-//    List<Node> matchingNodes = doc.selectNodes("/services/parameters");

-    

-    

-//    System.out.println("\n\n");

-    System.out.println(matchingNodes.size());

-    for (Node n : matchingNodes) {

-      System.out.println(n.asXML());

-    }

-  }

-  

-  /**

-   * @param args

-   * @throws Exception 

-   */ 

-  public static void main(String[] args) throws Exception {

-    testDom4j();

-  }

-

-}