Attempt to update taverna-external-tool-activity-ui to T3
diff --git a/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/actions/ExternalToolActivityConfigureAction.java b/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/actions/ExternalToolActivityConfigureAction.java
index 5d57280..1637f6c 100644
--- a/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/actions/ExternalToolActivityConfigureAction.java
+++ b/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/actions/ExternalToolActivityConfigureAction.java
@@ -24,6 +24,8 @@
 import org.apache.taverna.activities.externaltool.ExternalToolActivity;
 import org.apache.taverna.activities.externaltool.ExternalToolActivityConfigurationBean;
 import org.apache.taverna.activities.externaltool.views.ExternalToolConfigView;
+import org.apache.taverna.scufl2.api.activity.Activity;
+import org.apache.taverna.servicedescriptions.ServiceDescriptionRegistry;
 import org.apache.taverna.workbench.activityicons.ActivityIconManager;
 import org.apache.taverna.workbench.edits.EditManager;
 import org.apache.taverna.workbench.file.FileManager;
@@ -45,9 +47,9 @@
 	private final EditManager editManager;
 	private final FileManager fileManager;
 
-	public ExternalToolActivityConfigureAction(ExternalToolActivity activity, Frame owner,
-			EditManager editManager, FileManager fileManager, ActivityIconManager activityIconManager) {
-		super(activity, activityIconManager);
+	public ExternalToolActivityConfigureAction(Activity activity, Frame owner,
+			EditManager editManager, FileManager fileManager, ActivityIconManager activityIconManager, ServiceDescriptionRegistry serviceDescriptionRegistry) {
+		super(activity, activityIconManager, serviceDescriptionRegistry);
 		this.editManager = editManager;
 		this.fileManager = fileManager;
 		putValue(Action.NAME, "Configure tool invocation");
@@ -65,11 +67,11 @@
 			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);
+					getActivity());
+			
+			final ActivityConfigurationDialog dialog = new ActivityConfigurationDialog(getActivity(), externalToolConfigView, editManager);
 
 			ActivityConfigurationAction.setDialog(getActivity(), dialog, fileManager);
 		}
diff --git a/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/configuration/ToolInvocationConfiguration.java b/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/configuration/ToolInvocationConfiguration.java
index 73a4de5..eba6252 100644
--- a/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/configuration/ToolInvocationConfiguration.java
+++ b/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/configuration/ToolInvocationConfiguration.java
@@ -23,6 +23,7 @@
 import java.util.Map;
 
 import org.apache.taverna.configuration.AbstractConfigurable;
+import org.apache.taverna.configuration.ConfigurationManager;
 
 
 /**
@@ -31,17 +32,12 @@
  */
 public class ToolInvocationConfiguration extends AbstractConfigurable {
 
-	private static ToolInvocationConfiguration instance;
+	public ToolInvocationConfiguration(ConfigurationManager configurationManager) {
+		super(configurationManager);
+	}
 
 	private Map<String, String> defaultPropertyMap;
 
-	public static ToolInvocationConfiguration getInstance() {
-		if (instance == null) {
-			instance = new ToolInvocationConfiguration();
-		}
-		return instance;
-	}
-
 	@Override
 	public String getCategory() {
 		return "general";
diff --git a/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/manager/GroupPanel.java b/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/manager/GroupPanel.java
index f2f941c..588f921 100644
--- a/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/manager/GroupPanel.java
+++ b/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/manager/GroupPanel.java
@@ -39,14 +39,13 @@
 
 	private static final long serialVersionUID = 1L;
 
-	private JTextField groupNameField;
+	private final JTextField groupNameField;
+	private final JComboBox mechanismComboBox;
+	private final InvocationGroupManager manager;
 
-	private JComboBox mechanismComboBox;
-
-	private static InvocationGroupManager manager = InvocationGroupManagerImpl.getInstance();
-
-	public GroupPanel(Object[] mechanisms) {
+	public GroupPanel(Object[] mechanisms, InvocationGroupManager manager) {		
 		super(new GridBagLayout());
+		this.manager = manager;
 
 		groupNameField = new JTextField();
 
diff --git a/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/manager/InvocationGroupManagerShutdownHook.java b/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/manager/InvocationGroupManagerShutdownHook.java
index 198919b..58a37e2 100644
--- a/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/manager/InvocationGroupManagerShutdownHook.java
+++ b/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/manager/InvocationGroupManagerShutdownHook.java
@@ -28,7 +28,14 @@
  *
  */
 public class InvocationGroupManagerShutdownHook implements ShutdownSPI {
+	
+	private final InvocationGroupManager manager;
 
+	public InvocationGroupManagerShutdownHook(InvocationGroupManager manager) {
+		this.manager = manager;
+		
+	}
+	
 	/* (non-Javadoc)
 	 * @see net.sf.taverna.t2.workbench.ShutdownSPI#positionHint()
 	 */
@@ -42,7 +49,6 @@
 	 */
 	@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/org/apache/taverna/activities/externaltool/manager/InvocationGroupManagerStartupHook.java b/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/manager/InvocationGroupManagerStartupHook.java
index 27b201a..ea32641 100644
--- a/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/manager/InvocationGroupManagerStartupHook.java
+++ b/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/manager/InvocationGroupManagerStartupHook.java
@@ -31,12 +31,18 @@
  */

 public class InvocationGroupManagerStartupHook implements StartupSPI {

 

+	private final InvocationGroupManager manager;

+

+	InvocationGroupManagerStartupHook(InvocationGroupManager manager) {

+		this.manager = manager; 		

+	}

+	

 	public int positionHint() {

 		return 900;

 	}

 

 	public boolean startup() {

-		InvocationGroupManagerImpl.getInstance().loadInvocations();

+		manager.loadInvocations();

 		return true;

 	}

 

diff --git a/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/manager/MechanismPanel.java b/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/manager/MechanismPanel.java
index 3c8e1c5..ef362ee 100644
--- a/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/manager/MechanismPanel.java
+++ b/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/manager/MechanismPanel.java
@@ -37,9 +37,9 @@
 
 	private static final long serialVersionUID = 1L;
 
-	private JTextField mechanismNameField;
+	private final JTextField mechanismNameField;
 
-	private JComboBox mechanismTypeSelector;
+	private final JComboBox mechanismTypeSelector;
 
 	public MechanismPanel(List<InvocationMechanismEditor<?>> invocationMechanismEditors) {
 		super(new GridBagLayout());
diff --git a/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/manager/ToolInvocationConfigurationPanel.java b/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/manager/ToolInvocationConfigurationPanel.java
index 4b1ecd1..ca487e7 100644
--- a/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/manager/ToolInvocationConfigurationPanel.java
+++ b/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/manager/ToolInvocationConfigurationPanel.java
@@ -70,16 +70,16 @@
 
 	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 InvocationGroupManager manager;
 
 	private final List<InvocationMechanismEditor<?>> invocationMechanismEditors;
 
-	private JTextArea headerText;
+	private final JTextArea headerText;
 
 	private static String EXPLICIT_LOCATIONS = "explicit locations";
 	private static String SYMBOLIC_LOCATIONS = "symbolic locations";
 
-	private List<MechanismCreator> mechanismCreators;
+	private final List<MechanismCreator> mechanismCreators;
 
 	JList locationList = new JList();
 
@@ -89,10 +89,11 @@
 			SYMBOLIC_LOCATIONS });
 
 	public ToolInvocationConfigurationPanel(List<MechanismCreator> mechanismCreators,
-			List<InvocationMechanismEditor<?>> invocationMechanismEditors) {
+			List<InvocationMechanismEditor<?>> invocationMechanismEditors, InvocationGroupManager manager) {
 		super();
 		this.mechanismCreators = mechanismCreators;
 		this.invocationMechanismEditors = invocationMechanismEditors;
+		this.manager = manager;
 		manager.addObserver(this);
 
 		this.setLayout(new GridBagLayout());
@@ -241,7 +242,7 @@
 						usedGroupNames.add(g.getName());
 					}
 
-					GroupPanel inputPanel = new GroupPanel(mechanismListModel.toArray());
+					GroupPanel inputPanel = new GroupPanel(mechanismListModel.toArray(), manager);
 
 					ValidatingUserInputDialog vuid = new ValidatingUserInputDialog(
 							"Add symbolic location", inputPanel);
@@ -291,7 +292,7 @@
 								JOptionPane.PLAIN_MESSAGE, null);
 						if (answer == JOptionPane.OK_OPTION) {
 							ime.updateInvocationMechanism();
-							InvocationGroupManagerImpl.getInstance().mechanismChanged(newMechanism);
+							manager.mechanismChanged(newMechanism);
 						}
 						locationList.setSelectedValue(newMechanism, true);
 					}
@@ -356,7 +357,7 @@
 								JOptionPane.PLAIN_MESSAGE, null);
 						if (answer == JOptionPane.OK_OPTION) {
 							ime.updateInvocationMechanism();
-							InvocationGroupManagerImpl.getInstance().mechanismChanged(toEdit);
+							manager.mechanismChanged(toEdit);
 						}
 					}
 				}
diff --git a/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/manager/ToolInvocationConfigurationUIFactory.java b/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/manager/ToolInvocationConfigurationUIFactory.java
index 8c12a9e..849416f 100644
--- a/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/manager/ToolInvocationConfigurationUIFactory.java
+++ b/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/manager/ToolInvocationConfigurationUIFactory.java
@@ -24,6 +24,7 @@
 import javax.swing.JPanel;
 
 import org.apache.taverna.configuration.Configurable;
+import org.apache.taverna.configuration.ConfigurationManager;
 import org.apache.taverna.configuration.ConfigurationUIFactory;
 
 import org.apache.taverna.activities.externaltool.configuration.ToolInvocationConfiguration;
@@ -37,8 +38,9 @@
 
 	private List<MechanismCreator> mechanismCreators;
 	private List<InvocationMechanismEditor<?>> invocationMechanismEditors;
-
 	private ToolInvocationConfigurationPanel configPanel;
+	private ConfigurationManager configurationManager;
+	private InvocationGroupManager invocationGroupManager;
 
 	@Override
 	public boolean canHandle(String uuid) {
@@ -47,14 +49,14 @@
 
 	@Override
 	public Configurable getConfigurable() {
-		return ToolInvocationConfiguration.getInstance();
+		return new ToolInvocationConfiguration(configurationManager);
 	}
 
 	@Override
 	public JPanel getConfigurationPanel() {
 		if (configPanel == null) {
 			configPanel = new ToolInvocationConfigurationPanel(mechanismCreators,
-					invocationMechanismEditors);
+					invocationMechanismEditors, getInvocationGroupManager());
 		}
 		return configPanel;
 	}
@@ -68,4 +70,20 @@
 		this.invocationMechanismEditors = invocationMechanismEditors;
 	}
 
+	public ConfigurationManager getConfigurationManager() {
+		return configurationManager;
+	}
+
+	public void setConfigurationManager(ConfigurationManager configurationManager) {
+		this.configurationManager = configurationManager;
+	}
+
+	public InvocationGroupManager getInvocationGroupManager() {
+		return invocationGroupManager;
+	}
+
+	public void setInvocationGroupManager(InvocationGroupManager invocationGroupManager) {
+		this.invocationGroupManager = invocationGroupManager;
+	}
+
 }
diff --git a/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/menu/AddExternalToolContextualMenuAction.java b/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/menu/AddExternalToolContextualMenuAction.java
index 37cc277..1ea271a 100644
--- a/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/menu/AddExternalToolContextualMenuAction.java
+++ b/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/menu/AddExternalToolContextualMenuAction.java
@@ -22,8 +22,9 @@
 import javax.swing.AbstractAction;

 import javax.swing.Action;

 

-import org.apache.taverna.activities.externaltool.ExternalToolActivity;

+import org.apache.log4j.Logger;

 import org.apache.taverna.activities.externaltool.servicedescriptions.ExternalToolTemplateServiceDescription;

+import org.apache.taverna.services.ServiceRegistry;

 import org.apache.taverna.ui.menu.AbstractContextualMenuAction;

 import org.apache.taverna.ui.menu.MenuManager;

 import org.apache.taverna.workbench.activityicons.ActivityIconManager;

@@ -31,9 +32,7 @@
 import org.apache.taverna.workbench.selection.SelectionManager;

 import org.apache.taverna.workbench.ui.workflowview.WorkflowView;

 import org.apache.taverna.workflowmodel.Dataflow;

-

-import org.apache.log4j.Logger;

-

+import static org.apache.taverna.activities.externaltool.servicedescriptions.ExternalToolServiceDescription.TOOL_ACTIVITY_URI;

 /**

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

  *

@@ -43,7 +42,7 @@
  */

 @SuppressWarnings("serial")

 public class AddExternalToolContextualMenuAction extends AbstractContextualMenuAction {

-

+	

 	private static final String ADD_EXTERNAL_TOOL = "Tool";

 

 	private static final URI insertSection = URI

@@ -59,6 +58,8 @@
 

 	private ActivityIconManager activityIconManager;

 

+	private ServiceRegistry serviceRegistry;

+

 	public AddExternalToolContextualMenuAction() {

 		super(insertSection, 900);

 	}

@@ -75,15 +76,17 @@
 	}

 

 	protected class AddExternalToolAction extends AbstractAction {

-		AddExternalToolAction() {

-			super(ADD_EXTERNAL_TOOL, activityIconManager.iconForActivity(

-					new ExternalToolActivity()));

+

+

+		AddExternalToolAction() {			

+			super(ADD_EXTERNAL_TOOL, 

+					activityIconManager.iconForActivity(TOOL_ACTIVITY_URI));

 		}

 

 		public void actionPerformed(ActionEvent e) {

 			WorkflowView.importServiceDescription(

 					ExternalToolTemplateServiceDescription.getServiceDescription(), false,

-					editManager, menuManager, selectionManager);

+					editManager, menuManager, selectionManager, getServiceRegistry());

 		}

 	}

 

@@ -103,4 +106,12 @@
 		this.activityIconManager = activityIconManager;

 	}

 

+	public ServiceRegistry getServiceRegistry() {

+		return serviceRegistry;

+	}

+

+	public void setServiceRegistry(ServiceRegistry serviceRegistry) {

+		this.serviceRegistry = serviceRegistry;

+	}

+

 }

diff --git a/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/menu/AddExternalToolMenuAction.java b/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/menu/AddExternalToolMenuAction.java
index 0b73a84..f0b9f5c 100644
--- a/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/menu/AddExternalToolMenuAction.java
+++ b/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/menu/AddExternalToolMenuAction.java
@@ -21,11 +21,13 @@
 import java.awt.event.KeyEvent;

 import java.net.URI;

 

+import javax.swing.AbstractAction;

 import javax.swing.Action;

 import javax.swing.KeyStroke;

 

-import org.apache.taverna.activities.externaltool.ExternalToolActivity;

-import org.apache.taverna.activities.externaltool.servicedescriptions.ExternalToolTemplateServiceDescription;

+import org.apache.log4j.Logger;

+import org.apache.taverna.servicedescriptions.ServiceDescriptionRegistry;

+import org.apache.taverna.services.ServiceRegistry;

 import org.apache.taverna.ui.menu.AbstractMenuAction;

 import org.apache.taverna.ui.menu.DesignOnlyAction;

 import org.apache.taverna.ui.menu.MenuManager;

@@ -34,9 +36,7 @@
 import org.apache.taverna.workbench.selection.SelectionManager;

 import org.apache.taverna.workbench.ui.workflowview.WorkflowView;

 import org.apache.taverna.workbench.views.graph.menu.InsertMenu;

-

-import org.apache.log4j.Logger;

-

+import static org.apache.taverna.activities.externaltool.servicedescriptions.ExternalToolServiceDescription.TOOL_ACTIVITY_URI;

 /**

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

  *

@@ -46,7 +46,7 @@
  */

 @SuppressWarnings("serial")

 public class AddExternalToolMenuAction extends AbstractMenuAction {

-

+	

 	private static final String ADD_EXTERNAL_TOOL = "Tool";

 

 	private static final URI ADD_EXTERNAL_TOOL_URI = URI

@@ -58,6 +58,8 @@
 	private EditManager editManager;

 	private MenuManager menuManager;

 	private SelectionManager selectionManager;

+	private ServiceDescriptionRegistry serviceDescriptionRegistry;

+	private ServiceRegistry serviceRegistry;

 

 	private ActivityIconManager activityIconManager;

 

@@ -71,11 +73,13 @@
 		return new AddExternalToolAction();

 	}

 

-	protected class AddExternalToolAction extends DesignOnlyAction {

+	protected class AddExternalToolAction extends AbstractAction implements DesignOnlyAction {

+

+

 		AddExternalToolAction () {

 			super ();

 			putValue(SMALL_ICON, activityIconManager.iconForActivity(

-					new ExternalToolActivity()));

+					TOOL_ACTIVITY_URI));

 			putValue(NAME, ADD_EXTERNAL_TOOL);

 			putValue(SHORT_DESCRIPTION, "Tool");

 			putValue(Action.ACCELERATOR_KEY,

@@ -83,8 +87,11 @@
 		}

 

 		public void actionPerformed(ActionEvent e) {

-			WorkflowView.importServiceDescription(ExternalToolTemplateServiceDescription.getServiceDescription(),

-			false, editManager, menuManager, selectionManager);

+			

+			getServiceDescriptionRegistry().getServiceDescription(TOOL_ACTIVITY_URI);			

+			WorkflowView.importServiceDescription(getServiceDescriptionRegistry()

+					.getServiceDescription(TOOL_ACTIVITY_URI), false,

+					editManager, menuManager, selectionManager, getServiceRegistry());

 		}

 	}

 

@@ -104,4 +111,20 @@
 		this.activityIconManager = activityIconManager;

 	}

 

+	public ServiceDescriptionRegistry getServiceDescriptionRegistry() {

+		return serviceDescriptionRegistry;

+	}

+

+	public void setServiceDescriptionRegistry(ServiceDescriptionRegistry serviceDescriptionRegistry) {

+		this.serviceDescriptionRegistry = serviceDescriptionRegistry;

+	}

+

+	public ServiceRegistry getServiceRegistry() {

+		return serviceRegistry;

+	}

+

+	public void setServiceRegistry(ServiceRegistry serviceRegistry) {

+		this.serviceRegistry = serviceRegistry;

+	}

+

 }

diff --git a/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/menu/ConfigureExternalToolMenuAction.java b/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/menu/ConfigureExternalToolMenuAction.java
index 963322f..868f638 100644
--- a/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/menu/ConfigureExternalToolMenuAction.java
+++ b/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/menu/ConfigureExternalToolMenuAction.java
@@ -17,10 +17,13 @@
  * limitations under the License.
  */
 
+import java.net.URI;
+
 import javax.swing.Action;
 
 import org.apache.taverna.activities.externaltool.ExternalToolActivity;
 import org.apache.taverna.activities.externaltool.actions.ExternalToolActivityConfigureAction;
+import org.apache.taverna.servicedescriptions.ServiceDescriptionRegistry;
 import org.apache.taverna.workbench.activityicons.ActivityIconManager;
 import org.apache.taverna.workbench.activitytools.AbstractConfigureActivityMenuAction;
 import org.apache.taverna.workbench.edits.EditManager;
@@ -32,20 +35,22 @@
  * @author Hajo Nils Krabbenhoeft
  */
 public class ConfigureExternalToolMenuAction extends
-		AbstractConfigureActivityMenuAction<ExternalToolActivity> {
+		AbstractConfigureActivityMenuAction {
 
 	private EditManager editManager;
 	private FileManager fileManager;
 	private ActivityIconManager activityIconManager;
-
+	private ServiceDescriptionRegistry serviceDescriptionRegistry;
+	public static final URI TOOL_ACTIVITY_URI = URI.create("http://ns.taverna.org.uk/2010/activity/tool");
+	
 	public ConfigureExternalToolMenuAction() {
-		super(ExternalToolActivity.class);
+		super(TOOL_ACTIVITY_URI);
 	}
 
 	@Override
 	protected Action createAction() {
 		ExternalToolActivityConfigureAction configAction = new ExternalToolActivityConfigureAction(
-				findActivity(), getParentFrame(), editManager, fileManager, activityIconManager);
+				findActivity(), getParentFrame(), editManager, fileManager, activityIconManager, serviceDescriptionRegistry);
 		addMenuDots(configAction);
 		return configAction;
 	}
@@ -62,4 +67,8 @@
 		this.activityIconManager = activityIconManager;
 	}
 
+	public void setServiceDescriptionRegistry(ServiceDescriptionRegistry serviceDescriptionRegistry) {
+		this.serviceDescriptionRegistry = serviceDescriptionRegistry;
+	}
+
 }
diff --git a/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/servicedescriptions/ExternalToolActivityIcon.java b/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/servicedescriptions/ExternalToolActivityIcon.java
index 8b8b5e6..d5a706f 100644
--- a/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/servicedescriptions/ExternalToolActivityIcon.java
+++ b/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/servicedescriptions/ExternalToolActivityIcon.java
@@ -18,6 +18,7 @@
  */
 
 import java.awt.Color;
+import java.net.URI;
 
 import javax.swing.Icon;
 import javax.swing.ImageIcon;
@@ -26,6 +27,7 @@
 import org.apache.taverna.workbench.activityicons.ActivityIconSPI;
 import org.apache.taverna.workbench.configuration.colour.ColourManager;
 import org.apache.taverna.workflowmodel.processor.activity.Activity;
+import static org.apache.taverna.activities.externaltool.servicedescriptions.ExternalToolServiceDescription.TOOL_ACTIVITY_URI;
 
 /**
  * This class provides an icon for the use case activity.
@@ -33,7 +35,7 @@
  * @author Hajo Nils Krabbenhoeft
  */
 public class ExternalToolActivityIcon implements ActivityIconSPI {
-
+		
 	private static final String PROCESSOR_COLOUR_STRING = "#F28C55";
 
 	private static Icon icon;
@@ -45,10 +47,6 @@
 			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"));
@@ -66,4 +64,17 @@
 				Color.decode(PROCESSOR_COLOUR_STRING));
 	}
 
+	@Override
+	public int canProvideIconScore(URI uri) {
+		if (TOOL_ACTIVITY_URI.equals(uri)) {
+			return DEFAULT_ICON + 1;
+		}
+		return NO_ICON;		
+	}
+
+	@Override
+	public Icon getIcon(URI uri) {
+		return getExternalToolIcon();
+	}
+
 }
diff --git a/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/servicedescriptions/ExternalToolServiceDescription.java b/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/servicedescriptions/ExternalToolServiceDescription.java
index fb793f6..6878c94 100644
--- a/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/servicedescriptions/ExternalToolServiceDescription.java
+++ b/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/servicedescriptions/ExternalToolServiceDescription.java
@@ -18,6 +18,7 @@
  */
 
 import java.net.MalformedURLException;
+import java.net.URI;
 import java.net.URL;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -35,6 +36,7 @@
 import org.apache.taverna.servicedescriptions.ServiceDescription;
 import org.apache.taverna.workflowmodel.processor.activity.Activity;
 import org.apache.taverna.activities.externaltool.desc.ToolDescription;
+import static org.apache.taverna.activities.externaltool.servicedescriptions.ExternalToolServiceDescription.TOOL_ACTIVITY_URI;
 
 /**
  * ExternalToolServiceDescription stores the repository URL and the use case id so
@@ -42,13 +44,13 @@
  * 
  * @author Hajo Nils Krabbenhoeft
  */
-public class ExternalToolServiceDescription extends ServiceDescription<ExternalToolActivityConfigurationBean> {
-	
+public class ExternalToolServiceDescription extends ServiceDescription {
+
 	private static Logger logger = Logger
 	.getLogger(ExternalToolServiceDescription.class);
 
 	
-	private static InvocationGroupManager manager = InvocationGroupManagerImpl.getInstance();
+	private InvocationGroupManager invocationGroupManager;
 
 	private String repositoryUrl;
 	private String externaltoolid;
@@ -95,7 +97,7 @@
 		bean.setRepositoryUrl(repositoryUrl);
 		bean.setExternaltoolid(externaltoolid);
 		bean.setToolDescription(toolDescription);
-		bean.setMechanism(manager.getDefaultMechanism());
+		bean.setMechanism(getInvocationGroupManager().getDefaultMechanism());
 
 		return bean;
 	}
@@ -140,4 +142,17 @@
 		this.toolDescription = tooldesc;
 	}
 
+	@Override
+	public URI getActivityType() {
+		return TOOL_ACTIVITY_URI;
+	}
+
+	public InvocationGroupManager getInvocationGroupManager() {
+		return invocationGroupManager;
+	}
+
+	public void setInvocationGroupManager(InvocationGroupManager invocationGroupManager) {
+		this.invocationGroupManager = invocationGroupManager;
+	}
+
 }
diff --git a/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/servicedescriptions/ExternalToolTemplateServiceDescription.java b/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/servicedescriptions/ExternalToolTemplateServiceDescription.java
index de3bcee..6c70f20 100644
--- a/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/servicedescriptions/ExternalToolTemplateServiceDescription.java
+++ b/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/servicedescriptions/ExternalToolTemplateServiceDescription.java
@@ -32,14 +32,16 @@
 import org.apache.taverna.activities.externaltool.manager.impl.InvocationGroupManagerImpl;
 import org.apache.taverna.servicedescriptions.AbstractTemplateService;
 import org.apache.taverna.servicedescriptions.ServiceDescription;
+import org.apache.taverna.servicedescriptions.ServiceDescriptionProvider;
 import org.apache.taverna.workflowmodel.processor.activity.Activity;
+import static org.apache.taverna.activities.externaltool.servicedescriptions.ExternalToolServiceDescription.TOOL_ACTIVITY_URI;
 
 /**
  * @author alanrw
  *
  */
 public class ExternalToolTemplateServiceDescription extends
-		AbstractTemplateService<ExternalToolActivityConfigurationBean> {
+		AbstractTemplateService {
 	
 	private static final URI providerId = URI
 	.create("http://taverna.sf.net/2010/service-provider/external-tool");
@@ -90,4 +92,9 @@
 		return EXTERNAL_TOOL;
 	}
 
+	@Override
+	public ServiceDescriptionProvider newInstance() {
+		return new ExternalToolTemplateServiceDescription();
+	}
+
 }
diff --git a/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/views/ExternalToolConfigView.java b/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/views/ExternalToolConfigView.java
index 2660237..df55a6c 100644
--- a/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/views/ExternalToolConfigView.java
+++ b/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/views/ExternalToolConfigView.java
@@ -51,6 +51,7 @@
 import org.apache.taverna.lang.ui.KeywordDocument;
 import org.apache.taverna.lang.ui.LinePainter;
 import org.apache.taverna.lang.ui.NoWrapEditorKit;
+import org.apache.taverna.scufl2.api.activity.Activity;
 import org.apache.taverna.workbench.ui.views.contextualviews.activity.ActivityConfigurationPanel;
 
 import org.apache.log4j.Logger;
@@ -76,7 +77,7 @@
 @SuppressWarnings("serial")
 public class ExternalToolConfigView
 		extends
-		ActivityConfigurationPanel<ExternalToolActivity, ExternalToolActivityConfigurationBean> {
+		ActivityConfigurationPanel {
 	
 	private static final Color LINE_COLOR = new Color(225,225,225);
 
@@ -146,10 +147,10 @@
 	 * {@link ExternalToolActivityConfigurationBean}, sets the layout and calls
 	 * {@link #initialise()} to get the view going
 	 * 
-	 * @param activity
+	 * @param activity2
 	 *            the {@link ExternalToolActivity} that the view is over
 	 */
-	public ExternalToolConfigView(ExternalToolActivity activity) {
+	public ExternalToolConfigView(Activity activity) {
 		this.activity = activity;
 		ExternalToolActivityHealthChecker.updateLocation(activity.getConfiguration());
 		configuration = (ExternalToolActivityConfigurationBean) cloneBean(activity
diff --git a/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/views/InvocationPanel.java b/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/views/InvocationPanel.java
index 3edd385..6f81348 100644
--- a/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/views/InvocationPanel.java
+++ b/taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/views/InvocationPanel.java
@@ -41,11 +41,13 @@
 import javax.swing.SwingUtilities;
 import javax.swing.border.EmptyBorder;
 
+import org.apache.log4j.Logger;
 import org.apache.taverna.activities.externaltool.ExternalToolActivityConfigurationBean;
 import org.apache.taverna.activities.externaltool.ExternalToolActivityHealthChecker;
 import org.apache.taverna.activities.externaltool.configuration.ToolInvocationConfiguration;
 import org.apache.taverna.activities.externaltool.manager.InvocationGroup;
 import org.apache.taverna.activities.externaltool.manager.InvocationGroupAddedEvent;
+import org.apache.taverna.activities.externaltool.manager.InvocationGroupManager;
 import org.apache.taverna.activities.externaltool.manager.InvocationGroupRemovedEvent;
 import org.apache.taverna.activities.externaltool.manager.InvocationManagerEvent;
 import org.apache.taverna.activities.externaltool.manager.InvocationMechanism;
@@ -53,12 +55,11 @@
 import org.apache.taverna.activities.externaltool.manager.InvocationMechanismRemovedEvent;
 import org.apache.taverna.activities.externaltool.manager.ToolInvocationConfigurationPanel;
 import org.apache.taverna.activities.externaltool.manager.impl.InvocationGroupManagerImpl;
+import org.apache.taverna.configuration.ConfigurationManager;
 import org.apache.taverna.lang.observer.Observable;
 import org.apache.taverna.lang.observer.Observer;
 import org.apache.taverna.lang.ui.DeselectingButton;
-//import net.sf.taverna.t2.workbench.ui.impl.configuration.ui.T2ConfigurationFrame;
-
-import org.apache.log4j.Logger;
+import org.apache.taverna.workbench.configuration.workbench.ui.T2ConfigurationFrame;
 
 /**
  * @author alanrw
@@ -73,7 +74,7 @@
 	private DefaultComboBoxModel mechanismSelectionModel = new DefaultComboBoxModel();
 	private DefaultComboBoxModel groupSelectionModel = new DefaultComboBoxModel();
 
-	private static InvocationGroupManagerImpl manager = InvocationGroupManagerImpl.getInstance();
+	private InvocationGroupManager manager;
 	
 	private static Logger logger = Logger
 	.getLogger(InvocationPanel.class);
@@ -84,13 +85,18 @@
 	private JButton manageInvocation;
 	private ButtonGroup mechanismOrGroup;
 	private ExternalToolActivityConfigurationBean configuration;
+	private T2ConfigurationFrame t2ConfigurationFrame;
+	
 	
 	private ActionListener radioChangeListener;
 	
 	boolean unmanagedShown = false;
+	protected ConfigurationManager configManager;
 
-	public InvocationPanel(ExternalToolActivityConfigurationBean configuration) {
+	public InvocationPanel(ExternalToolActivityConfigurationBean configuration, InvocationGroupManager manager, T2ConfigurationFrame t2ConfigurationFrame) {
 		super();
+		this.manager = manager;
+		this.t2ConfigurationFrame = t2ConfigurationFrame;
 		manager.addObserver(this);
 		
 		mechanismSelection = new JComboBox();
@@ -137,7 +143,7 @@
 	
 	private void populateMechanismList() {
 		InvocationMechanism currentSelection = (InvocationMechanism) mechanismSelection.getSelectedItem();
-		InvocationMechanism[] mechanisms = InvocationGroupManagerImpl.getInstance()
+		InvocationMechanism[] mechanisms = manager
 				.getMechanisms().toArray(new InvocationMechanism[] {});
 		Arrays.sort(mechanisms, new Comparator<InvocationMechanism>() {
 
@@ -160,7 +166,7 @@
 
 	private void populateGroupList() {
 		InvocationGroup currentSelection = (InvocationGroup) groupSelection.getSelectedItem();
-		InvocationGroup[] groups = InvocationGroupManagerImpl.getInstance()
+		InvocationGroup[] groups = manager
 				.getInvocationGroups().toArray(new InvocationGroup[] {});
 		Arrays.sort(groups, new Comparator<InvocationGroup>() {
 
@@ -224,7 +230,8 @@
 
 	private boolean isUnmanaged(
 			ExternalToolActivityConfigurationBean configuration2) {
-		return (!ExternalToolActivityHealthChecker.updateLocation(configuration2));
+		ExternalToolActivityHealthChecker healthChecker = new ExternalToolActivityHealthChecker();
+		return (!healthChecker.updateLocation(configuration2));
 	}
 
 	private void initializeSelectability() {
@@ -343,8 +350,8 @@
 				new AbstractAction() {
 
 			@Override
-			public void actionPerformed(ActionEvent e) {
-				T2ConfigurationFrame.showConfiguration(ToolInvocationConfiguration.getInstance().getDisplayName());
+			public void actionPerformed(ActionEvent e) {				
+				t2ConfigurationFrame.showConfiguration(new ToolInvocationConfiguration(configManager).getDisplayName());
 			}});
 		buttonPanel.add(manageInvocation); 
 		return buttonPanel;		
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
index ebf5161..135dd4c 100644
--- 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
@@ -53,5 +53,7 @@
 	<reference id="selectionManager" interface="org.apache.taverna.workbench.selection.SelectionManager" />
 	<reference id="activityIconManager" interface="org.apache.taverna.workbench.activityicons.ActivityIconManager" />
 	<reference id="colourManager" interface="org.apache.taverna.workbench.configuration.colour.ColourManager" />
+	<reference id="configurationManager" interface="org.apache.taverna.configuration.ConfigurationManager" />
+	<reference id="invocationGroupManager" interface="org.apache.taverna.activities.externaltool.manager.InvocationGroupManager" />
 
 </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
index 5f7bc95..e2d70a6 100644
--- 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
@@ -24,9 +24,13 @@
 	<bean id="ToolInvocationConfigurationUIFactory" class="org.apache.taverna.activities.externaltool.manager.ToolInvocationConfigurationUIFactory">
 		<property name="mechanismCreators" ref="mechanismCreators" />
 		<property name="invocationMechanismEditors" ref="invocationMechanismEditors" />
+		<property name="configurationManager" ref="configurationManager" />
+		<property name="invocationGroupManager" ref="invocationGroupManager" />
 	</bean>
 
-	<bean id="InvocationGroupManagerStartupHook" class="org.apache.taverna.activities.externaltool.manager.InvocationGroupManagerStartupHook" />
+	<bean id="InvocationGroupManagerStartupHook" class="org.apache.taverna.activities.externaltool.manager.InvocationGroupManagerStartupHook">
+		<constructor-arg name="manager" ref="InvocationGroupManager" />
+	</bean>
 
 	<bean id="ExternalToolActivityIcon" class="org.apache.taverna.activities.externaltool.servicedescriptions.ExternalToolActivityIcon">
 			<property name="colourManager" ref="colourManager" />
@@ -56,7 +60,12 @@
 			<property name="activityIconManager" ref="activityIconManager" />
 	</bean>
 
-	<bean id="InvocationGroupManagerShutdownHook" class="org.apache.taverna.activities.externaltool.manager.InvocationGroupManagerShutdownHook" />
+	<bean id="InvocationGroupManagerShutdownHook" class="org.apache.taverna.activities.externaltool.manager.InvocationGroupManagerShutdownHook">
+		<constructor-arg name="manager" ref="InvocationGroupManager" />
+	</bean>
+
+
+
 
 	<bean id="ExternalToolActivityViewFactory" class="org.apache.taverna.activities.externaltool.views.ExternalToolActivityViewFactory">
 			<property name="editManager" ref="editManager" />