You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@taverna.apache.org by st...@apache.org on 2015/02/23 11:22:59 UTC
[36/51] [partial] incubator-taverna-workbench git commit: Revert
"temporarily empty repository"
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/8c4b365e/taverna-workbench-credential-manager-ui/src/main/resources/META-INF/spring/credential-manager-ui-context-osgi.xml
----------------------------------------------------------------------
diff --git a/taverna-workbench-credential-manager-ui/src/main/resources/META-INF/spring/credential-manager-ui-context-osgi.xml b/taverna-workbench-credential-manager-ui/src/main/resources/META-INF/spring/credential-manager-ui-context-osgi.xml
new file mode 100644
index 0000000..f595eda
--- /dev/null
+++ b/taverna-workbench-credential-manager-ui/src/main/resources/META-INF/spring/credential-manager-ui-context-osgi.xml
@@ -0,0 +1,37 @@
+<?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="askUserMasterPasswordProvider" interface="net.sf.taverna.t2.security.credentialmanager.MasterPasswordProvider" />
+
+ <service ref="simpleMasterPasswordProvider" interface="net.sf.taverna.t2.security.credentialmanager.MasterPasswordProvider" />
+
+ <service ref="askUserJavaTruststorePasswordProvider" interface="net.sf.taverna.t2.security.credentialmanager.JavaTruststorePasswordProvider" />
+
+ <service ref="askUserServiceUsernameAndPasswordProvider" interface="net.sf.taverna.t2.security.credentialmanager.ServiceUsernameAndPasswordProvider" />
+
+ <service ref="askUserTrustConfirmationProvider" interface="net.sf.taverna.t2.security.credentialmanager.TrustConfirmationProvider" />
+
+ <service ref="UIUsernamePasswordProvider" auto-export="interfaces" />
+
+ <service ref="UIMasterPasswordProvider" auto-export="interfaces" />
+
+ <service ref="ConfirmTrustedCertificateUI" auto-export="interfaces" />
+
+ <service ref="InitialiseSSLStartupHook" interface="net.sf.taverna.t2.workbench.StartupSPI" />
+
+ <service ref="SetCredManAuthenticatorStartupHook" interface="net.sf.taverna.t2.workbench.StartupSPI" />
+
+ <service ref="CredentialManagerMenu" auto-export="interfaces" />
+
+ <reference id="CredentialManager" interface="net.sf.taverna.t2.security.credentialmanager.CredentialManager" />
+
+ <reference id="distinguishedNameParser" interface="net.sf.taverna.t2.security.credentialmanager.DistinguishedNameParser" />
+
+ <reference id="ApplicationConfiguration" interface="uk.org.taverna.configuration.app.ApplicationConfiguration" />
+
+</beans:beans>
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/8c4b365e/taverna-workbench-credential-manager-ui/src/main/resources/META-INF/spring/credential-manager-ui-context.xml
----------------------------------------------------------------------
diff --git a/taverna-workbench-credential-manager-ui/src/main/resources/META-INF/spring/credential-manager-ui-context.xml b/taverna-workbench-credential-manager-ui/src/main/resources/META-INF/spring/credential-manager-ui-context.xml
new file mode 100644
index 0000000..0e54c93
--- /dev/null
+++ b/taverna-workbench-credential-manager-ui/src/main/resources/META-INF/spring/credential-manager-ui-context.xml
@@ -0,0 +1,44 @@
+<?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="askUserMasterPasswordProvider" class="net.sf.taverna.t2.workbench.ui.credentialmanager.password.AskUserMasterPasswordProvider" />
+
+ <bean id="simpleMasterPasswordProvider" class="net.sf.taverna.t2.workbench.ui.credentialmanager.password.SimpleMasterPasswordProvider" />
+
+ <bean id="askUserJavaTruststorePasswordProvider" class="net.sf.taverna.t2.workbench.ui.credentialmanager.password.AskUserJavaTruststorePasswordProvider" />
+
+ <bean id="askUserServiceUsernameAndPasswordProvider" class="net.sf.taverna.t2.workbench.ui.credentialmanager.password.AskUserServiceUsernameAndPasswordProvider" />
+
+ <bean id="askUserTrustConfirmationProvider" class="net.sf.taverna.t2.workbench.ui.credentialmanager.password.AskUserTrustConfirmationProvider" />
+
+ <bean id="MasterPasswordProviderComparator" class="net.sf.taverna.t2.security.credentialmanager.MasterPasswordProvider$ProviderComparator" />
+
+ <bean id="UIUsernamePasswordProvider" class="net.sf.taverna.t2.workbench.ui.credentialmanager.password.UIUsernamePasswordProvider" >
+ <property name="distinguishedNameParser" ref="distinguishedNameParser" />
+ </bean>
+
+ <bean id="UIMasterPasswordProvider" class="net.sf.taverna.t2.workbench.ui.credentialmanager.password.UIMasterPasswordProvider">
+ <property name="applicationConfiguration" ref="ApplicationConfiguration" />
+ <property name="distinguishedNameParser" ref="distinguishedNameParser" />
+ </bean>
+
+ <bean id="ConfirmTrustedCertificateUI" class="net.sf.taverna.t2.workbench.ui.credentialmanager.ConfirmTrustedCertificateUI">
+ <property name="distinguishedNameParser" ref="distinguishedNameParser" />
+ </bean>
+
+ <bean id="InitialiseSSLStartupHook" class="net.sf.taverna.t2.workbench.ui.credentialmanager.startup.InitialiseSSLStartupHook">
+ <property name="credentialManager" ref="CredentialManager" />
+ </bean>
+
+ <bean id="SetCredManAuthenticatorStartupHook" class="net.sf.taverna.t2.workbench.ui.credentialmanager.startup.SetCredManAuthenticatorStartupHook" >
+ <property name="credentialManager" ref="CredentialManager" />
+ </bean>
+
+ <bean id="CredentialManagerMenu" class="net.sf.taverna.t2.workbench.ui.credentialmanager.menu.CredentialManagerMenu" >
+ <property name="credentialManager" ref="CredentialManager" />
+ <property name="distinguishedNameParser" ref="distinguishedNameParser" />
+ </bean>
+
+</beans>
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/8c4b365e/taverna-workbench-credential-manager-ui/src/main/resources/images/cred_manager.png
----------------------------------------------------------------------
diff --git a/taverna-workbench-credential-manager-ui/src/main/resources/images/cred_manager.png b/taverna-workbench-credential-manager-ui/src/main/resources/images/cred_manager.png
new file mode 100644
index 0000000..48cd63c
Binary files /dev/null and b/taverna-workbench-credential-manager-ui/src/main/resources/images/cred_manager.png differ
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/8c4b365e/taverna-workbench-credential-manager-ui/src/main/resources/images/cred_manager16x16.png
----------------------------------------------------------------------
diff --git a/taverna-workbench-credential-manager-ui/src/main/resources/images/cred_manager16x16.png b/taverna-workbench-credential-manager-ui/src/main/resources/images/cred_manager16x16.png
new file mode 100644
index 0000000..c6e73b5
Binary files /dev/null and b/taverna-workbench-credential-manager-ui/src/main/resources/images/cred_manager16x16.png differ
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/8c4b365e/taverna-workbench-credential-manager-ui/src/main/resources/images/cred_manager_transparent.png
----------------------------------------------------------------------
diff --git a/taverna-workbench-credential-manager-ui/src/main/resources/images/cred_manager_transparent.png b/taverna-workbench-credential-manager-ui/src/main/resources/images/cred_manager_transparent.png
new file mode 100644
index 0000000..1e89bde
Binary files /dev/null and b/taverna-workbench-credential-manager-ui/src/main/resources/images/cred_manager_transparent.png differ
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/8c4b365e/taverna-workbench-credential-manager-ui/src/main/resources/images/table/entry_heading.png
----------------------------------------------------------------------
diff --git a/taverna-workbench-credential-manager-ui/src/main/resources/images/table/entry_heading.png b/taverna-workbench-credential-manager-ui/src/main/resources/images/table/entry_heading.png
new file mode 100644
index 0000000..8b59845
Binary files /dev/null and b/taverna-workbench-credential-manager-ui/src/main/resources/images/table/entry_heading.png differ
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/8c4b365e/taverna-workbench-credential-manager-ui/src/main/resources/images/table/key_entry.png
----------------------------------------------------------------------
diff --git a/taverna-workbench-credential-manager-ui/src/main/resources/images/table/key_entry.png b/taverna-workbench-credential-manager-ui/src/main/resources/images/table/key_entry.png
new file mode 100644
index 0000000..1fd18c6
Binary files /dev/null and b/taverna-workbench-credential-manager-ui/src/main/resources/images/table/key_entry.png differ
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/8c4b365e/taverna-workbench-credential-manager-ui/src/main/resources/images/table/keypair_entry.png
----------------------------------------------------------------------
diff --git a/taverna-workbench-credential-manager-ui/src/main/resources/images/table/keypair_entry.png b/taverna-workbench-credential-manager-ui/src/main/resources/images/table/keypair_entry.png
new file mode 100644
index 0000000..8fd3e8b
Binary files /dev/null and b/taverna-workbench-credential-manager-ui/src/main/resources/images/table/keypair_entry.png differ
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/8c4b365e/taverna-workbench-credential-manager-ui/src/main/resources/images/table/trustcert_entry.png
----------------------------------------------------------------------
diff --git a/taverna-workbench-credential-manager-ui/src/main/resources/images/table/trustcert_entry.png b/taverna-workbench-credential-manager-ui/src/main/resources/images/table/trustcert_entry.png
new file mode 100644
index 0000000..0f110e1
Binary files /dev/null and b/taverna-workbench-credential-manager-ui/src/main/resources/images/table/trustcert_entry.png differ
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/8c4b365e/taverna-workbench-data-management-config-ui/pom.xml
----------------------------------------------------------------------
diff --git a/taverna-workbench-data-management-config-ui/pom.xml b/taverna-workbench-data-management-config-ui/pom.xml
new file mode 100644
index 0000000..4afb4ad
--- /dev/null
+++ b/taverna-workbench-data-management-config-ui/pom.xml
@@ -0,0 +1,68 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>net.sf.taverna.t2</groupId>
+ <artifactId>ui-components</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </parent>
+ <groupId>net.sf.taverna.t2.ui-components</groupId>
+ <artifactId>data-management-config-ui</artifactId>
+ <packaging>bundle</packaging>
+ <name>Data management configuration UI components</name>
+ <dependencies>
+ <dependency>
+ <groupId>net.sf.taverna.t2.lang</groupId>
+ <artifactId>ui</artifactId>
+ <version>${t2.lang.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>net.sf.taverna.t2.ui-api</groupId>
+ <artifactId>helper-api</artifactId>
+ <version>${t2.ui.api.version}</version>
+ </dependency>
+ <!--<dependency>
+ <groupId>net.sf.taverna.t2.ui-components</groupId>
+ <artifactId>run-ui</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ -->
+ <dependency>
+ <groupId>uk.org.taverna.configuration</groupId>
+ <artifactId>taverna-configuration-api</artifactId>
+ <version>${taverna.configuration.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>uk.org.taverna.configuration</groupId>
+ <artifactId>taverna-database-configuration-api</artifactId>
+ <version>${taverna.configuration.version}</version>
+ </dependency>
+
+ <!-- <dependency>
+ <groupId>org.springframework</groupId>
+ <artifactId>spring-aop</artifactId>
+ <version>${spring.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.aspectj</groupId>
+ <artifactId>aspectjrt</artifactId>
+ <version>${aspectj.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.aspectj</groupId>
+ <artifactId>aspectjweaver</artifactId>
+ <version>${aspectj.version}</version>
+ </dependency> -->
+ <dependency>
+ <groupId>log4j</groupId>
+ <artifactId>log4j</artifactId>
+ </dependency>
+
+ <dependency>
+ <groupId>junit</groupId>
+ <artifactId>junit</artifactId>
+ <scope>test</scope>
+ </dependency>
+ </dependencies>
+</project>
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/8c4b365e/taverna-workbench-data-management-config-ui/src/main/java/net/sf/taverna/t2/workbench/reference/config/DataManagementConfigurationPanel.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-data-management-config-ui/src/main/java/net/sf/taverna/t2/workbench/reference/config/DataManagementConfigurationPanel.java b/taverna-workbench-data-management-config-ui/src/main/java/net/sf/taverna/t2/workbench/reference/config/DataManagementConfigurationPanel.java
new file mode 100644
index 0000000..b705362
--- /dev/null
+++ b/taverna-workbench-data-management-config-ui/src/main/java/net/sf/taverna/t2/workbench/reference/config/DataManagementConfigurationPanel.java
@@ -0,0 +1,304 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.workbench.reference.config;
+
+import static java.awt.Color.RED;
+import static java.awt.Font.PLAIN;
+import static java.awt.GridBagConstraints.BOTH;
+import static java.awt.GridBagConstraints.HORIZONTAL;
+import static java.awt.GridBagConstraints.NONE;
+import static java.awt.GridBagConstraints.RELATIVE;
+import static java.awt.GridBagConstraints.WEST;
+import static net.sf.taverna.t2.workbench.helper.Helper.showHelp;
+
+import java.awt.Font;
+import java.awt.GridBagConstraints;
+import java.awt.GridBagLayout;
+import java.awt.Insets;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.sql.Connection;
+
+import javax.swing.AbstractAction;
+import javax.swing.JButton;
+import javax.swing.JCheckBox;
+import javax.swing.JComponent;
+import javax.swing.JPanel;
+import javax.swing.JTextArea;
+import javax.swing.border.EmptyBorder;
+
+import net.sf.taverna.t2.lang.ui.DialogTextArea;
+import uk.org.taverna.configuration.database.DatabaseConfiguration;
+import uk.org.taverna.configuration.database.DatabaseManager;
+
+@SuppressWarnings("serial")
+public class DataManagementConfigurationPanel extends JPanel {
+ private DatabaseConfiguration configuration;
+ private DatabaseManager databaseManager;
+
+ private JCheckBox enableProvenance;
+ private JCheckBox enableInMemory;
+ private JButton helpButton;
+ private JButton resetButton;
+ private JButton applyButton;
+ private JTextArea storageText;
+ private JTextArea exposeDatanatureText;
+ private JCheckBox exposeDatanatureBox;
+ private DialogTextArea enableInMemoryTextDisabled;
+
+ public DataManagementConfigurationPanel(DatabaseConfiguration configuration, DatabaseManager databaseManager) {
+ this.configuration = configuration;
+ this.databaseManager = databaseManager;
+
+ setLayout(generateLayout());
+ resetFields();
+ }
+
+ private static final boolean ADD_WARNING_LISTENERS = false;
+
+ private GridBagLayout generateLayout() {
+ GridBagLayout gridbag = new GridBagLayout();
+ GridBagConstraints c = new GridBagConstraints();
+
+ enableProvenance = new JCheckBox("Enable provenance capture");
+ DialogTextArea enableProvenanceText = new DialogTextArea(
+ "Disabling provenance will prevent you from being able to view intermediate results, but does give a performance benefit.");
+ Font plain = enableProvenanceText.getFont().deriveFont(PLAIN, 11);
+ enableProvenanceText.setLineWrap(true);
+ enableProvenanceText.setWrapStyleWord(true);
+ enableProvenanceText.setEditable(false);
+ enableProvenanceText.setFocusable(false);
+ enableProvenanceText.setOpaque(false);
+ enableProvenanceText.setFont(plain);
+
+ enableInMemory = new JCheckBox("In-memory storage");
+ DialogTextArea enableInMemoryText = new DialogTextArea(
+ "Data will not be stored between workbench sessions. If you run workflows passing larger amounts of data, try disabling in-memory storage, which can reduce execution performance, but also Taverna's memory consumption. ");
+ enableInMemoryText.setLineWrap(true);
+ enableInMemoryText.setWrapStyleWord(true);
+ enableInMemoryText.setEditable(false);
+ enableInMemoryText.setFocusable(false);
+ enableInMemoryText.setOpaque(false);
+ enableInMemoryText.setFont(plain);
+
+ enableInMemoryTextDisabled = new DialogTextArea(
+ "If you enable in-memory storage of data when provenance collection is turned on then provenance will not be available after you shutdown Taverna as the in-memory data will be lost.");
+ enableInMemoryTextDisabled.setLineWrap(true);
+ enableInMemoryTextDisabled.setWrapStyleWord(true);
+ enableInMemoryTextDisabled.setEditable(false);
+ enableInMemoryTextDisabled.setFocusable(false);
+ enableInMemoryTextDisabled.setOpaque(false);
+ enableInMemoryTextDisabled.setFont(plain);
+ enableInMemoryTextDisabled.setForeground(RED);
+ enableInMemoryTextDisabled.setVisible(false);
+
+ // Disable warning as inMemory is default
+ // To re-enable - also see resetFields()
+
+ if (ADD_WARNING_LISTENERS) {
+ enableInMemory.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ enableInMemoryTextDisabled.setVisible(enableProvenance
+ .isSelected() && enableInMemory.isSelected());
+ }
+ });
+ enableProvenance.addActionListener(new ActionListener() {
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ enableInMemoryTextDisabled.setVisible(enableProvenance
+ .isSelected() && enableInMemory.isSelected());
+ }
+ });
+ }
+
+ storageText = new JTextArea(
+ "Select how Taverna stores the data and provenance produced when a workflow is run. This includes workflow results and intermediate results.");
+ storageText.setLineWrap(true);
+ storageText.setWrapStyleWord(true);
+ storageText.setEditable(false);
+ storageText.setFocusable(false);
+ storageText.setBorder(new EmptyBorder(10, 10, 10, 10));
+ storageText.setFont(plain);
+
+ JComponent portPanel = createDerbyServerStatusComponent();
+
+ c.anchor = WEST;
+ c.insets = new Insets(0, 0, 10, 0);
+ c.gridx = 0;
+ c.gridy = RELATIVE;
+ c.weightx = 0.0;
+ c.weighty = 0.0;
+ c.fill = HORIZONTAL;
+ gridbag.setConstraints(storageText, c);
+ add(storageText);
+
+ c.ipady = 0;
+ c.insets = new Insets(0, 0, 5, 0);
+ c.fill = NONE;
+ gridbag.setConstraints(enableProvenance, c);
+ add(enableProvenance);
+
+ c.insets = new Insets(0, 20, 15, 20);
+ c.fill = HORIZONTAL;
+ gridbag.setConstraints(enableProvenanceText, c);
+ add(enableProvenanceText);
+
+ c.insets = new Insets(0, 0, 5, 0);
+ c.fill = GridBagConstraints.NONE;
+ gridbag.setConstraints(enableInMemory, c);
+ add(enableInMemory);
+
+ c.insets = new Insets(0, 20, 15, 20);
+ c.fill = HORIZONTAL;
+ gridbag.setConstraints(enableInMemoryText, c);
+ add(enableInMemoryText);
+
+ c.insets = new Insets(0, 20, 15, 20);
+ c.fill = HORIZONTAL;
+ gridbag.setConstraints(enableInMemoryTextDisabled, c);
+ add(enableInMemoryTextDisabled);
+
+ c.insets = new Insets(0, 20, 15, 20);
+ gridbag.setConstraints(portPanel, c);
+ add(portPanel);
+
+ c.insets = new Insets(0, 0, 5, 0);
+ c.fill = NONE;
+ exposeDatanatureBox = new JCheckBox(
+ "Allow setting of input data encoding");
+ gridbag.setConstraints(exposeDatanatureBox, c);
+ add(exposeDatanatureBox);
+
+ exposeDatanatureText = new JTextArea(
+ "Select if you want to control how Taverna handles files read as input data");
+ exposeDatanatureText.setLineWrap(true);
+ exposeDatanatureText.setWrapStyleWord(true);
+ exposeDatanatureText.setEditable(false);
+ exposeDatanatureText.setFocusable(false);
+ exposeDatanatureText.setOpaque(false);
+ exposeDatanatureText.setFont(plain);
+
+ c.insets = new Insets(0, 20, 15, 20);
+ c.fill = HORIZONTAL;
+ gridbag.setConstraints(exposeDatanatureText, c);
+ add(exposeDatanatureText);
+
+ JPanel buttonPanel = createButtonPanel();
+ c.weightx = 1.0;
+ c.weighty = 1.0;
+ c.fill = BOTH;
+ c.insets = new Insets(0, 0, 5, 0);
+ gridbag.setConstraints(buttonPanel, c);
+ add(buttonPanel);
+ return gridbag;
+ }
+
+ private JComponent createDerbyServerStatusComponent() {
+ DialogTextArea textArea = new DialogTextArea();
+ boolean running;
+
+ try (Connection connection = databaseManager.getConnection()) {
+ running = databaseManager.isRunning();
+ } catch (Exception e) {
+ running = false;
+ }
+
+ if (running)
+ textArea.setText("The database is currently running on port: "
+ + configuration.getCurrentPort() + ".");
+ else
+ textArea.setText("Unable to retrieve a database connection - "
+ + "the database is not available.");
+
+ textArea.setLineWrap(true);
+ textArea.setWrapStyleWord(true);
+ textArea.setEditable(false);
+ textArea.setFocusable(false);
+ textArea.setOpaque(false);
+ textArea.setAlignmentX(CENTER_ALIGNMENT);
+ textArea.setFont(textArea.getFont().deriveFont(PLAIN, 11));
+ textArea.setVisible(configuration.getStartInternalDerbyServer());
+ return textArea;
+ }
+
+ // for testing only
+// public static void main(String[] args) {
+// JDialog dialog = new JDialog();
+// dialog.add(new DataManagementConfigurationPanel());
+// dialog.setModal(true);
+// dialog.setSize(500, 300);
+// dialog.setVisible(true);
+// System.exit(0);
+// }
+
+ public void resetFields() {
+ enableInMemory.setSelected(configuration.isInMemory());
+ enableProvenance.setSelected(configuration.isProvenanceEnabled());
+ exposeDatanatureBox.setSelected(configuration.isExposeDatanature());
+
+ if (ADD_WARNING_LISTENERS) {
+ enableInMemoryTextDisabled.setVisible(enableProvenance.isSelected()
+ && enableInMemory.isSelected());
+ }
+ }
+
+ /*private boolean workflowInstances() {
+ return DataflowRunsComponent.getInstance().getRunListCount()>0;
+ }*/
+
+ private void applySettings() {
+ configuration.setProvenanceEnabled(enableProvenance.isSelected());
+ configuration.setInMemory(enableInMemory.isSelected());
+ configuration.setExposeDatanature(exposeDatanatureBox.isSelected());
+ }
+
+ private JPanel createButtonPanel() {
+ final JPanel panel = new JPanel();
+
+ helpButton = new JButton(new AbstractAction("Help") {
+ @Override
+ public void actionPerformed(ActionEvent arg0) {
+ showHelp(panel);
+ }
+ });
+ panel.add(helpButton);
+
+ resetButton = new JButton(new AbstractAction("Reset") {
+ @Override
+ public void actionPerformed(ActionEvent arg0) {
+ resetFields();
+ }
+ });
+ panel.add(resetButton);
+
+ applyButton = new JButton(new AbstractAction("Apply") {
+ @Override
+ public void actionPerformed(ActionEvent arg0) {
+ applySettings();
+ resetFields();
+ }
+ });
+ panel.add(applyButton);
+
+ return panel;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/8c4b365e/taverna-workbench-data-management-config-ui/src/main/java/net/sf/taverna/t2/workbench/reference/config/DataManagementConfigurationUIFactory.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-data-management-config-ui/src/main/java/net/sf/taverna/t2/workbench/reference/config/DataManagementConfigurationUIFactory.java b/taverna-workbench-data-management-config-ui/src/main/java/net/sf/taverna/t2/workbench/reference/config/DataManagementConfigurationUIFactory.java
new file mode 100644
index 0000000..2799c7e
--- /dev/null
+++ b/taverna-workbench-data-management-config-ui/src/main/java/net/sf/taverna/t2/workbench/reference/config/DataManagementConfigurationUIFactory.java
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.workbench.reference.config;
+
+import javax.swing.JPanel;
+
+import uk.org.taverna.configuration.Configurable;
+import uk.org.taverna.configuration.ConfigurationUIFactory;
+import uk.org.taverna.configuration.database.DatabaseConfiguration;
+import uk.org.taverna.configuration.database.DatabaseManager;
+
+public class DataManagementConfigurationUIFactory implements
+ ConfigurationUIFactory {
+ private DatabaseConfiguration databaseConfiguration;
+ private DatabaseManager databaseManager;
+
+ private DataManagementConfigurationPanel configPanel;
+
+ @Override
+ public boolean canHandle(String uuid) {
+ return uuid.equals(getConfigurable().getUUID());
+ }
+
+ @Override
+ public JPanel getConfigurationPanel() {
+ if (configPanel == null)
+ configPanel = new DataManagementConfigurationPanel(
+ databaseConfiguration, databaseManager);
+ configPanel.resetFields();
+ return configPanel;
+ }
+
+ @Override
+ public Configurable getConfigurable() {
+ return databaseConfiguration;
+ }
+
+ public void setDatabaseConfiguration(
+ DatabaseConfiguration databaseConfiguration) {
+ this.databaseConfiguration = databaseConfiguration;
+ }
+
+ public void setDatabaseManager(DatabaseManager databaseManager) {
+ this.databaseManager = databaseManager;
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/8c4b365e/taverna-workbench-data-management-config-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.configuration.ConfigurationUIFactory
----------------------------------------------------------------------
diff --git a/taverna-workbench-data-management-config-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.configuration.ConfigurationUIFactory b/taverna-workbench-data-management-config-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.configuration.ConfigurationUIFactory
new file mode 100644
index 0000000..8afa6ca
--- /dev/null
+++ b/taverna-workbench-data-management-config-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.configuration.ConfigurationUIFactory
@@ -0,0 +1 @@
+net.sf.taverna.t2.workbench.reference.config.DataManagementConfigurationUIFactory
\ No newline at end of file
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/8c4b365e/taverna-workbench-data-management-config-ui/src/main/resources/META-INF/spring/data-management-config-ui-context-osgi.xml
----------------------------------------------------------------------
diff --git a/taverna-workbench-data-management-config-ui/src/main/resources/META-INF/spring/data-management-config-ui-context-osgi.xml b/taverna-workbench-data-management-config-ui/src/main/resources/META-INF/spring/data-management-config-ui-context-osgi.xml
new file mode 100644
index 0000000..89f84a7
--- /dev/null
+++ b/taverna-workbench-data-management-config-ui/src/main/resources/META-INF/spring/data-management-config-ui-context-osgi.xml
@@ -0,0 +1,14 @@
+<?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="DataManagementConfigurationUIFactory" interface="uk.org.taverna.configuration.ConfigurationUIFactory" />
+
+ <reference id="databaseConfiguration" interface="uk.org.taverna.configuration.database.DatabaseConfiguration" />
+ <reference id="databaseManager" interface="uk.org.taverna.configuration.database.DatabaseManager" />
+
+</beans:beans>
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/8c4b365e/taverna-workbench-data-management-config-ui/src/main/resources/META-INF/spring/data-management-config-ui-context.xml
----------------------------------------------------------------------
diff --git a/taverna-workbench-data-management-config-ui/src/main/resources/META-INF/spring/data-management-config-ui-context.xml b/taverna-workbench-data-management-config-ui/src/main/resources/META-INF/spring/data-management-config-ui-context.xml
new file mode 100644
index 0000000..f9f40ed
--- /dev/null
+++ b/taverna-workbench-data-management-config-ui/src/main/resources/META-INF/spring/data-management-config-ui-context.xml
@@ -0,0 +1,11 @@
+<?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="DataManagementConfigurationUIFactory" class="net.sf.taverna.t2.workbench.reference.config.DataManagementConfigurationUIFactory">
+ <property name="databaseConfiguration" ref="databaseConfiguration"/>
+ <property name="databaseManager" ref="databaseManager"/>
+ </bean>
+
+</beans>
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/8c4b365e/taverna-workbench-design-ui/pom.xml
----------------------------------------------------------------------
diff --git a/taverna-workbench-design-ui/pom.xml b/taverna-workbench-design-ui/pom.xml
new file mode 100644
index 0000000..f88f676
--- /dev/null
+++ b/taverna-workbench-design-ui/pom.xml
@@ -0,0 +1,44 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>net.sf.taverna.t2</groupId>
+ <artifactId>ui-components</artifactId>
+ <version>2.0-SNAPSHOT</version>
+ </parent>
+ <groupId>net.sf.taverna.t2.ui-components</groupId>
+ <artifactId>design-ui</artifactId>
+ <name>Design UI</name>
+ <packaging>bundle</packaging>
+ <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>edits-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>selection-api</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>uk.org.taverna.scufl2</groupId>
+ <artifactId>scufl2-api</artifactId>
+ </dependency>
+ </dependencies>
+</project>
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/8c4b365e/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/AddConditionAction.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/AddConditionAction.java b/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/AddConditionAction.java
new file mode 100644
index 0000000..510775f
--- /dev/null
+++ b/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/AddConditionAction.java
@@ -0,0 +1,82 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.workbench.design.actions;
+
+import java.awt.Component;
+import java.awt.event.ActionEvent;
+
+import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;
+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.t2.workflow.edits.AddChildEdit;
+
+import org.apache.log4j.Logger;
+
+import uk.org.taverna.scufl2.api.common.Scufl2Tools;
+import uk.org.taverna.scufl2.api.core.BlockingControlLink;
+import uk.org.taverna.scufl2.api.core.Processor;
+import uk.org.taverna.scufl2.api.core.Workflow;
+import uk.org.taverna.scufl2.api.profiles.ProcessorBinding;
+
+/**
+ * Action for adding a condition to the dataflow.
+ *
+ * @author David Withers
+ */
+@SuppressWarnings("serial")
+public class AddConditionAction extends DataflowEditAction {
+ private static final Logger logger = Logger.getLogger(AddConditionAction.class);
+ private static final Scufl2Tools scufl2Tools = new Scufl2Tools();
+
+ private Processor control;
+ private Processor target;
+
+ public AddConditionAction(Workflow dataflow, Processor control,
+ Processor target, Component component, EditManager editManager,
+ SelectionManager selectionManager,
+ ActivityIconManager activityIconManager) {
+ super(dataflow, component, editManager, selectionManager);
+ this.control = control;
+ this.target = target;
+ ProcessorBinding processorBinding = scufl2Tools
+ .processorBindingForProcessor(control, dataflow.getParent()
+ .getMainProfile());
+ putValue(SMALL_ICON,
+ activityIconManager.iconForActivity(processorBinding
+ .getBoundActivity().getType()));
+ putValue(NAME, control.getName());
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent event) {
+ try {
+ BlockingControlLink controlLink = new BlockingControlLink();
+ controlLink.setUntilFinished(control);
+ controlLink.setBlock(target);
+ editManager.doDataflowEdit(dataflow.getParent(),
+ new AddChildEdit<>(dataflow, controlLink));
+ } catch (EditException e) {
+ logger.debug("Create control link between '" + control.getName()
+ + "' and '" + target.getName() + "' failed");
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/8c4b365e/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/AddDataflowInputAction.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/AddDataflowInputAction.java b/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/AddDataflowInputAction.java
new file mode 100644
index 0000000..ff56997
--- /dev/null
+++ b/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/AddDataflowInputAction.java
@@ -0,0 +1,96 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.workbench.design.actions;
+
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.event.ActionEvent;
+import java.util.HashSet;
+import java.util.Set;
+
+import net.sf.taverna.t2.lang.ui.ValidatingUserInputDialog;
+import net.sf.taverna.t2.workbench.design.ui.DataflowInputPortPanel;
+import net.sf.taverna.t2.workbench.edits.EditException;
+import net.sf.taverna.t2.workbench.edits.EditManager;
+import net.sf.taverna.t2.workbench.icons.WorkbenchIcons;
+import net.sf.taverna.t2.workbench.selection.SelectionManager;
+import net.sf.taverna.t2.workflow.edits.AddWorkflowInputPortEdit;
+
+import org.apache.log4j.Logger;
+
+import uk.org.taverna.scufl2.api.core.Workflow;
+import uk.org.taverna.scufl2.api.port.InputWorkflowPort;
+
+/**
+ * Action for adding an input port to the dataflow.
+ *
+ * @author David Withers
+ */
+@SuppressWarnings("serial")
+public class AddDataflowInputAction extends DataflowEditAction {
+ private static final Logger logger = Logger
+ .getLogger(AddDataflowInputAction.class);
+
+ public AddDataflowInputAction(Workflow dataflow, Component component,
+ EditManager editManager, SelectionManager selectionManager) {
+ super(dataflow, component, editManager, selectionManager);
+ putValue(SMALL_ICON, WorkbenchIcons.inputIcon);
+ putValue(NAME, "Workflow input port");
+ putValue(SHORT_DESCRIPTION, "Add workflow input port");
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent event) {
+ try {
+ Set<String> usedInputPorts = new HashSet<>();
+ for (InputWorkflowPort inputPort : dataflow.getInputPorts())
+ usedInputPorts.add(inputPort.getName());
+
+ DataflowInputPortPanel inputPanel = new DataflowInputPortPanel();
+
+ ValidatingUserInputDialog vuid = new ValidatingUserInputDialog(
+ "Add Workflow Input Port", inputPanel);
+ vuid.addTextComponentValidation(inputPanel.getPortNameField(),
+ "Set the workflow input port name.", usedInputPorts,
+ "Duplicate workflow input port name.",
+ "[\\p{L}\\p{Digit}_.]+",
+ "Invalid workflow input port name.");
+ vuid.addMessageComponent(inputPanel.getSingleValueButton(),
+ "Set the input port type.");
+ vuid.addMessageComponent(inputPanel.getListValueButton(),
+ "Set the input port list depth.");
+ vuid.setSize(new Dimension(400, 250));
+
+ inputPanel.setPortDepth(0);
+
+ if (vuid.show(component)) {
+ InputWorkflowPort dataflowInputPort = new InputWorkflowPort();
+ dataflowInputPort.setName(inputPanel.getPortName());
+ dataflowInputPort.setDepth(inputPanel.getPortDepth());
+ editManager.doDataflowEdit(dataflow.getParent(),
+ new AddWorkflowInputPortEdit(dataflow,
+ dataflowInputPort));
+ }
+ } catch (EditException e) {
+ logger.warn("Adding a new workflow input port failed");
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/8c4b365e/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/AddDataflowOutputAction.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/AddDataflowOutputAction.java b/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/AddDataflowOutputAction.java
new file mode 100644
index 0000000..98bf8be
--- /dev/null
+++ b/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/AddDataflowOutputAction.java
@@ -0,0 +1,90 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.workbench.design.actions;
+
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.event.ActionEvent;
+import java.util.HashSet;
+import java.util.Set;
+
+import net.sf.taverna.t2.lang.ui.ValidatingUserInputDialog;
+import net.sf.taverna.t2.workbench.design.ui.DataflowOutputPortPanel;
+import net.sf.taverna.t2.workbench.edits.EditException;
+import net.sf.taverna.t2.workbench.edits.EditManager;
+import net.sf.taverna.t2.workbench.icons.WorkbenchIcons;
+import net.sf.taverna.t2.workbench.selection.SelectionManager;
+import net.sf.taverna.t2.workflow.edits.AddWorkflowOutputPortEdit;
+
+import org.apache.log4j.Logger;
+
+import uk.org.taverna.scufl2.api.core.Workflow;
+import uk.org.taverna.scufl2.api.port.OutputWorkflowPort;
+
+/**
+ * Action for adding an output port to the dataflow.
+ *
+ * @author David Withers
+ */
+@SuppressWarnings("serial")
+public class AddDataflowOutputAction extends DataflowEditAction {
+ private static final Logger logger = Logger
+ .getLogger(AddDataflowOutputAction.class);
+
+ public AddDataflowOutputAction(Workflow dataflow, Component component,
+ EditManager editManager, SelectionManager selectionManager) {
+ super(dataflow, component, editManager, selectionManager);
+ putValue(SMALL_ICON, WorkbenchIcons.outputIcon);
+ putValue(NAME, "Workflow output port");
+ putValue(SHORT_DESCRIPTION, "Add workflow output port");
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent event) {
+ try {
+ Set<String> usedOutputPorts = new HashSet<>();
+ for (OutputWorkflowPort outputPort : dataflow.getOutputPorts())
+ usedOutputPorts.add(outputPort.getName());
+
+ DataflowOutputPortPanel inputPanel = new DataflowOutputPortPanel();
+
+ ValidatingUserInputDialog vuid = new ValidatingUserInputDialog(
+ "Add Workflow Output Port", inputPanel);
+ vuid.addTextComponentValidation(inputPanel.getPortNameField(),
+ "Set the workflow output port name.", usedOutputPorts,
+ "Duplicate workflow output port name.",
+ "[\\p{L}\\p{Digit}_.]+",
+ "Invalid workflow output port name.");
+ vuid.setSize(new Dimension(400, 200));
+
+ if (vuid.show(component)) {
+ String portName = inputPanel.getPortName();
+ OutputWorkflowPort dataflowOutputPort = new OutputWorkflowPort();
+ dataflowOutputPort.setName(portName);
+ editManager.doDataflowEdit(dataflow.getParent(),
+ new AddWorkflowOutputPortEdit(dataflow,
+ dataflowOutputPort));
+ }
+ } catch (EditException e) {
+ logger.debug("Create workflow output port failed", e);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/8c4b365e/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/DataflowEditAction.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/DataflowEditAction.java b/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/DataflowEditAction.java
new file mode 100644
index 0000000..a2ca5ea
--- /dev/null
+++ b/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/DataflowEditAction.java
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.workbench.design.actions;
+
+import java.awt.Component;
+
+import javax.swing.AbstractAction;
+
+import net.sf.taverna.t2.workbench.edits.EditManager;
+import net.sf.taverna.t2.workbench.selection.DataflowSelectionModel;
+import net.sf.taverna.t2.workbench.selection.SelectionManager;
+import uk.org.taverna.scufl2.api.common.Scufl2Tools;
+import uk.org.taverna.scufl2.api.core.Workflow;
+
+/**
+ * Abstract superclass of dataflow edit actions.
+ *
+ * @author David Withers
+ */
+public abstract class DataflowEditAction extends AbstractAction {
+ private static final long serialVersionUID = -1155192575675025091L;
+
+ protected final SelectionManager selectionManager;
+ protected EditManager editManager;
+ protected DataflowSelectionModel dataflowSelectionModel;
+ protected Workflow dataflow;
+ protected Component component;
+ protected Scufl2Tools scufl2Tools = new Scufl2Tools();
+
+ public DataflowEditAction(Workflow dataflow, Component component,
+ EditManager editManager, SelectionManager selectionManager) {
+ this.dataflow = dataflow;
+ this.component = component;
+ this.editManager = editManager;
+ this.selectionManager = selectionManager;
+ dataflowSelectionModel = selectionManager
+ .getDataflowSelectionModel(dataflow.getParent());
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/8c4b365e/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/EditDataflowInputPortAction.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/EditDataflowInputPortAction.java b/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/EditDataflowInputPortAction.java
new file mode 100644
index 0000000..e4513d2
--- /dev/null
+++ b/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/EditDataflowInputPortAction.java
@@ -0,0 +1,115 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.workbench.design.actions;
+
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.event.ActionEvent;
+import java.util.ArrayList;
+import java.util.HashSet;
+import java.util.List;
+import java.util.Set;
+
+import net.sf.taverna.t2.lang.ui.ValidatingUserInputDialog;
+import net.sf.taverna.t2.workbench.design.ui.DataflowInputPortPanel;
+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.workbench.edits.EditManager;
+import net.sf.taverna.t2.workbench.icons.WorkbenchIcons;
+import net.sf.taverna.t2.workbench.selection.SelectionManager;
+import net.sf.taverna.t2.workflow.edits.ChangeDepthEdit;
+import net.sf.taverna.t2.workflow.edits.RenameEdit;
+
+import org.apache.log4j.Logger;
+
+import uk.org.taverna.scufl2.api.core.Workflow;
+import uk.org.taverna.scufl2.api.port.InputWorkflowPort;
+
+/**
+ * Action for editing a dataflow input port.
+ *
+ * @author David Withers
+ */
+@SuppressWarnings("serial")
+public class EditDataflowInputPortAction extends DataflowEditAction {
+ private static Logger logger = Logger
+ .getLogger(EditDataflowInputPortAction.class);
+
+ private InputWorkflowPort port;
+
+ public EditDataflowInputPortAction(Workflow dataflow,
+ InputWorkflowPort port, Component component,
+ EditManager editManager, SelectionManager selectionManager) {
+ super(dataflow, component, editManager, selectionManager);
+ this.port = port;
+ putValue(SMALL_ICON, WorkbenchIcons.renameIcon);
+ putValue(NAME, "Edit workflow input port...");
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ Set<String> usedInputPorts = new HashSet<>();
+ for (InputWorkflowPort usedInputPort : dataflow.getInputPorts())
+ if (!usedInputPort.getName().equals(port.getName()))
+ usedInputPorts.add(usedInputPort.getName());
+
+ DataflowInputPortPanel inputPanel = new DataflowInputPortPanel();
+
+ ValidatingUserInputDialog vuid = new ValidatingUserInputDialog(
+ "Edit Workflow Input Port", inputPanel);
+ vuid.addTextComponentValidation(inputPanel.getPortNameField(),
+ "Set the workflow input port name.", usedInputPorts,
+ "Duplicate workflow input port name.", "[\\p{L}\\p{Digit}_.]+",
+ "Invalid workflow input port name.");
+ vuid.addMessageComponent(inputPanel.getSingleValueButton(),
+ "Set the input port type.");
+ vuid.addMessageComponent(inputPanel.getListValueButton(),
+ "Set the input port list depth.");
+ vuid.setSize(new Dimension(400, 250));
+
+ inputPanel.setPortName(port.getName());
+ inputPanel.setPortDepth(port.getDepth());
+
+ try {
+ if (vuid.show(component))
+ changeInputPort(inputPanel);
+ } catch (EditException e1) {
+ logger.warn("Rename workflow input port failed", e1);
+ }
+ }
+
+ private void changeInputPort(DataflowInputPortPanel inputPanel)
+ throws EditException {
+ List<Edit<?>> editList = new ArrayList<>();
+ String portName = inputPanel.getPortName();
+ if (!portName.equals(port.getName()))
+ editList.add(new RenameEdit<>(port, portName));
+ int portDepth = inputPanel.getPortDepth();
+ if (portDepth != port.getDepth())
+ editList.add(new ChangeDepthEdit<>(port, portDepth));
+ if (editList.size() == 1)
+ editManager.doDataflowEdit(dataflow.getParent(), editList.get(0));
+ else if (editList.size() > 1)
+ editManager.doDataflowEdit(dataflow.getParent(), new CompoundEdit(
+ editList));
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/8c4b365e/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/EditDataflowOutputPortAction.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/EditDataflowOutputPortAction.java b/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/EditDataflowOutputPortAction.java
new file mode 100644
index 0000000..da7c0e2
--- /dev/null
+++ b/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/EditDataflowOutputPortAction.java
@@ -0,0 +1,95 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.workbench.design.actions;
+
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.event.ActionEvent;
+import java.util.HashSet;
+import java.util.Set;
+
+import net.sf.taverna.t2.lang.ui.ValidatingUserInputDialog;
+import net.sf.taverna.t2.workbench.design.ui.DataflowOutputPortPanel;
+import net.sf.taverna.t2.workbench.edits.EditException;
+import net.sf.taverna.t2.workbench.edits.EditManager;
+import net.sf.taverna.t2.workbench.icons.WorkbenchIcons;
+import net.sf.taverna.t2.workbench.selection.SelectionManager;
+import net.sf.taverna.t2.workflow.edits.RenameEdit;
+
+import org.apache.log4j.Logger;
+
+import uk.org.taverna.scufl2.api.core.Workflow;
+import uk.org.taverna.scufl2.api.port.OutputWorkflowPort;
+
+/**
+ * Action for editing a dataflow output port.
+ *
+ * @author David Withers
+ */
+@SuppressWarnings("serial")
+public class EditDataflowOutputPortAction extends DataflowEditAction {
+ private static final Logger logger = Logger
+ .getLogger(EditDataflowOutputPortAction.class);
+
+ private OutputWorkflowPort port;
+
+ public EditDataflowOutputPortAction(Workflow dataflow,
+ OutputWorkflowPort port, Component component,
+ EditManager editManager, SelectionManager selectionManager) {
+ super(dataflow, component, editManager, selectionManager);
+ this.port = port;
+ putValue(SMALL_ICON, WorkbenchIcons.renameIcon);
+ putValue(NAME, "Edit workflow output port...");
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ Set<String> usedOutputPorts = new HashSet<>();
+ for (OutputWorkflowPort usedOutputPort : dataflow.getOutputPorts())
+ if (!usedOutputPort.getName().equals(port.getName()))
+ usedOutputPorts.add(usedOutputPort.getName());
+
+ DataflowOutputPortPanel inputPanel = new DataflowOutputPortPanel();
+
+ ValidatingUserInputDialog vuid = new ValidatingUserInputDialog(
+ "Edit Workflow Output Port", inputPanel);
+ vuid.addTextComponentValidation(inputPanel.getPortNameField(),
+ "Set the workflow output port name.", usedOutputPorts,
+ "Duplicate workflow output port name.",
+ "[\\p{L}\\p{Digit}_.]+", "Invalid workflow output port name.");
+ vuid.setSize(new Dimension(400, 200));
+
+ inputPanel.setPortName(port.getName());
+
+ try {
+ if (vuid.show(component))
+ changeOutputPort(inputPanel);
+ } catch (EditException ex) {
+ logger.debug("Rename workflow output port failed", ex);
+ }
+ }
+
+ private void changeOutputPort(DataflowOutputPortPanel inputPanel)
+ throws EditException {
+ editManager.doDataflowEdit(dataflow.getParent(), new RenameEdit<>(port,
+ inputPanel.getPortName()));
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/8c4b365e/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveConditionAction.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveConditionAction.java b/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveConditionAction.java
new file mode 100644
index 0000000..89036f0
--- /dev/null
+++ b/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveConditionAction.java
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.workbench.design.actions;
+
+import static net.sf.taverna.t2.workbench.icons.WorkbenchIcons.deleteIcon;
+
+import java.awt.Component;
+import java.awt.event.ActionEvent;
+
+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.t2.workflow.edits.RemoveChildEdit;
+
+import org.apache.log4j.Logger;
+
+import uk.org.taverna.scufl2.api.core.ControlLink;
+import uk.org.taverna.scufl2.api.core.Workflow;
+
+/**
+ * Action for removing a condition from the dataflow.
+ *
+ * @author David Withers
+ */
+@SuppressWarnings("serial")
+public class RemoveConditionAction extends DataflowEditAction {
+ private static final Logger logger = Logger
+ .getLogger(RemoveConditionAction.class);
+
+ private ControlLink controlLink;
+
+ public RemoveConditionAction(Workflow dataflow, ControlLink controlLink,
+ Component component, EditManager editManager,
+ SelectionManager selectionManager) {
+ super(dataflow, component, editManager, selectionManager);
+ this.controlLink = controlLink;
+ putValue(SMALL_ICON, deleteIcon);
+ putValue(NAME, "Delete control link");
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ try {
+ dataflowSelectionModel.removeSelection(controlLink);
+ editManager.doDataflowEdit(dataflow.getParent(),
+ new RemoveChildEdit<>(dataflow, controlLink));
+ } catch (EditException e1) {
+ logger.debug("Delete control link failed", e1);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/8c4b365e/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveDataflowInputPortAction.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveDataflowInputPortAction.java b/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveDataflowInputPortAction.java
new file mode 100644
index 0000000..5483ea5
--- /dev/null
+++ b/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveDataflowInputPortAction.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.workbench.design.actions;
+
+import static net.sf.taverna.t2.workbench.icons.WorkbenchIcons.deleteIcon;
+
+import java.awt.Component;
+import java.awt.event.ActionEvent;
+import java.util.ArrayList;
+import java.util.List;
+
+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.workbench.edits.EditManager;
+import net.sf.taverna.t2.workbench.selection.SelectionManager;
+import net.sf.taverna.t2.workflow.edits.RemoveDataLinkEdit;
+import net.sf.taverna.t2.workflow.edits.RemoveWorkflowInputPortEdit;
+
+import org.apache.log4j.Logger;
+
+import uk.org.taverna.scufl2.api.core.DataLink;
+import uk.org.taverna.scufl2.api.core.Workflow;
+import uk.org.taverna.scufl2.api.port.InputWorkflowPort;
+
+/**
+ * Action for removing an input port from the dataflow.
+ *
+ * @author David Withers
+ */
+@SuppressWarnings("serial")
+public class RemoveDataflowInputPortAction extends DataflowEditAction {
+ private static Logger logger = Logger
+ .getLogger(RemoveDataflowInputPortAction.class);
+
+ private InputWorkflowPort port;
+
+ public RemoveDataflowInputPortAction(Workflow dataflow,
+ InputWorkflowPort port, Component component,
+ EditManager editManager, SelectionManager selectionManager) {
+ super(dataflow, component, editManager, selectionManager);
+ this.port = port;
+ putValue(SMALL_ICON, deleteIcon);
+ putValue(NAME, "Delete workflow input port");
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ try {
+ dataflowSelectionModel.removeSelection(port);
+ List<DataLink> datalinks = scufl2Tools.datalinksFrom(port);
+ if (datalinks.isEmpty())
+ editManager.doDataflowEdit(dataflow.getParent(),
+ new RemoveWorkflowInputPortEdit(dataflow, port));
+ else {
+ List<Edit<?>> editList = new ArrayList<>();
+ for (DataLink datalink : datalinks)
+ editList.add(new RemoveDataLinkEdit(dataflow, datalink));
+ editList.add(new RemoveWorkflowInputPortEdit(dataflow, port));
+ editManager.doDataflowEdit(dataflow.getParent(),
+ new CompoundEdit(editList));
+ }
+ } catch (EditException e1) {
+ logger.debug("Delete workflow input port failed", e1);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/8c4b365e/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveDataflowOutputPortAction.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveDataflowOutputPortAction.java b/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveDataflowOutputPortAction.java
new file mode 100644
index 0000000..ed91d41
--- /dev/null
+++ b/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveDataflowOutputPortAction.java
@@ -0,0 +1,85 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.workbench.design.actions;
+
+import static net.sf.taverna.t2.workbench.icons.WorkbenchIcons.deleteIcon;
+
+import java.awt.Component;
+import java.awt.event.ActionEvent;
+import java.util.ArrayList;
+import java.util.List;
+
+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.workbench.edits.EditManager;
+import net.sf.taverna.t2.workbench.selection.SelectionManager;
+import net.sf.taverna.t2.workflow.edits.RemoveDataLinkEdit;
+import net.sf.taverna.t2.workflow.edits.RemoveWorkflowOutputPortEdit;
+
+import org.apache.log4j.Logger;
+
+import uk.org.taverna.scufl2.api.core.DataLink;
+import uk.org.taverna.scufl2.api.core.Workflow;
+import uk.org.taverna.scufl2.api.port.OutputWorkflowPort;
+
+/**
+ * Action for removing an output port from the dataflow.
+ *
+ * @author David Withers
+ */
+@SuppressWarnings("serial")
+public class RemoveDataflowOutputPortAction extends DataflowEditAction {
+ private static final Logger logger = Logger
+ .getLogger(RemoveDataflowOutputPortAction.class);
+
+ private OutputWorkflowPort port;
+
+ public RemoveDataflowOutputPortAction(Workflow dataflow,
+ OutputWorkflowPort port, Component component,
+ EditManager editManager, SelectionManager selectionManager) {
+ super(dataflow, component, editManager, selectionManager);
+ this.port = port;
+ putValue(SMALL_ICON, deleteIcon);
+ putValue(NAME, "Delete workflow output port");
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ try {
+ dataflowSelectionModel.removeSelection(port);
+ List<DataLink> datalinks = scufl2Tools.datalinksTo(port);
+ if (datalinks.isEmpty())
+ editManager.doDataflowEdit(dataflow.getParent(),
+ new RemoveWorkflowOutputPortEdit(dataflow, port));
+ else {
+ List<Edit<?>> editList = new ArrayList<>();
+ for (DataLink datalink : datalinks)
+ editList.add(new RemoveDataLinkEdit(dataflow, datalink));
+ editList.add(new RemoveWorkflowOutputPortEdit(dataflow, port));
+ editManager.doDataflowEdit(dataflow.getParent(),
+ new CompoundEdit(editList));
+ }
+ } catch (EditException ex) {
+ logger.debug("Delete workflow output port failed", ex);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/8c4b365e/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveDatalinkAction.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveDatalinkAction.java b/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveDatalinkAction.java
new file mode 100644
index 0000000..e4df75d
--- /dev/null
+++ b/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveDatalinkAction.java
@@ -0,0 +1,68 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.workbench.design.actions;
+
+import static net.sf.taverna.t2.workbench.icons.WorkbenchIcons.deleteIcon;
+
+import java.awt.Component;
+import java.awt.event.ActionEvent;
+
+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.t2.workflow.edits.RemoveDataLinkEdit;
+
+import org.apache.log4j.Logger;
+
+import uk.org.taverna.scufl2.api.core.DataLink;
+import uk.org.taverna.scufl2.api.core.Workflow;
+
+/**
+ * Action for removing a datalink from the dataflow.
+ *
+ * @author David Withers
+ */
+@SuppressWarnings("serial")
+public class RemoveDatalinkAction extends DataflowEditAction {
+ private static final Logger logger = Logger.getLogger(RemoveDatalinkAction.class);
+
+ private DataLink datalink;
+
+ public RemoveDatalinkAction(Workflow dataflow, DataLink datalink,
+ Component component, EditManager editManager,
+ SelectionManager selectionManager) {
+ super(dataflow, component, editManager, selectionManager);
+ this.datalink = datalink;
+ putValue(SMALL_ICON, deleteIcon);
+ putValue(NAME, "Delete data link");
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent ev) {
+ try {
+ dataflowSelectionModel.removeSelection(datalink);
+ editManager.doDataflowEdit(dataflow.getParent(),
+ new RemoveDataLinkEdit(dataflow, datalink));
+ } catch (EditException ex) {
+ logger.debug("Delete data link failed", ex);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/8c4b365e/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveProcessorAction.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveProcessorAction.java b/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveProcessorAction.java
new file mode 100644
index 0000000..063a346
--- /dev/null
+++ b/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveProcessorAction.java
@@ -0,0 +1,136 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.workbench.design.actions;
+
+import static net.sf.taverna.t2.workbench.icons.WorkbenchIcons.deleteIcon;
+
+import java.awt.Component;
+import java.awt.event.ActionEvent;
+import java.util.ArrayList;
+import java.util.List;
+
+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.workbench.edits.EditManager;
+import net.sf.taverna.t2.workbench.selection.SelectionManager;
+import net.sf.taverna.t2.workflow.edits.RemoveChildEdit;
+import net.sf.taverna.t2.workflow.edits.RemoveDataLinkEdit;
+
+import org.apache.log4j.Logger;
+
+import uk.org.taverna.scufl2.api.activity.Activity;
+import uk.org.taverna.scufl2.api.common.NamedSet;
+import uk.org.taverna.scufl2.api.configurations.Configuration;
+import uk.org.taverna.scufl2.api.core.BlockingControlLink;
+import uk.org.taverna.scufl2.api.core.ControlLink;
+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.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;
+
+/**
+ * Action for removing a processor from the dataflow.
+ *
+ * @author David Withers
+ */
+@SuppressWarnings("serial")
+public class RemoveProcessorAction extends DataflowEditAction {
+ private static final Logger logger = Logger
+ .getLogger(RemoveProcessorAction.class);
+
+ private Processor processor;
+
+ public RemoveProcessorAction(Workflow dataflow, Processor processor,
+ Component component, EditManager editManager,
+ SelectionManager selectionManager) {
+ super(dataflow, component, editManager, selectionManager);
+ this.processor = processor;
+ putValue(SMALL_ICON, deleteIcon);
+ putValue(NAME, "Delete service");
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ try {
+ dataflowSelectionModel.removeSelection(processor);
+
+ NamedSet<InputProcessorPort> inputPorts = processor.getInputPorts();
+ NamedSet<OutputProcessorPort> outputPorts = processor
+ .getOutputPorts();
+ List<BlockingControlLink> controlLinksBlocking = scufl2Tools
+ .controlLinksBlocking(processor);
+ List<BlockingControlLink> controlLinksWaitingFor = scufl2Tools
+ .controlLinksWaitingFor(processor);
+ List<Edit<?>> editList = new ArrayList<>();
+ for (InputProcessorPort inputPort : inputPorts)
+ for (DataLink datalink : scufl2Tools.datalinksTo(inputPort))
+ editList.add(new RemoveDataLinkEdit(dataflow, datalink));
+ for (OutputProcessorPort outputPort : outputPorts)
+ for (DataLink datalink : scufl2Tools.datalinksFrom(outputPort))
+ editList.add(new RemoveDataLinkEdit(dataflow, datalink));
+ for (ControlLink controlLink : controlLinksBlocking)
+ editList.add(new RemoveChildEdit<>(dataflow, controlLink));
+ for (ControlLink controlLink : controlLinksWaitingFor)
+ editList.add(new RemoveChildEdit<>(dataflow, controlLink));
+
+ for (Profile profile : dataflow.getParent().getProfiles()) {
+ List<ProcessorBinding> processorBindings = scufl2Tools
+ .processorBindingsForProcessor(processor, profile);
+ for (ProcessorBinding processorBinding : processorBindings) {
+ Activity boundActivity = processorBinding
+ .getBoundActivity();
+ List<ProcessorBinding> processorBindingsToActivity = scufl2Tools
+ .processorBindingsToActivity(boundActivity);
+ if (processorBindingsToActivity.size() == 1) {
+ editList.add(new RemoveChildEdit<>(profile,
+ boundActivity));
+ for (Configuration configuration : scufl2Tools
+ .configurationsFor(boundActivity, profile))
+ editList.add(new RemoveChildEdit<Profile>(profile,
+ configuration));
+ }
+ editList.add(new RemoveChildEdit<Profile>(profile,
+ processorBinding));
+ }
+ }
+ for (Profile profile : dataflow.getParent().getProfiles()) {
+ List<Configuration> configurations = scufl2Tools
+ .configurationsFor(processor, profile);
+ for (Configuration configuration : configurations)
+ editList.add(new RemoveChildEdit<>(profile, configuration));
+ }
+ if (editList.isEmpty())
+ editManager.doDataflowEdit(dataflow.getParent(),
+ new RemoveChildEdit<>(dataflow, processor));
+ else {
+ editList.add(new RemoveChildEdit<>(dataflow, processor));
+ editManager.doDataflowEdit(dataflow.getParent(),
+ new CompoundEdit(editList));
+ }
+ } catch (EditException e1) {
+ logger.error("Delete processor failed", e1);
+ }
+ }
+}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/8c4b365e/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RenameProcessorAction.java
----------------------------------------------------------------------
diff --git a/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RenameProcessorAction.java b/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RenameProcessorAction.java
new file mode 100644
index 0000000..5b5b733
--- /dev/null
+++ b/taverna-workbench-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RenameProcessorAction.java
@@ -0,0 +1,97 @@
+/*******************************************************************************
+ * Copyright (C) 2007 The University of Manchester
+ *
+ * Modifications to the initial code base are copyright of their
+ * respective authors, or their employers as appropriate.
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public License
+ * as published by the Free Software Foundation; either version 2.1 of
+ * the License, or (at your option) any later version.
+ *
+ * This program is distributed in the hope that it will be useful, but
+ * WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this program; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ ******************************************************************************/
+package net.sf.taverna.t2.workbench.design.actions;
+
+import java.awt.Component;
+import java.awt.Dimension;
+import java.awt.event.ActionEvent;
+import java.util.HashSet;
+import java.util.Set;
+
+import net.sf.taverna.t2.lang.ui.ValidatingUserInputDialog;
+import net.sf.taverna.t2.workbench.design.ui.ProcessorPanel;
+import net.sf.taverna.t2.workbench.edits.EditException;
+import net.sf.taverna.t2.workbench.edits.EditManager;
+import net.sf.taverna.t2.workbench.icons.WorkbenchIcons;
+import net.sf.taverna.t2.workbench.selection.SelectionManager;
+import net.sf.taverna.t2.workflow.edits.RenameEdit;
+
+import org.apache.log4j.Logger;
+
+import uk.org.taverna.scufl2.api.core.Processor;
+import uk.org.taverna.scufl2.api.core.Workflow;
+
+/**
+ * Action for renaming a processor.
+ *
+ * @author David Withers
+ */
+public class RenameProcessorAction extends DataflowEditAction {
+
+ private static final long serialVersionUID = 1L;
+
+ private static Logger logger = Logger
+ .getLogger(RenameProcessorAction.class);
+
+ private Processor processor;
+
+ public RenameProcessorAction(Workflow dataflow, Processor processor,
+ Component component, EditManager editManager,
+ SelectionManager selectionManager) {
+ super(dataflow, component, editManager, selectionManager);
+ this.processor = processor;
+ putValue(SMALL_ICON, WorkbenchIcons.renameIcon);
+ putValue(NAME, "Rename service...");
+ }
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ Set<String> usedProcessors = new HashSet<>();
+ for (Processor usedProcessor : dataflow.getProcessors())
+ if (!usedProcessor.getName().equals(processor.getName()))
+ usedProcessors.add(usedProcessor.getName());
+
+ ProcessorPanel inputPanel = new ProcessorPanel();
+
+ ValidatingUserInputDialog vuid = new ValidatingUserInputDialog(
+ "Rename service", inputPanel);
+ vuid.addTextComponentValidation(inputPanel.getProcessorNameField(),
+ "Set the service name.", usedProcessors, "Duplicate service.",
+ "[\\p{L}\\p{Digit}_.]+", "Invalid service name.");
+ vuid.setSize(new Dimension(400, 200));
+
+ inputPanel.setProcessorName(processor.getName());
+
+ try {
+ if (vuid.show(component))
+ changeProcessorName(inputPanel);
+ } catch (EditException e1) {
+ logger.debug("Rename service (processor) failed", e1);
+ }
+ }
+
+ private void changeProcessorName(ProcessorPanel inputPanel)
+ throws EditException {
+ String processorName = inputPanel.getProcessorName();
+ editManager.doDataflowEdit(dataflow.getParent(), new RenameEdit<>(
+ processor, processorName));
+ }
+}