Cleaning up
diff --git a/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/actions/OpenWorkflowRunAction.java b/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/actions/OpenWorkflowRunAction.java
index 1ffe535..9c50e31 100644
--- a/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/actions/OpenWorkflowRunAction.java
+++ b/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/actions/OpenWorkflowRunAction.java
@@ -20,6 +20,11 @@
  ******************************************************************************/
 package net.sf.taverna.t2.workbench.run.actions;
 
+import static javax.swing.JFileChooser.APPROVE_OPTION;
+import static javax.swing.JOptionPane.WARNING_MESSAGE;
+import static javax.swing.JOptionPane.showMessageDialog;
+import static javax.swing.SwingUtilities.invokeLater;
+
 import java.awt.Component;
 import java.awt.event.ActionEvent;
 import java.io.File;
@@ -27,8 +32,6 @@
 
 import javax.swing.AbstractAction;
 import javax.swing.JFileChooser;
-import javax.swing.JOptionPane;
-import javax.swing.SwingUtilities;
 import javax.swing.SwingWorker;
 import javax.swing.filechooser.FileFilter;
 
@@ -45,13 +48,10 @@
  */
 @SuppressWarnings("serial")
 public class OpenWorkflowRunAction extends AbstractAction {
-
 	private static Logger logger = Logger.getLogger(OpenWorkflowRunAction.class);
-
 	private static final String OPEN_WORKFLOW_RUN = "Open workflow run...";
 
 	private final RunService runService;
-
 	private final File runStore;
 
 	public OpenWorkflowRunAction(RunService runService, File runStore) {
@@ -63,11 +63,10 @@
 	@Override
 	public void actionPerformed(ActionEvent e) {
 		final Component parentComponent;
-		if (e.getSource() instanceof Component) {
+		if (e.getSource() instanceof Component)
 			parentComponent = (Component) e.getSource();
-		} else {
+		else
 			parentComponent = null;
-		}
 		openWorkflowRuns(parentComponent);
 	}
 
@@ -90,8 +89,7 @@
 		fileChooser.setCurrentDirectory(runStore);
 		fileChooser.setMultiSelectionEnabled(true);
 
-		int returnVal = fileChooser.showOpenDialog(parentComponent);
-		if (returnVal == JFileChooser.APPROVE_OPTION) {
+		if (fileChooser.showOpenDialog(parentComponent) == APPROVE_OPTION) {
 			final File[] selectedFiles = fileChooser.getSelectedFiles();
 			if (selectedFiles.length == 0) {
 				logger.warn("No files selected");
@@ -100,13 +98,12 @@
 			new SwingWorker<Void, Void>() {
 				@Override
 				public Void doInBackground() {
-					for (final File file : selectedFiles) {
+					for (File file : selectedFiles)
 						try {
 							runService.open(file);
 						} catch (IOException e) {
 							showErrorMessage(parentComponent, file, e);
 						}
-					}
 					return null;
 				}
 			}.execute();
@@ -115,25 +112,24 @@
 
 	/**
 	 * Show an error message if a file could not be opened
-	 *
+	 * 
 	 * @param parentComponent
 	 * @param file
 	 * @param throwable
 	 */
-	protected void showErrorMessage(final Component parentComponent, final File file,
-			final Throwable throwable) {
-		SwingUtilities.invokeLater(new Runnable() {
+	protected void showErrorMessage(final Component parentComponent,
+			final File file, Throwable throwable) {
+		Throwable cause = throwable;
+		while (cause.getCause() != null)
+			cause = cause.getCause();
+		final String message = cause.getMessage();
+		invokeLater(new Runnable() {
+			@Override
 			public void run() {
-				Throwable cause = throwable;
-				while (cause.getCause() != null) {
-					cause = cause.getCause();
-				}
-				JOptionPane.showMessageDialog(parentComponent, "Failed to open workflow from "
-						+ file + ": \n" + cause.getMessage(), "Warning",
-						JOptionPane.WARNING_MESSAGE);
+				showMessageDialog(parentComponent,
+						"Failed to open workflow from " + file + ":\n"
+								+ message, "Warning", WARNING_MESSAGE);
 			}
 		});
-
 	}
-
 }
diff --git a/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/actions/RunWorkflowAction.java b/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/actions/RunWorkflowAction.java
index f4344f0..b87d35a 100644
--- a/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/actions/RunWorkflowAction.java
+++ b/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/actions/RunWorkflowAction.java
@@ -20,32 +20,33 @@
  ******************************************************************************/
 package net.sf.taverna.t2.workbench.run.actions;
 
-import java.awt.Frame;
-import java.awt.Toolkit;
+import static java.awt.Frame.ICONIFIED;
+import static java.awt.Frame.NORMAL;
+import static java.awt.Toolkit.getDefaultToolkit;
+import static java.awt.event.KeyEvent.VK_R;
+import static javax.swing.KeyStroke.getKeyStroke;
+import static javax.swing.SwingUtilities.invokeLater;
+import static net.sf.taverna.t2.reference.ui.InvalidDataflowReport.showErrorDialog;
+import static net.sf.taverna.t2.workbench.icons.WorkbenchIcons.runIcon;
+
 import java.awt.event.ActionEvent;
-import java.awt.event.KeyEvent;
 import java.util.ArrayList;
 import java.util.HashMap;
 import java.util.Set;
 import java.util.concurrent.ExecutionException;
 
 import javax.swing.AbstractAction;
-import javax.swing.Action;
-import javax.swing.KeyStroke;
-import javax.swing.SwingUtilities;
 
 import net.sf.taverna.t2.lang.observer.Observable;
 import net.sf.taverna.t2.lang.observer.Observer;
 import net.sf.taverna.t2.reference.ui.CopyWorkflowInProgressDialog;
 import net.sf.taverna.t2.reference.ui.CopyWorkflowSwingWorker;
-import net.sf.taverna.t2.reference.ui.InvalidDataflowReport;
 import net.sf.taverna.t2.reference.ui.WorkflowLaunchWindow;
 import net.sf.taverna.t2.reference.ui.referenceactions.ReferenceActionSPI;
 import net.sf.taverna.t2.workbench.edits.EditManager;
 import net.sf.taverna.t2.workbench.file.FileManager;
 import net.sf.taverna.t2.workbench.file.events.ClosedDataflowEvent;
 import net.sf.taverna.t2.workbench.file.events.FileManagerEvent;
-import net.sf.taverna.t2.workbench.icons.WorkbenchIcons;
 import net.sf.taverna.t2.workbench.report.ReportManager;
 import net.sf.taverna.t2.workbench.selection.SelectionManager;
 import net.sf.taverna.t2.workbench.ui.SwingWorkerCompletionWaiter;
@@ -73,15 +74,15 @@
  * Note that running a workflow will force a clone of the WorkflowBundle, allowing further edits to
  * the current WorkflowBundle without obstructing the run.
  */
+@SuppressWarnings("serial")
 public class RunWorkflowAction extends AbstractAction {
-
-	private static final long serialVersionUID = 1L;
-
 	private static Logger logger = Logger.getLogger(RunWorkflowAction.class);
 
-	// A map of workflows and their corresponding WorkflowLaunchWindowS
-	// We only create one window per workflow and then update its content if the
-	// workflow gets updated
+	/**
+	 * A map of workflows and their corresponding {@link WorkflowLaunchWindow}s.
+	 * We only create one window per workflow and then update its content if the
+	 * workflow gets updated
+	 */
 	private static HashMap<WorkflowBundle, WorkflowLaunchWindow> workflowLaunchWindowMap = new HashMap<>();
 
 	private final EditManager editManager;
@@ -100,61 +101,74 @@
 		this.workbench = workbench;
 		this.runService = runService;
 		this.selectionManager = selectionManager;
-		putValue(SMALL_ICON, WorkbenchIcons.runIcon);
+		putValue(SMALL_ICON, runIcon);
 		putValue(NAME, "Run workflow...");
 		putValue(SHORT_DESCRIPTION, "Run the current workflow");
-		putValue(Action.MNEMONIC_KEY, Integer.valueOf(KeyEvent.VK_R));
-		putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke(KeyEvent.VK_R, Toolkit
-				.getDefaultToolkit().getMenuShortcutKeyMask()));
+		putValue(MNEMONIC_KEY, VK_R);
+		putValue(
+				ACCELERATOR_KEY,
+				getKeyStroke(VK_R, getDefaultToolkit().getMenuShortcutKeyMask()));
 		fileManager.addObserver(new Observer<FileManagerEvent>() {
+			@Override
 			public void notify(Observable<FileManagerEvent> sender, FileManagerEvent message)
 					throws Exception {
-				if (message instanceof ClosedDataflowEvent) {
-					workflowLaunchWindowMap.remove(((ClosedDataflowEvent) message).getDataflow());
-				}
+				if (message instanceof ClosedDataflowEvent)
+					workflowLaunchWindowMap
+							.remove(((ClosedDataflowEvent) message)
+									.getDataflow());
 			}
 		});
 	}
 
+	@Override
 	public void actionPerformed(ActionEvent e) {
 		final WorkflowBundle workflowBundle = selectionManager.getSelectedWorkflowBundle();
 		final Profile profile = selectionManager.getSelectedProfile();
 		Set<ExecutionEnvironment> executionEnvironments = runService
 				.getExecutionEnvironments(profile);
 		if (executionEnvironments.isEmpty()) {
-			InvalidDataflowReport.showErrorDialog(
+			showErrorDialog(
 					"There are no execution environments capable of running this workflow",
 					"Can't run workflow");
-		} else {
-			// TODO ask user to choose execution environment
-			final ExecutionEnvironment executionEnvironment = executionEnvironments.iterator().next();
-			// TODO update to use Scufl2 validation
-			// if (CheckWorkflowStatus.checkWorkflow(selectedProfile, workbench, editManager,
-			// fileManager,reportManager)) {
-			try {
+			return;
+		}
+
+		// TODO ask user to choose execution environment
+		final ExecutionEnvironment executionEnvironment = executionEnvironments.iterator().next();
+		try {
+			if (validate(workflowBundle, profile)) {
 				if (workflowBundle.getMainWorkflow().getInputPorts().isEmpty()) {
 					final Bundle bundle = DataBundles.createBundle();
-					SwingUtilities.invokeLater(new Runnable() {
+					invokeLater(new Runnable() {
+						@Override
 						public void run() {
-							runWorkflow(workflowBundle, profile, executionEnvironment, bundle);
+							runWorkflow(workflowBundle, profile,
+									executionEnvironment, bundle);
 						}
 					});
-				} else { // workflow had inputs - show the input dialog
-					SwingUtilities.invokeLater(new Runnable() {
+				} else // workflow had inputs - show the input dialog
+					invokeLater(new Runnable() {
+						@Override
 						public void run() {
-							showInputDialog(workflowBundle, profile, executionEnvironment);
+							showInputDialog(workflowBundle, profile,
+									executionEnvironment);
 						}
 					});
 				}
-			} catch (Exception ex) {
-				String message = "Could not run workflow " + workflowBundle.getName();
-				logger.warn(message);
-				InvalidDataflowReport.showErrorDialog(ex.getMessage(), message);
-			}
-			// }
+		} catch (Exception ex) {
+			String message = "Could not run workflow " + workflowBundle.getName();
+			logger.warn(message);
+			showErrorDialog(ex.getMessage(), message);
 		}
 	}
 
+	// TODO update to use Scufl2 validation
+	private boolean validate(WorkflowBundle workflowBundle, Profile selectedProfile) {
+		//CheckWorkflowStatus.checkWorkflow(selectedProfile, workbench, editManager,
+		//		fileManager,reportManager);
+		return true;
+	}
+
 	private void runWorkflow(WorkflowBundle workflowBundle, Profile profile,
 			ExecutionEnvironment executionEnvironment, Bundle workflowInputs) {
 		try {
@@ -168,21 +182,25 @@
 				| RunStateException | InvalidExecutionIdException e) {
 			String message = "Could not run workflow " + workflowBundle.getName();
 			logger.warn(message, e);
-			InvalidDataflowReport.showErrorDialog(e.getMessage(), message);
+			showErrorDialog(e.getMessage(), message);
 		}
 	}
 
 	private RunProfile createRunProfile(WorkflowBundle workflowBundle, Profile profile,
 			ExecutionEnvironment executionEnvironment, Bundle inputDataBundle) {
-		// Make a copy of the workflow to run so user can still
-		// modify the original workflow
+		/*
+		 * Make a copy of the workflow to run so user can still modify the
+		 * original workflow
+		 */
 		WorkflowBundle workflowBundleCopy = null;
 
-		// CopyWorkflowSwingWorker will make a copy of the workflow and pop
-		// up a modal dialog that will block the GUI while
-		// CopyWorkflowSwingWorker is doing it to let the user know that something is being done.
-		// Blocking of the GUI is needed here so that the user cannot modify the
-		// original workflow while it is being copied.
+		/*
+		 * CopyWorkflowSwingWorker will make a copy of the workflow and pop up a
+		 * modal dialog that will block the GUI while CopyWorkflowSwingWorker is
+		 * doing it to let the user know that something is being done. Blocking
+		 * of the GUI is needed here so that the user cannot modify the original
+		 * workflow while it is being copied.
+		 */
 		CopyWorkflowSwingWorker copyWorkflowSwingWorker = new CopyWorkflowSwingWorker(
 				workflowBundle);
 
@@ -190,59 +208,65 @@
 		copyWorkflowSwingWorker.addPropertyChangeListener(new SwingWorkerCompletionWaiter(dialog));
 		copyWorkflowSwingWorker.execute();
 
-		// Give a chance to the SwingWorker to finish so we do not have to display
-		// the dialog if copying of the workflow is quick (so it won't flicker on the screen)
+		/*
+		 * Give a chance to the SwingWorker to finish so we do not have to
+		 * display the dialog if copying of the workflow is quick (so it won't
+		 * flicker on the screen)
+		 */
 		try {
 			Thread.sleep(500);
 		} catch (InterruptedException e) {
 			// do nothing
 		}
-		if (!copyWorkflowSwingWorker.isDone()) {
+
+		if (!copyWorkflowSwingWorker.isDone())
 			dialog.setVisible(true); // this will block the GUI
-		}
 		// see if user cancelled the dialog
 		boolean userCancelled = dialog.hasUserCancelled();
 
 		if (userCancelled) {
 			// Stop the CopyWorkflowSwingWorker if it is still working
 			copyWorkflowSwingWorker.cancel(true);
-		} else {
-			// Get the workflow copy from the copyWorkflowSwingWorker
-			try {
-				workflowBundleCopy = copyWorkflowSwingWorker.get();
-			} catch (InterruptedException | ExecutionException e) {
-				logger.error("Failed to get the workflow copy", e);
-			}
-
-			if (workflowBundleCopy == null) {
-				InvalidDataflowReport.showErrorDialog(
-						"Unable to make a copy of the workflow to run", "Workflow copy failed");
-			}
-		}
-
-		if (workflowBundleCopy != null) {
-			return new RunProfile(executionEnvironment, workflowBundleCopy, workflowBundleCopy
-					.getMainWorkflow().getName(), profile.getName(), inputDataBundle);
-		} else {
 			return null;
 		}
+
+		// Get the workflow copy from the copyWorkflowSwingWorker
+		try {
+			workflowBundleCopy = copyWorkflowSwingWorker.get();
+		} catch (InterruptedException | ExecutionException e) {
+			logger.error("Failed to get the workflow copy", e);
+		}
+
+		if (workflowBundleCopy == null) {
+			showErrorDialog("Unable to make a copy of the workflow to run",
+					"Workflow copy failed");
+			return null;
+		}
+
+		return new RunProfile(executionEnvironment, workflowBundleCopy,
+				workflowBundleCopy.getMainWorkflow().getName(),
+				profile.getName(), inputDataBundle);
 	}
 
-	@SuppressWarnings("serial")
-	private void showInputDialog(final WorkflowBundle workflowBundle, final Profile profile,
+	private void showInputDialog(final WorkflowBundle workflowBundle,
+			final Profile profile,
 			final ExecutionEnvironment executionEnvironment) {
 		// Get the WorkflowLauchWindow
 		WorkflowLaunchWindow launchWindow = null;
 		synchronized (workflowLaunchWindowMap) {
-			WorkflowLaunchWindow savedLaunchWindow = workflowLaunchWindowMap.get(workflowBundle);
+			WorkflowLaunchWindow savedLaunchWindow = workflowLaunchWindowMap
+					.get(workflowBundle);
 			if (savedLaunchWindow == null) {
-				launchWindow = new WorkflowLaunchWindow(workflowBundle.getMainWorkflow(),
-						editManager, fileManager, reportManager, workbench, new ArrayList<ReferenceActionSPI>(), null) {
-
+				launchWindow = new WorkflowLaunchWindow(
+						workflowBundle.getMainWorkflow(), editManager,
+						fileManager, reportManager, workbench,
+						new ArrayList<ReferenceActionSPI>(), null) {
 					@Override
 					public void handleLaunch(Bundle workflowInputs) {
-						runWorkflow(workflowBundle, profile, executionEnvironment, workflowInputs);
-						setState(Frame.ICONIFIED); // minimise the window
+						runWorkflow(workflowBundle, profile,
+								executionEnvironment, workflowInputs);
+						//TODO T2 now makes the launch window vanish
+						setState(ICONIFIED); // minimise the window
 					}
 
 					@Override
@@ -252,24 +276,24 @@
 					}
 				};
 
-				// Add this window to the map of the workflow input/launch
-				// windows
+				/*
+				 * Add this window to the map of the workflow input/launch
+				 * windows
+				 */
 				workflowLaunchWindowMap.put(workflowBundle, launchWindow);
-
 				launchWindow.setLocationRelativeTo(null);
-			} else {
+			} else
 				launchWindow = savedLaunchWindow;
-			}
 
 			// Display the window
 			launchWindow.setVisible(true);
-			// On Win XP setting the window visible seems not to be enough to
-			// bring the window up if it was minimised previously so we restore
-			// it here
-			if (launchWindow.getState() == Frame.ICONIFIED) {
-				launchWindow.setState(Frame.NORMAL); // restore the window
-			}
+			/*
+			 * On Win XP setting the window visible seems not to be enough to
+			 * bring the window up if it was minimised previously so we restore
+			 * it here
+			 */
+			if (launchWindow.getState() == ICONIFIED)
+				launchWindow.setState(NORMAL); // restore the window
 		}
 	}
-
 }
diff --git a/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/actions/ValidateWorkflowAction.java b/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/actions/ValidateWorkflowAction.java
index 57b2e49..ce13c2a 100644
--- a/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/actions/ValidateWorkflowAction.java
+++ b/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/actions/ValidateWorkflowAction.java
@@ -20,34 +20,37 @@
  ******************************************************************************/
 package net.sf.taverna.t2.workbench.run.actions;
 
+import static java.awt.event.KeyEvent.VK_V;
+import static net.sf.taverna.t2.workbench.icons.WorkbenchIcons.searchIcon;
+
 import java.awt.event.ActionEvent;
-import java.awt.event.KeyEvent;
 
 import javax.swing.AbstractAction;
 import javax.swing.Action;
 
 import net.sf.taverna.t2.workbench.edits.EditManager;
 import net.sf.taverna.t2.workbench.file.FileManager;
-import net.sf.taverna.t2.workbench.icons.WorkbenchIcons;
 import net.sf.taverna.t2.workbench.report.ReportManager;
 import net.sf.taverna.t2.workbench.ui.Workbench;
 
 @SuppressWarnings("serial")
 public class ValidateWorkflowAction extends AbstractAction {
-
 	private static final String VALIDATE_WORKFLOW = "Validate workflow";
 
-//	protected ReportOnWorkflowAction subAction;
+	protected Action subAction;
 
-	public ValidateWorkflowAction(EditManager editManager, FileManager fileManager,
-			ReportManager reportManager, Workbench workbench) {
-		super(VALIDATE_WORKFLOW, WorkbenchIcons.searchIcon);
-		putValue(Action.MNEMONIC_KEY, KeyEvent.VK_V);
-//		subAction = new ReportOnWorkflowAction("", true, false, editManager, fileManager, reportManager, workbench);
+	public ValidateWorkflowAction(EditManager editManager,
+			FileManager fileManager, ReportManager reportManager,
+			Workbench workbench) {
+		super(VALIDATE_WORKFLOW, searchIcon);
+		putValue(MNEMONIC_KEY, VK_V);
+		// subAction = new ReportOnWorkflowAction("", true, false, editManager,
+		// fileManager, reportManager, workbench);
 	}
 
+	@Override
 	public void actionPerformed(ActionEvent ev) {
-//		subAction.actionPerformed(ev);
+		if (subAction != null)
+			subAction.actionPerformed(ev);
 	}
-
 }
diff --git a/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/cleanup/WorkflowRunStatusShutdownDialog.java b/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/cleanup/WorkflowRunStatusShutdownDialog.java
index 7d9a8ab..4718fd7 100644
--- a/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/cleanup/WorkflowRunStatusShutdownDialog.java
+++ b/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/cleanup/WorkflowRunStatusShutdownDialog.java
@@ -20,8 +20,18 @@
  ******************************************************************************/
 package net.sf.taverna.t2.workbench.run.cleanup;
 
-import java.awt.Color;
-import java.awt.Font;
+import static java.awt.Color.WHITE;
+import static java.awt.Font.BOLD;
+import static java.awt.GridBagConstraints.HORIZONTAL;
+import static java.awt.GridBagConstraints.NONE;
+import static java.awt.GridBagConstraints.NORTHWEST;
+import static java.awt.GridBagConstraints.SOUTHEAST;
+import static java.awt.GridBagConstraints.SOUTHWEST;
+import static javax.swing.JOptionPane.WARNING_MESSAGE;
+import static javax.swing.JOptionPane.YES_NO_OPTION;
+import static javax.swing.JOptionPane.YES_OPTION;
+import static javax.swing.JOptionPane.showConfirmDialog;
+
 import java.awt.Frame;
 import java.awt.GridBagConstraints;
 import java.awt.GridBagLayout;
@@ -31,9 +41,7 @@
 
 import javax.swing.JButton;
 import javax.swing.JLabel;
-import javax.swing.JOptionPane;
 import javax.swing.JPanel;
-import javax.swing.WindowConstants;
 
 import net.sf.taverna.t2.workbench.helper.HelpEnabledDialog;
 
@@ -43,44 +51,39 @@
  * 
  * @author David Withers
  */
+@SuppressWarnings("serial")
 public class WorkflowRunStatusShutdownDialog extends HelpEnabledDialog {
-
-	private static final long serialVersionUID = 1L;
-
 	private JButton abortButton;
-
 	private JButton cancelButton;
-
 	private boolean confirmShutdown = true;
 
 	public WorkflowRunStatusShutdownDialog(int runningWorkflows, int pausedWorkflows) {
 		super((Frame) null, "Workflows still running", true);
-		setDefaultCloseOperation(WindowConstants.DO_NOTHING_ON_CLOSE);
+		setDefaultCloseOperation(DO_NOTHING_ON_CLOSE);
 		setLocationRelativeTo(null);
 
 		GridBagConstraints c = new GridBagConstraints();
 		setLayout(new GridBagLayout());
 
 		JLabel title = new JLabel("Running or paused workflows detected.");
-		title.setFont(title.getFont().deriveFont(Font.BOLD, 14));
+		title.setFont(title.getFont().deriveFont(BOLD, 14));
 
 		abortButton = new JButton("Shutdown now");
 		abortButton.addActionListener(new ActionListener() {
+			@Override
 			public void actionPerformed(ActionEvent e) {
-				int result = JOptionPane
-						.showConfirmDialog(
-								WorkflowRunStatusShutdownDialog.this,
-								"If you close Taverna now all workflows will be cancelled.\nAre you sure you want to close now?",
-								"Confirm Shutdown", JOptionPane.YES_NO_OPTION,
-								JOptionPane.WARNING_MESSAGE);
-				if (result == JOptionPane.YES_OPTION) {
+				if (showConfirmDialog(
+						WorkflowRunStatusShutdownDialog.this,
+						"If you close Taverna now all workflows will be cancelled.\n"
+						+ "Are you sure you want to close now?",
+						"Confirm Shutdown", YES_NO_OPTION, WARNING_MESSAGE) == YES_OPTION)
 					setVisible(false);
-				}
 			}
 		});
 
 		cancelButton = new JButton("Cancel shutdown");
 		cancelButton.addActionListener(new ActionListener() {
+			@Override
 			public void actionPerformed(ActionEvent e) {
 				confirmShutdown = false;
 				setVisible(false);
@@ -94,13 +97,11 @@
 			sb.append(runningWorkflows);
 			sb.append(" running ");
 			sb.append(runningWorkflows > 1 ? "workflows" : "workflow");
-		} else {
+		} else
 			sb.append(pausedWorkflows > 1 ? "are " : "is ");
-		}
 		if (pausedWorkflows > 0) {
-			if (runningWorkflows > 0) {
+			if (runningWorkflows > 0)
 				sb.append(" and ");
-			}
 			sb.append(pausedWorkflows);
 			sb.append(" paused ");
 			sb.append(pausedWorkflows > 1 ? "workflows" : "workflow");
@@ -108,16 +109,16 @@
 		JLabel message = new JLabel(sb.toString());
 
 		JPanel topPanel = new JPanel(new GridBagLayout());
-		topPanel.setBackground(Color.WHITE);
+		topPanel.setBackground(WHITE);
 
-		c.anchor = GridBagConstraints.NORTHWEST;
+		c.anchor = NORTHWEST;
 		c.insets = new Insets(20, 30, 20, 30);
 		c.weightx = 1d;
 		c.weighty = 0d;
 		topPanel.add(title, c);
 
 		c.insets = new Insets(0, 0, 0, 0);
-		c.fill = GridBagConstraints.HORIZONTAL;
+		c.fill = HORIZONTAL;
 		c.gridwidth = 2;
 		c.gridx = 0;
 		add(topPanel, c);
@@ -127,8 +128,8 @@
 		c.weighty = 1d;
 		add(message, c);
 
-		c.fill = GridBagConstraints.NONE;
-		c.anchor = GridBagConstraints.SOUTHWEST;
+		c.fill = NONE;
+		c.anchor = SOUTHWEST;
 		c.insets = new Insets(10, 20, 10, 20);
 		c.weightx = 0.5;
 		c.weighty = 0d;
@@ -136,21 +137,17 @@
 		c.gridwidth = 1;
 		add(cancelButton, c);
 
-		c.anchor = GridBagConstraints.SOUTHEAST;
+		c.anchor = SOUTHEAST;
 		c.gridx = 1;
 		add(abortButton, c);
 
 		setSize(400, 230);
-
 	}
 
 	/**
-	 * Returns <code>true</code> if it's OK to proceed with the shutdown.
-	 * 
 	 * @return <code>true</code> if it's OK to proceed with the shutdown
 	 */
 	public boolean confirmShutdown() {
 		return confirmShutdown;
 	}
-
 }
diff --git a/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/cleanup/WorkflowRunStatusShutdownHook.java b/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/cleanup/WorkflowRunStatusShutdownHook.java
index b7d89b5..717b2c1 100644
--- a/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/cleanup/WorkflowRunStatusShutdownHook.java
+++ b/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/cleanup/WorkflowRunStatusShutdownHook.java
@@ -28,47 +28,43 @@
 import net.sf.taverna.t2.workbench.ShutdownSPI;
 import uk.org.taverna.configuration.app.ApplicationConfiguration;
 import uk.org.taverna.platform.execution.api.InvalidExecutionIdException;
-import uk.org.taverna.platform.report.State;
 import uk.org.taverna.platform.run.api.InvalidRunIdException;
 import uk.org.taverna.platform.run.api.RunService;
 import uk.org.taverna.platform.run.api.RunStateException;
 
 /**
  * Shutdown hook that detects running and paused workflows.
- *
+ * 
  * @author David Withers
  */
 public class WorkflowRunStatusShutdownHook implements ShutdownSPI {
-
 	private static final String RUN_STORE_DIRECTORY = "workflow-runs";
 
 	private RunService runService;
 	private ApplicationConfiguration applicationConfiguration;
 
+	@Override
 	public int positionHint() {
 		return 40;
 	}
 
+	@Override
 	public boolean shutdown() {
 		boolean shutdown = true;
 		List<String> workflowRuns = runService.getRuns();
 		List<String> runningWorkflows = new ArrayList<>();
 		List<String> pausedWorkflows = new ArrayList<>();
-		for (String workflowRun : workflowRuns) {
-			State runState;
+		for (String workflowRun : workflowRuns)
 			try {
-				runState = runService.getState(workflowRun);
-				switch (runState) {
+				switch (runService.getState(workflowRun)) {
 				case PAUSED:
-					pausedWorkflows.add(workflowRun);
-					break;
 				case RUNNING:
-					runningWorkflows.add(workflowRun);
+					pausedWorkflows.add(workflowRun);
+				default:
 					break;
 				}
 			} catch (InvalidRunIdException e) {
 			}
-		}
 		if (runningWorkflows.size() + pausedWorkflows.size() > 0) {
 			WorkflowRunStatusShutdownDialog dialog = new WorkflowRunStatusShutdownDialog(
 					runningWorkflows.size(), pausedWorkflows.size());
@@ -76,25 +72,27 @@
 			shutdown = dialog.confirmShutdown();
 		}
 		if (shutdown) {
-			for (String workflowRun : pausedWorkflows) {
+			for (String workflowRun : pausedWorkflows)
 				try {
 					runService.cancel(workflowRun);
-				} catch (InvalidRunIdException | RunStateException | InvalidExecutionIdException e) {
+				} catch (InvalidRunIdException | RunStateException
+						| InvalidExecutionIdException e) {
 				}
-			}
-			for (String workflowRun : runningWorkflows) {
+			for (String workflowRun : runningWorkflows)
 				try {
 					runService.cancel(workflowRun);
-				} catch (InvalidRunIdException | RunStateException | InvalidExecutionIdException e) {
+				} catch (InvalidRunIdException | RunStateException
+						| InvalidExecutionIdException e) {
 				}
-			}
 			for (String workflowRun : workflowRuns) {
-				File runStore = new File(applicationConfiguration.getApplicationHomeDir(), RUN_STORE_DIRECTORY);
+				File runStore = new File(
+						applicationConfiguration.getApplicationHomeDir(),
+						RUN_STORE_DIRECTORY);
 				try {
-					File file = new File(runStore, runService.getRunName(workflowRun) + ".wfRun");
-					if (!file.exists()) {
+					File file = new File(runStore,
+							runService.getRunName(workflowRun) + ".wfRun");
+					if (!file.exists())
 						runService.save(workflowRun, file);
-					}
 				} catch (InvalidRunIdException | IOException e) {
 				}
 			}
@@ -106,8 +104,7 @@
 		this.runService = runService;
 	}
 
-	public void setApplicationConfiguration(ApplicationConfiguration applicationConfiguration) {
-		this.applicationConfiguration = applicationConfiguration;
+	public void setApplicationConfiguration(ApplicationConfiguration appConfig) {
+		this.applicationConfiguration = appConfig;
 	}
-
 }
diff --git a/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/menu/FileOpenRunMenuAction.java b/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/menu/FileOpenRunMenuAction.java
index 6d1bb7c..6914ac7 100644
--- a/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/menu/FileOpenRunMenuAction.java
+++ b/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/menu/FileOpenRunMenuAction.java
@@ -20,6 +20,8 @@
  ******************************************************************************/
 package net.sf.taverna.t2.workbench.run.menu;
 
+import static net.sf.taverna.t2.workbench.run.menu.FileRunMenuSection.FILE_RUN_SECTION_URI;
+
 import java.io.File;
 import java.net.URI;
 
@@ -27,28 +29,26 @@
 
 import uk.org.taverna.configuration.app.ApplicationConfiguration;
 import uk.org.taverna.platform.run.api.RunService;
-
 import net.sf.taverna.t2.ui.menu.AbstractMenuAction;
 import net.sf.taverna.t2.workbench.run.actions.OpenWorkflowRunAction;
 
 public class FileOpenRunMenuAction extends AbstractMenuAction {
-
 	private static final String RUN_STORE_DIRECTORY = "workflow-runs";
-
 	private static final URI FILE_OPEN_RUN_URI = URI
 			.create("http://taverna.sf.net/2008/t2workbench/menu#fileOpenRun");
 
 	private RunService runService;
-
 	private ApplicationConfiguration applicationConfiguration;
 
 	public FileOpenRunMenuAction() {
-		super(FileRunMenuSection.FILE_RUN_SECTION_URI, 20, FILE_OPEN_RUN_URI);
+		super(FILE_RUN_SECTION_URI, 20, FILE_OPEN_RUN_URI);
 	}
 
 	@Override
 	protected Action createAction() {
-		File runStore = new File(applicationConfiguration.getApplicationHomeDir(), RUN_STORE_DIRECTORY);
+		File runStore = new File(
+				applicationConfiguration.getApplicationHomeDir(),
+				RUN_STORE_DIRECTORY);
 		return new OpenWorkflowRunAction(runService, runStore);
 	}
 
@@ -56,8 +56,8 @@
 		this.runService = runService;
 	}
 
-	public void setApplicationConfiguration(ApplicationConfiguration applicationConfiguration) {
+	public void setApplicationConfiguration(
+			ApplicationConfiguration applicationConfiguration) {
 		this.applicationConfiguration = applicationConfiguration;
 	}
-
 }
diff --git a/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/menu/FileRunMenuAction.java b/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/menu/FileRunMenuAction.java
index 88c3e3f..d1a73c1 100644
--- a/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/menu/FileRunMenuAction.java
+++ b/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/menu/FileRunMenuAction.java
@@ -20,6 +20,8 @@
  ******************************************************************************/
 package net.sf.taverna.t2.workbench.run.menu;
 
+import static net.sf.taverna.t2.workbench.run.menu.FileRunMenuSection.FILE_RUN_SECTION_URI;
+
 import java.net.URI;
 
 import javax.swing.Action;
@@ -34,9 +36,9 @@
 import uk.org.taverna.platform.run.api.RunService;
 
 public class FileRunMenuAction extends AbstractMenuAction {
-
 	private static final URI FILE_RUN_URI = URI
 			.create("http://taverna.sf.net/2008/t2workbench/menu#fileRun");
+
 	private EditManager editManager;
 	private FileManager fileManager;
 	private ReportManager reportManager;
@@ -45,7 +47,7 @@
 	private SelectionManager selectionManager;
 
 	public FileRunMenuAction() {
-		super(FileRunMenuSection.FILE_RUN_SECTION_URI, 10, FILE_RUN_URI);
+		super(FILE_RUN_SECTION_URI, 10, FILE_RUN_URI);
 	}
 
 	@Override
@@ -77,5 +79,4 @@
 	public void setSelectionManager(SelectionManager selectionManager) {
 		this.selectionManager = selectionManager;
 	}
-
 }
diff --git a/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/menu/FileRunMenuSection.java b/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/menu/FileRunMenuSection.java
index 19cd534..6af6eb9 100644
--- a/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/menu/FileRunMenuSection.java
+++ b/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/menu/FileRunMenuSection.java
@@ -25,7 +25,6 @@
 import net.sf.taverna.t2.ui.menu.AbstractMenuSection;
 
 public class FileRunMenuSection extends AbstractMenuSection {
-
 	public static final URI FILE_URI = URI
 			.create("http://taverna.sf.net/2008/t2workbench/menu#file");
 	public static final URI FILE_RUN_SECTION_URI = URI
@@ -34,5 +33,4 @@
 	public FileRunMenuSection() {
 		super(FILE_URI, 40, FILE_RUN_SECTION_URI);
 	}
-
 }
diff --git a/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/menu/FileValidateMenuAction.java b/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/menu/FileValidateMenuAction.java
index 9d59927..3558c41 100644
--- a/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/menu/FileValidateMenuAction.java
+++ b/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/menu/FileValidateMenuAction.java
@@ -20,6 +20,8 @@
  ******************************************************************************/
 package net.sf.taverna.t2.workbench.run.menu;
 
+import static net.sf.taverna.t2.workbench.run.menu.FileRunMenuSection.FILE_RUN_SECTION_URI;
+
 import java.net.URI;
 
 import javax.swing.Action;
@@ -32,22 +34,22 @@
 import net.sf.taverna.t2.workbench.ui.Workbench;
 
 public class FileValidateMenuAction extends AbstractMenuAction {
-
 	private static final URI FILE_VALIDATE_URI = URI
-	.create("http://taverna.sf.net/2008/t2workbench/menu#fileValidate");
+			.create("http://taverna.sf.net/2008/t2workbench/menu#fileValidate");
+
 	private EditManager editManager;
 	private FileManager fileManager;
 	private ReportManager reportManager;
 	private Workbench workbench;
 
-
 	public FileValidateMenuAction() {
-		super(FileRunMenuSection.FILE_RUN_SECTION_URI, 5, FILE_VALIDATE_URI);
+		super(FILE_RUN_SECTION_URI, 5, FILE_VALIDATE_URI);
 	}
 
 	@Override
 	protected Action createAction() {
-		return new ValidateWorkflowAction(editManager, fileManager, reportManager, workbench);
+		return new ValidateWorkflowAction(editManager, fileManager,
+				reportManager, workbench);
 	}
 
 	public void setEditManager(EditManager editManager) {
@@ -65,5 +67,4 @@
 	public void setWorkbench(Workbench workbench) {
 		this.workbench = workbench;
 	}
-
 }
diff --git a/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/toolbar/RunToolbarAction.java b/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/toolbar/RunToolbarAction.java
index ce8ee5d..5e84653 100644
--- a/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/toolbar/RunToolbarAction.java
+++ b/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/toolbar/RunToolbarAction.java
@@ -20,6 +20,8 @@
  ******************************************************************************/
 package net.sf.taverna.t2.workbench.run.toolbar;
 
+import static net.sf.taverna.t2.workbench.run.toolbar.RunToolbarSection.RUN_TOOLBAR_SECTION;
+
 import java.net.URI;
 
 import javax.swing.Action;
@@ -34,9 +36,9 @@
 import uk.org.taverna.platform.run.api.RunService;
 
 public class RunToolbarAction extends AbstractMenuAction {
-
 	private static final URI RUN_URI = URI
 			.create("http://taverna.sf.net/2008/t2workbench/menu#runToolbarRun");
+
 	private EditManager editManager;
 	private FileManager fileManager;
 	private ReportManager reportManager;
@@ -45,12 +47,13 @@
 	private SelectionManager selectionManager;
 
 	public RunToolbarAction() {
-		super(RunToolbarSection.RUN_TOOLBAR_SECTION, 10, RUN_URI);
+		super(RUN_TOOLBAR_SECTION, 10, RUN_URI);
 	}
 
 	@Override
 	protected Action createAction() {
-		return new RunWorkflowAction(editManager, fileManager, reportManager, workbench, runService, selectionManager);
+		return new RunWorkflowAction(editManager, fileManager, reportManager,
+				workbench, runService, selectionManager);
 	}
 
 	public void setEditManager(EditManager editManager) {
@@ -76,5 +79,4 @@
 	public void setSelectionManager(SelectionManager selectionManager) {
 		this.selectionManager = selectionManager;
 	}
-
 }
diff --git a/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/toolbar/RunToolbarSection.java b/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/toolbar/RunToolbarSection.java
index 9b9abd4..b023f16 100644
--- a/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/toolbar/RunToolbarSection.java
+++ b/run-ui/src/main/java/net/sf/taverna/t2/workbench/run/toolbar/RunToolbarSection.java
@@ -20,18 +20,17 @@
  ******************************************************************************/
 package net.sf.taverna.t2.workbench.run.toolbar;
 
+import static net.sf.taverna.t2.ui.menu.DefaultToolBar.DEFAULT_TOOL_BAR;
+
 import java.net.URI;
 
 import net.sf.taverna.t2.ui.menu.AbstractMenuSection;
-import net.sf.taverna.t2.ui.menu.DefaultToolBar;
 
 public class RunToolbarSection extends AbstractMenuSection {
-
 	public static final URI RUN_TOOLBAR_SECTION = URI
 			.create("http://taverna.sf.net/2008/t2workbench/menu#runToolbarSection");
 
 	public RunToolbarSection() {
-		super(DefaultToolBar.DEFAULT_TOOL_BAR, 15, RUN_TOOLBAR_SECTION);
+		super(DEFAULT_TOOL_BAR, 15, RUN_TOOLBAR_SECTION);
 	}
-
 }