http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/EditDataflowOutputPortAction.java ---------------------------------------------------------------------- diff --git a/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/EditDataflowOutputPortAction.java b/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/EditDataflowOutputPortAction.java deleted file mode 100644 index d331da6..0000000 --- a/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/EditDataflowOutputPortAction.java +++ /dev/null @@ -1,95 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.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 org.apache.taverna.scufl2.api.core.Workflow; -import org.apache.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/a9a52bd5/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveConditionAction.java ---------------------------------------------------------------------- diff --git a/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveConditionAction.java b/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveConditionAction.java deleted file mode 100644 index a067d26..0000000 --- a/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveConditionAction.java +++ /dev/null @@ -1,69 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.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 org.apache.taverna.scufl2.api.core.ControlLink; -import org.apache.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/a9a52bd5/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveDataflowInputPortAction.java ---------------------------------------------------------------------- diff --git a/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveDataflowInputPortAction.java b/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveDataflowInputPortAction.java deleted file mode 100644 index 707835a..0000000 --- a/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveDataflowInputPortAction.java +++ /dev/null @@ -1,85 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.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 org.apache.taverna.scufl2.api.core.DataLink; -import org.apache.taverna.scufl2.api.core.Workflow; -import org.apache.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/a9a52bd5/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveDataflowOutputPortAction.java ---------------------------------------------------------------------- diff --git a/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveDataflowOutputPortAction.java b/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveDataflowOutputPortAction.java deleted file mode 100644 index 69d5559..0000000 --- a/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveDataflowOutputPortAction.java +++ /dev/null @@ -1,85 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.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 org.apache.taverna.scufl2.api.core.DataLink; -import org.apache.taverna.scufl2.api.core.Workflow; -import org.apache.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/a9a52bd5/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveDatalinkAction.java ---------------------------------------------------------------------- diff --git a/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveDatalinkAction.java b/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveDatalinkAction.java deleted file mode 100644 index 4e1a31f..0000000 --- a/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveDatalinkAction.java +++ /dev/null @@ -1,68 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.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 org.apache.taverna.scufl2.api.core.DataLink; -import org.apache.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/a9a52bd5/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveProcessorAction.java ---------------------------------------------------------------------- diff --git a/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveProcessorAction.java b/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveProcessorAction.java deleted file mode 100644 index 16e4eb7..0000000 --- a/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RemoveProcessorAction.java +++ /dev/null @@ -1,136 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.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 org.apache.taverna.scufl2.api.activity.Activity; -import org.apache.taverna.scufl2.api.common.NamedSet; -import org.apache.taverna.scufl2.api.configurations.Configuration; -import org.apache.taverna.scufl2.api.core.BlockingControlLink; -import org.apache.taverna.scufl2.api.core.ControlLink; -import org.apache.taverna.scufl2.api.core.DataLink; -import org.apache.taverna.scufl2.api.core.Processor; -import org.apache.taverna.scufl2.api.core.Workflow; -import org.apache.taverna.scufl2.api.port.InputProcessorPort; -import org.apache.taverna.scufl2.api.port.OutputProcessorPort; -import org.apache.taverna.scufl2.api.profiles.ProcessorBinding; -import org.apache.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/a9a52bd5/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RenameProcessorAction.java ---------------------------------------------------------------------- diff --git a/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RenameProcessorAction.java b/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RenameProcessorAction.java deleted file mode 100644 index a291762..0000000 --- a/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/actions/RenameProcessorAction.java +++ /dev/null @@ -1,97 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.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 org.apache.taverna.scufl2.api.core.Processor; -import org.apache.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)); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/ui/DataflowInputPortPanel.java ---------------------------------------------------------------------- diff --git a/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/ui/DataflowInputPortPanel.java b/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/ui/DataflowInputPortPanel.java deleted file mode 100644 index e578ef2..0000000 --- a/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/ui/DataflowInputPortPanel.java +++ /dev/null @@ -1,203 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.design.ui; - -import static java.awt.GridBagConstraints.HORIZONTAL; -import static java.awt.GridBagConstraints.NONE; -import static java.awt.GridBagConstraints.NORTHWEST; -import static java.awt.GridBagConstraints.WEST; -import static java.awt.event.ItemEvent.SELECTED; - -import java.awt.GridBagConstraints; -import java.awt.GridBagLayout; -import java.awt.Insets; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; - -import javax.swing.ButtonGroup; -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JRadioButton; -import javax.swing.JSpinner; -import javax.swing.JTextField; -import javax.swing.SpinnerNumberModel; -import javax.swing.border.EmptyBorder; - -/** - * UI for creating/editing dataflow input ports. - * - * @author David Withers - */ -public class DataflowInputPortPanel extends JPanel { - private static final long serialVersionUID = 2650486705615513458L; - - private JTextField portNameField; - private JRadioButton singleValueButton; - private JRadioButton listValueButton; - private JSpinner listDepthSpinner; - - public DataflowInputPortPanel() { - super(new GridBagLayout()); - - portNameField = new JTextField(); - singleValueButton = new JRadioButton("Single value"); - listValueButton = new JRadioButton("List of depth "); - listDepthSpinner = new JSpinner(new SpinnerNumberModel(1, 1, 100, 1)); - - setBorder(new EmptyBorder(10, 10, 10, 10)); - - GridBagConstraints constraints = new GridBagConstraints(); - - constraints.anchor = WEST; - constraints.gridx = 0; - constraints.gridy = 0; - constraints.ipadx = 10; - add(new JLabel("Name:"), constraints); - - constraints.gridx = 1; - constraints.gridwidth = 2; - constraints.ipadx = 0; - constraints.weightx = 1d; - constraints.fill = HORIZONTAL; - add(portNameField, constraints); - - constraints.gridx = 0; - constraints.gridy = 1; - constraints.gridwidth = 1; - constraints.weightx = 0d; - constraints.fill = NONE; - constraints.ipadx = 10; - constraints.insets = new Insets(10, 0, 0, 0); - add(new JLabel("Type:"), constraints); - - ButtonGroup buttonGroup = new ButtonGroup(); - buttonGroup.add(singleValueButton); - buttonGroup.add(listValueButton); - - final JLabel helpLabel = new JLabel( - "Depth 1 is a list, 2 is a list of lists, etc."); - helpLabel.setFont(helpLabel.getFont().deriveFont(11f)); - - singleValueButton.addItemListener(new ItemListener() { - @Override - public void itemStateChanged(ItemEvent e) { - boolean selected = (e.getStateChange() == SELECTED); - listDepthSpinner.setEnabled(!selected); - helpLabel.setEnabled(!selected); - } - }); - - constraints.gridx = 1; - constraints.gridwidth = 2; - constraints.ipadx = 0; - add(singleValueButton, constraints); - constraints.gridy = 2; - constraints.gridwidth = 1; - constraints.insets = new Insets(0, 0, 0, 0); - add(listValueButton, constraints); - constraints.gridx = 2; - add(listDepthSpinner, constraints); - constraints.gridx = 1; - constraints.gridy = 3; - constraints.gridwidth = 2; - constraints.weighty = 1d; - constraints.anchor = NORTHWEST; - constraints.insets = new Insets(0, 20, 0, 0); - add(helpLabel, constraints); - } - - /** - * Returns the portNameField. - * - * @return the portNameField - */ - public JTextField getPortNameField() { - return portNameField; - } - - /** - * Returns the singleValueButton. - * - * @return the singleValueButton - */ - public JRadioButton getSingleValueButton() { - return singleValueButton; - } - - /** - * Returns the listValueButton. - * - * @return the listValueButton - */ - public JRadioButton getListValueButton() { - return listValueButton; - } - - /** - * Returns the port name. - * - * @return the port name - */ - public String getPortName() { - return portNameField.getText(); - } - - /** - * Sets the port name. - * - * @param name - * the name of the port - */ - public void setPortName(String name) { - portNameField.setText(name); - // Select the text - if (!name.isEmpty()) { - portNameField.setSelectionStart(0); - portNameField.setSelectionEnd(name.length()); - } - } - - /** - * Returns the port depth. - * - * @return the port depth - */ - public int getPortDepth() { - if (singleValueButton.isSelected()) - return 0; - return (Integer) listDepthSpinner.getValue(); - } - - /** - * Sets the port depth. - * - * @param depth - * the depth of the port - */ - public void setPortDepth(int depth) { - if (depth == 0) { - singleValueButton.setSelected(true); - } else { - listValueButton.setSelected(true); - listDepthSpinner.setValue(depth); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/ui/DataflowOutputPortPanel.java ---------------------------------------------------------------------- diff --git a/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/ui/DataflowOutputPortPanel.java b/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/ui/DataflowOutputPortPanel.java deleted file mode 100644 index 59ac0f7..0000000 --- a/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/ui/DataflowOutputPortPanel.java +++ /dev/null @@ -1,105 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.design.ui; - -import static java.awt.GridBagConstraints.HORIZONTAL; -import static java.awt.GridBagConstraints.VERTICAL; -import static java.awt.GridBagConstraints.WEST; - -import java.awt.GridBagConstraints; -import java.awt.GridBagLayout; - -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JTextField; -import javax.swing.border.EmptyBorder; - -/** - * UI for creating/editing dataflow output ports. - * - * @author David Withers - */ -public class DataflowOutputPortPanel extends JPanel { - private static final long serialVersionUID = -2542858679939965553L; - - private JTextField portNameField; - - public DataflowOutputPortPanel() { - super(new GridBagLayout()); - - portNameField = new JTextField(); - - setBorder(new EmptyBorder(10, 10, 10, 10)); - - GridBagConstraints constraints = new GridBagConstraints(); - - constraints.anchor = WEST; - constraints.gridx = 0; - constraints.gridy = 0; - constraints.ipadx = 10; - add(new JLabel("Name:"), constraints); - - constraints.gridx = 1; - constraints.gridwidth = 2; - constraints.ipadx = 0; - constraints.weightx = 1d; - constraints.fill = HORIZONTAL; - add(portNameField, constraints); - - constraints.gridx = 0; - constraints.gridy = 1; - constraints.fill = VERTICAL; - constraints.weighty = 1d; - add(new JPanel(), constraints); - } - - /** - * Returns the portNameField. - * - * @return the portNameField - */ - public JTextField getPortNameField() { - return portNameField; - } - - /** - * Returns the port name. - * - * @return the port name - */ - public String getPortName() { - return portNameField.getText(); - } - - /** - * Sets the port name. - * - * @param name the name of the port - */ - public void setPortName(String name) { - portNameField.setText(name); - // Select the text - if (!name.isEmpty()) { - portNameField.setSelectionStart(0); - portNameField.setSelectionEnd(name.length()); - } - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/ui/ProcessorPanel.java ---------------------------------------------------------------------- diff --git a/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/ui/ProcessorPanel.java b/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/ui/ProcessorPanel.java deleted file mode 100644 index 4528727..0000000 --- a/taverna-design-ui/src/main/java/net/sf/taverna/t2/workbench/design/ui/ProcessorPanel.java +++ /dev/null @@ -1,101 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007 The University of Manchester - * - * Modifications to the initial code base are copyright of their - * respective authors, or their employers as appropriate. - * - * This program is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public License - * as published by the Free Software Foundation; either version 2.1 of - * the License, or (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, but - * WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - * Lesser General Public License for more details. - * - * You should have received a copy of the GNU Lesser General Public - * License along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 - ******************************************************************************/ -package net.sf.taverna.t2.workbench.design.ui; - -import static java.awt.GridBagConstraints.HORIZONTAL; -import static java.awt.GridBagConstraints.VERTICAL; -import static java.awt.GridBagConstraints.WEST; - -import java.awt.GridBagConstraints; -import java.awt.GridBagLayout; - -import javax.swing.JLabel; -import javax.swing.JPanel; -import javax.swing.JTextField; -import javax.swing.border.EmptyBorder; - -/** - * UI for editing processors. - * - * @author David Withers - */ -public class ProcessorPanel extends JPanel { - private static final long serialVersionUID = 260705376633425003L; - - private JTextField processorNameField; - - public ProcessorPanel() { - super(new GridBagLayout()); - - processorNameField = new JTextField(); - - setBorder(new EmptyBorder(10, 10, 10, 10)); - - GridBagConstraints constraints = new GridBagConstraints(); - - constraints.anchor = WEST; - constraints.gridx = 0; - constraints.gridy = 0; - constraints.ipadx = 10; - add(new JLabel("Name:"), constraints); - - constraints.gridx = 1; - constraints.gridwidth = 2; - constraints.ipadx = 0; - constraints.weightx = 1d; - constraints.fill = HORIZONTAL; - add(processorNameField, constraints); - - constraints.gridx = 0; - constraints.gridy = 1; - constraints.fill = VERTICAL; - constraints.weighty = 1d; - add(new JPanel(), constraints); - } - - /** - * Returns the processorNameField. - * - * @return the processorNameField - */ - public JTextField getProcessorNameField() { - return processorNameField; - } - - /** - * Returns the processor name. - * - * @return the processor name - */ - public String getProcessorName() { - return processorNameField.getText(); - } - - /** - * Sets the processor name. - * - * @param name - * the name of the processor - */ - public void setProcessorName(String name) { - processorNameField.setText(name); - } -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/a9a52bd5/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/AddConditionAction.java ---------------------------------------------------------------------- diff --git a/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/AddConditionAction.java b/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/AddConditionAction.java new file mode 100644 index 0000000..a5b0966 --- /dev/null +++ b/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/AddConditionAction.java @@ -0,0 +1,81 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package org.apache.taverna.workbench.design.actions; + +import java.awt.Component; +import java.awt.event.ActionEvent; + +import org.apache.taverna.workbench.activityicons.ActivityIconManager; +import org.apache.taverna.workbench.edits.EditException; +import org.apache.taverna.workbench.edits.EditManager; +import org.apache.taverna.workbench.selection.SelectionManager; +import org.apache.taverna.workflow.edits.AddChildEdit; + +import org.apache.log4j.Logger; + +import org.apache.taverna.scufl2.api.common.Scufl2Tools; +import org.apache.taverna.scufl2.api.core.BlockingControlLink; +import org.apache.taverna.scufl2.api.core.Processor; +import org.apache.taverna.scufl2.api.core.Workflow; +import org.apache.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/a9a52bd5/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/AddDataflowInputAction.java ---------------------------------------------------------------------- diff --git a/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/AddDataflowInputAction.java b/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/AddDataflowInputAction.java new file mode 100644 index 0000000..23428ce --- /dev/null +++ b/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/AddDataflowInputAction.java @@ -0,0 +1,95 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package org.apache.taverna.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 org.apache.taverna.lang.ui.ValidatingUserInputDialog; +import org.apache.taverna.workbench.design.ui.DataflowInputPortPanel; +import org.apache.taverna.workbench.edits.EditException; +import org.apache.taverna.workbench.edits.EditManager; +import org.apache.taverna.workbench.icons.WorkbenchIcons; +import org.apache.taverna.workbench.selection.SelectionManager; +import org.apache.taverna.workflow.edits.AddWorkflowInputPortEdit; + +import org.apache.log4j.Logger; + +import org.apache.taverna.scufl2.api.core.Workflow; +import org.apache.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/a9a52bd5/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/AddDataflowOutputAction.java ---------------------------------------------------------------------- diff --git a/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/AddDataflowOutputAction.java b/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/AddDataflowOutputAction.java new file mode 100644 index 0000000..27f241d --- /dev/null +++ b/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/AddDataflowOutputAction.java @@ -0,0 +1,89 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package org.apache.taverna.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 org.apache.taverna.lang.ui.ValidatingUserInputDialog; +import org.apache.taverna.workbench.design.ui.DataflowOutputPortPanel; +import org.apache.taverna.workbench.edits.EditException; +import org.apache.taverna.workbench.edits.EditManager; +import org.apache.taverna.workbench.icons.WorkbenchIcons; +import org.apache.taverna.workbench.selection.SelectionManager; +import org.apache.taverna.workflow.edits.AddWorkflowOutputPortEdit; + +import org.apache.log4j.Logger; + +import org.apache.taverna.scufl2.api.core.Workflow; +import org.apache.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/a9a52bd5/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/DataflowEditAction.java ---------------------------------------------------------------------- diff --git a/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/DataflowEditAction.java b/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/DataflowEditAction.java new file mode 100644 index 0000000..337dada --- /dev/null +++ b/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/DataflowEditAction.java @@ -0,0 +1,56 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package org.apache.taverna.workbench.design.actions; + +import java.awt.Component; + +import javax.swing.AbstractAction; + +import org.apache.taverna.workbench.edits.EditManager; +import org.apache.taverna.workbench.selection.DataflowSelectionModel; +import org.apache.taverna.workbench.selection.SelectionManager; +import org.apache.taverna.scufl2.api.common.Scufl2Tools; +import org.apache.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/a9a52bd5/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/EditDataflowInputPortAction.java ---------------------------------------------------------------------- diff --git a/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/EditDataflowInputPortAction.java b/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/EditDataflowInputPortAction.java new file mode 100644 index 0000000..df8df77 --- /dev/null +++ b/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/EditDataflowInputPortAction.java @@ -0,0 +1,114 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package org.apache.taverna.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 org.apache.taverna.lang.ui.ValidatingUserInputDialog; +import org.apache.taverna.workbench.design.ui.DataflowInputPortPanel; +import org.apache.taverna.workbench.edits.CompoundEdit; +import org.apache.taverna.workbench.edits.Edit; +import org.apache.taverna.workbench.edits.EditException; +import org.apache.taverna.workbench.edits.EditManager; +import org.apache.taverna.workbench.icons.WorkbenchIcons; +import org.apache.taverna.workbench.selection.SelectionManager; +import org.apache.taverna.workflow.edits.ChangeDepthEdit; +import org.apache.taverna.workflow.edits.RenameEdit; + +import org.apache.log4j.Logger; + +import org.apache.taverna.scufl2.api.core.Workflow; +import org.apache.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/a9a52bd5/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/EditDataflowOutputPortAction.java ---------------------------------------------------------------------- diff --git a/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/EditDataflowOutputPortAction.java b/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/EditDataflowOutputPortAction.java new file mode 100644 index 0000000..8dd5388 --- /dev/null +++ b/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/EditDataflowOutputPortAction.java @@ -0,0 +1,94 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package org.apache.taverna.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 org.apache.taverna.lang.ui.ValidatingUserInputDialog; +import org.apache.taverna.workbench.design.ui.DataflowOutputPortPanel; +import org.apache.taverna.workbench.edits.EditException; +import org.apache.taverna.workbench.edits.EditManager; +import org.apache.taverna.workbench.icons.WorkbenchIcons; +import org.apache.taverna.workbench.selection.SelectionManager; +import org.apache.taverna.workflow.edits.RenameEdit; + +import org.apache.log4j.Logger; + +import org.apache.taverna.scufl2.api.core.Workflow; +import org.apache.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/a9a52bd5/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/RemoveConditionAction.java ---------------------------------------------------------------------- diff --git a/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/RemoveConditionAction.java b/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/RemoveConditionAction.java new file mode 100644 index 0000000..5c19dc5 --- /dev/null +++ b/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/RemoveConditionAction.java @@ -0,0 +1,68 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package org.apache.taverna.workbench.design.actions; + +import static org.apache.taverna.workbench.icons.WorkbenchIcons.deleteIcon; + +import java.awt.Component; +import java.awt.event.ActionEvent; + +import org.apache.taverna.workbench.edits.EditException; +import org.apache.taverna.workbench.edits.EditManager; +import org.apache.taverna.workbench.selection.SelectionManager; +import org.apache.taverna.workflow.edits.RemoveChildEdit; + +import org.apache.log4j.Logger; + +import org.apache.taverna.scufl2.api.core.ControlLink; +import org.apache.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/a9a52bd5/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/RemoveDataflowInputPortAction.java ---------------------------------------------------------------------- diff --git a/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/RemoveDataflowInputPortAction.java b/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/RemoveDataflowInputPortAction.java new file mode 100644 index 0000000..e71a0d9 --- /dev/null +++ b/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/RemoveDataflowInputPortAction.java @@ -0,0 +1,84 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package org.apache.taverna.workbench.design.actions; + +import static org.apache.taverna.workbench.icons.WorkbenchIcons.deleteIcon; + +import java.awt.Component; +import java.awt.event.ActionEvent; +import java.util.ArrayList; +import java.util.List; + +import org.apache.taverna.workbench.edits.CompoundEdit; +import org.apache.taverna.workbench.edits.Edit; +import org.apache.taverna.workbench.edits.EditException; +import org.apache.taverna.workbench.edits.EditManager; +import org.apache.taverna.workbench.selection.SelectionManager; +import org.apache.taverna.workflow.edits.RemoveDataLinkEdit; +import org.apache.taverna.workflow.edits.RemoveWorkflowInputPortEdit; + +import org.apache.log4j.Logger; + +import org.apache.taverna.scufl2.api.core.DataLink; +import org.apache.taverna.scufl2.api.core.Workflow; +import org.apache.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/a9a52bd5/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/RemoveDataflowOutputPortAction.java ---------------------------------------------------------------------- diff --git a/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/RemoveDataflowOutputPortAction.java b/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/RemoveDataflowOutputPortAction.java new file mode 100644 index 0000000..ece84ba --- /dev/null +++ b/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/RemoveDataflowOutputPortAction.java @@ -0,0 +1,84 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package org.apache.taverna.workbench.design.actions; + +import static org.apache.taverna.workbench.icons.WorkbenchIcons.deleteIcon; + +import java.awt.Component; +import java.awt.event.ActionEvent; +import java.util.ArrayList; +import java.util.List; + +import org.apache.taverna.workbench.edits.CompoundEdit; +import org.apache.taverna.workbench.edits.Edit; +import org.apache.taverna.workbench.edits.EditException; +import org.apache.taverna.workbench.edits.EditManager; +import org.apache.taverna.workbench.selection.SelectionManager; +import org.apache.taverna.workflow.edits.RemoveDataLinkEdit; +import org.apache.taverna.workflow.edits.RemoveWorkflowOutputPortEdit; + +import org.apache.log4j.Logger; + +import org.apache.taverna.scufl2.api.core.DataLink; +import org.apache.taverna.scufl2.api.core.Workflow; +import org.apache.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/a9a52bd5/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/RemoveDatalinkAction.java ---------------------------------------------------------------------- diff --git a/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/RemoveDatalinkAction.java b/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/RemoveDatalinkAction.java new file mode 100644 index 0000000..2f23e25 --- /dev/null +++ b/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/RemoveDatalinkAction.java @@ -0,0 +1,67 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package org.apache.taverna.workbench.design.actions; + +import static org.apache.taverna.workbench.icons.WorkbenchIcons.deleteIcon; + +import java.awt.Component; +import java.awt.event.ActionEvent; + +import org.apache.taverna.workbench.edits.EditException; +import org.apache.taverna.workbench.edits.EditManager; +import org.apache.taverna.workbench.selection.SelectionManager; +import org.apache.taverna.workflow.edits.RemoveDataLinkEdit; + +import org.apache.log4j.Logger; + +import org.apache.taverna.scufl2.api.core.DataLink; +import org.apache.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/a9a52bd5/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/RemoveProcessorAction.java ---------------------------------------------------------------------- diff --git a/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/RemoveProcessorAction.java b/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/RemoveProcessorAction.java new file mode 100644 index 0000000..a8fc634 --- /dev/null +++ b/taverna-design-ui/src/main/java/org/apache/taverna/workbench/design/actions/RemoveProcessorAction.java @@ -0,0 +1,135 @@ +/* +* Licensed to the Apache Software Foundation (ASF) under one +* or more contributor license agreements. See the NOTICE file +* distributed with this work for additional information +* regarding copyright ownership. The ASF licenses this file +* to you under the Apache License, Version 2.0 (the +* "License"); you may not use this file except in compliance +* with the License. You may obtain a copy of the License at +* +* http://www.apache.org/licenses/LICENSE-2.0 +* +* Unless required by applicable law or agreed to in writing, +* software distributed under the License is distributed on an +* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY +* KIND, either express or implied. See the License for the +* specific language governing permissions and limitations +* under the License. +*/ + +package org.apache.taverna.workbench.design.actions; + +import static org.apache.taverna.workbench.icons.WorkbenchIcons.deleteIcon; + +import java.awt.Component; +import java.awt.event.ActionEvent; +import java.util.ArrayList; +import java.util.List; + +import org.apache.taverna.workbench.edits.CompoundEdit; +import org.apache.taverna.workbench.edits.Edit; +import org.apache.taverna.workbench.edits.EditException; +import org.apache.taverna.workbench.edits.EditManager; +import org.apache.taverna.workbench.selection.SelectionManager; +import org.apache.taverna.workflow.edits.RemoveChildEdit; +import org.apache.taverna.workflow.edits.RemoveDataLinkEdit; + +import org.apache.log4j.Logger; + +import org.apache.taverna.scufl2.api.activity.Activity; +import org.apache.taverna.scufl2.api.common.NamedSet; +import org.apache.taverna.scufl2.api.configurations.Configuration; +import org.apache.taverna.scufl2.api.core.BlockingControlLink; +import org.apache.taverna.scufl2.api.core.ControlLink; +import org.apache.taverna.scufl2.api.core.DataLink; +import org.apache.taverna.scufl2.api.core.Processor; +import org.apache.taverna.scufl2.api.core.Workflow; +import org.apache.taverna.scufl2.api.port.InputProcessorPort; +import org.apache.taverna.scufl2.api.port.OutputProcessorPort; +import org.apache.taverna.scufl2.api.profiles.ProcessorBinding; +import org.apache.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); + } + } +}
