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 2018/06/29 10:55:06 UTC
[19/27] incubator-taverna-plugin-component git commit: package rename
folders
http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-component/blob/b7b61e71/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/ComponentMenu.java
----------------------------------------------------------------------
diff --git a/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/ComponentMenu.java b/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/ComponentMenu.java
deleted file mode 100644
index 99cec65..0000000
--- a/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/ComponentMenu.java
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
-* 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 io.github.taverna_extras.component.ui.menu;
-
-import java.net.URI;
-import org.apache.taverna.ui.menu.AbstractMenu;
-import static org.apache.taverna.ui.menu.DefaultMenuBar.DEFAULT_MENU_BAR;
-
-/**
- * @author alanrw
- */
-public class ComponentMenu extends AbstractMenu {
- public static final URI COMPONENT = URI
- .create("http://taverna.sf.net/2008/t2workbench/menu#component");
- public static final String TITLE = "Components";
-
- public ComponentMenu() {
- super(DEFAULT_MENU_BAR, 950, COMPONENT, makeAction());
- }
-
- public static DummyAction makeAction() {
- return new DummyAction(TITLE);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-component/blob/b7b61e71/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/ComponentSection.java
----------------------------------------------------------------------
diff --git a/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/ComponentSection.java b/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/ComponentSection.java
deleted file mode 100644
index 337ee73..0000000
--- a/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/ComponentSection.java
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
-* 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 io.github.taverna_extras.component.ui.menu;
-
-import java.net.URI;
-import org.apache.taverna.ui.menu.AbstractMenuSection;
-
-/**
- * @author alanrw
- *
- */
-public class ComponentSection extends AbstractMenuSection {
- public static final String COMPONENT_SECTION = "Components";
- public static final URI componentSection = URI
- .create("http://taverna.sf.net/2009/contextMenu/components");
- public static final URI editSection = URI
- .create("http://taverna.sf.net/2009/contextMenu/edit");
-
- public ComponentSection() {
- super(editSection, 100, componentSection);
- }
-
- @Override
- public boolean isEnabled() {
- return super.isEnabled();
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-component/blob/b7b61e71/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/NestedWorkflowCreationDialog.java
----------------------------------------------------------------------
diff --git a/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/NestedWorkflowCreationDialog.java b/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/NestedWorkflowCreationDialog.java
deleted file mode 100644
index 3a467fd..0000000
--- a/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/NestedWorkflowCreationDialog.java
+++ /dev/null
@@ -1,666 +0,0 @@
-/*
-* 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 io.github.taverna_extras.component.ui.menu;
-
-import static java.awt.BorderLayout.CENTER;
-import static java.awt.BorderLayout.NORTH;
-import static java.awt.BorderLayout.SOUTH;
-import static java.util.Collections.sort;
-import static javax.swing.JOptionPane.WARNING_MESSAGE;
-import static javax.swing.JOptionPane.showMessageDialog;
-import static org.apache.log4j.Logger.getLogger;
-import static io.github.taverna_extras.component.ui.util.Utils.uniqueName;
-import static org.apache.taverna.scufl2.api.common.Scufl2Tools.NESTED_WORKFLOW;
-
-import java.awt.BorderLayout;
-import java.awt.Component;
-import java.awt.Dimension;
-import java.awt.FlowLayout;
-import java.awt.Frame;
-import java.awt.GridLayout;
-import java.awt.event.ActionEvent;
-import java.awt.event.ActionListener;
-import java.util.ArrayList;
-import java.util.Collection;
-import java.util.Comparator;
-import java.util.HashMap;
-import java.util.HashSet;
-import java.util.List;
-import java.util.Map;
-import java.util.Vector;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
-
-import javax.swing.AbstractAction;
-import javax.swing.DefaultComboBoxModel;
-import javax.swing.DefaultListCellRenderer;
-import javax.swing.JButton;
-import javax.swing.JDialog;
-import javax.swing.JLabel;
-import javax.swing.JList;
-import javax.swing.JPanel;
-import javax.swing.JScrollPane;
-import javax.swing.JTextField;
-import javax.swing.ListCellRenderer;
-
-//import net.sf.taverna.t2.lang.ui.DeselectingButton;
-//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.helper.HelpEnabledDialog;
-//import net.sf.taverna.t2.workbench.models.graph.GraphController;
-//import net.sf.taverna.t2.workbench.views.graph.GraphViewComponent;
-//import net.sf.taverna.t2.workflow.edits.AddActivityEdit;
-//import net.sf.taverna.t2.workflow.edits.AddActivityInputPortMappingEdit;
-//import net.sf.taverna.t2.workflow.edits.AddActivityOutputPortMappingEdit;
-//import net.sf.taverna.t2.workflow.edits.AddChildEdit;
-//import net.sf.taverna.t2.workflow.edits.AddDataLinkEdit;
-//import net.sf.taverna.t2.workflow.edits.AddProcessorInputPortEdit;
-//import net.sf.taverna.t2.workflow.edits.AddProcessorOutputPortEdit;
-//import net.sf.taverna.t2.workflow.edits.AddWorkflowInputPortEdit;
-//import net.sf.taverna.t2.workflow.edits.AddWorkflowOutputPortEdit;
-//import net.sf.taverna.t2.workflow.edits.RemoveChildEdit;
-//import net.sf.taverna.t2.workflow.edits.RemoveDataLinkEdit;
-//import net.sf.taverna.t2.workflow.edits.SetIterationStrategyStackEdit;
-
-import org.apache.log4j.Logger;
-import org.apache.taverna.annotation.annotationbeans.DescriptiveTitle;
-import org.apache.taverna.lang.ui.DeselectingButton;
-
-import org.apache.taverna.scufl2.api.activity.Activity;
-import org.apache.taverna.scufl2.api.annotation.Annotation;
-import org.apache.taverna.scufl2.api.common.Named;
-import org.apache.taverna.scufl2.api.common.NamedSet;
-import org.apache.taverna.scufl2.api.common.Scufl2Tools;
-import org.apache.taverna.scufl2.api.container.WorkflowBundle;
-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.InputActivityPort;
-import org.apache.taverna.scufl2.api.port.InputProcessorPort;
-import org.apache.taverna.scufl2.api.port.InputWorkflowPort;
-import org.apache.taverna.scufl2.api.port.OutputActivityPort;
-import org.apache.taverna.scufl2.api.port.OutputProcessorPort;
-import org.apache.taverna.scufl2.api.port.OutputWorkflowPort;
-import org.apache.taverna.scufl2.api.port.ProcessorPort;
-import org.apache.taverna.scufl2.api.port.ReceiverPort;
-import org.apache.taverna.scufl2.api.port.SenderPort;
-import org.apache.taverna.scufl2.api.profiles.Profile;
-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.helper.HelpEnabledDialog;
-import org.apache.taverna.workbench.models.graph.GraphController;
-import org.apache.taverna.workbench.views.graph.GraphViewComponent;
-import org.apache.taverna.workflow.edits.AddActivityEdit;
-import org.apache.taverna.workflow.edits.AddActivityInputPortMappingEdit;
-import org.apache.taverna.workflow.edits.AddActivityOutputPortMappingEdit;
-import org.apache.taverna.workflow.edits.AddChildEdit;
-import org.apache.taverna.workflow.edits.AddDataLinkEdit;
-import org.apache.taverna.workflow.edits.AddProcessorInputPortEdit;
-import org.apache.taverna.workflow.edits.AddProcessorOutputPortEdit;
-import org.apache.taverna.workflow.edits.AddWorkflowInputPortEdit;
-import org.apache.taverna.workflow.edits.AddWorkflowOutputPortEdit;
-import org.apache.taverna.workflow.edits.RemoveChildEdit;
-import org.apache.taverna.workflow.edits.RemoveDataLinkEdit;
-import org.apache.taverna.workflow.edits.SetIterationStrategyStackEdit;
-import org.apache.taverna.workflowmodel.utils.AnnotationTools;
-
-/**
- * @author alanrw
- */
-public class NestedWorkflowCreationDialog extends HelpEnabledDialog {
- private static final long serialVersionUID = 727059218457420449L;
- private static final Logger logger = getLogger(NestedWorkflowCreationDialog.class);
- private static final Comparator<Processor> processorComparator = new Comparator<Processor>() {
- @Override
- public int compare(Processor o1, Processor o2) {
- return o1.getName().compareTo(o2.getName());
- }
- };
- private static final ListCellRenderer<Object> defaultRenderer = new DefaultListCellRenderer();
- private static final ListCellRenderer<Processor> processorRenderer = new ListCellRenderer<Processor>() {
- @Override
- public Component getListCellRendererComponent(
- JList<? extends Processor> list,
- Processor value, int index, boolean isSelected,
- boolean cellHasFocus) {
- return defaultRenderer.getListCellRendererComponent(list,
- value.getName(), index, isSelected, cellHasFocus);
- }
- };
-
- private final EditManager em;
- private final GraphViewComponent graphView;
- private final List<Processor> includedProcessors = new ArrayList<>();
- private List<Processor> allProcessors;
- private final List<Processor> includableProcessors = new ArrayList<>();
-
- private JList<Processor> includableList = new JList<>();
- private JList<Processor> includedList = new JList<>();
- private final Workflow currentDataflow;
- private JButton excludeButton;
- private JButton includeButton;
- private JButton okButton;
- private JButton resetButton;
- private JTextField nameField = new JTextField(30);
-
- public NestedWorkflowCreationDialog(Frame owner, Object o,
- Workflow dataflow, EditManager em, GraphViewComponent graphView) {
- super(owner, "Nested workflow creation", true, null);
- this.em = em;
- this.graphView = graphView;
-
- if (o instanceof Processor)
- includedProcessors.add((Processor) o);
- this.currentDataflow = dataflow;
-
- allProcessors = new ArrayList<>(dataflow.getProcessors());
-
- this.setLayout(new BorderLayout());
- JPanel buttonPanel = new JPanel();
- buttonPanel.setLayout(new FlowLayout());
-
- okButton = new DeselectingButton(new OKAction(this));
- buttonPanel.add(okButton);
-
- resetButton = new DeselectingButton(new ResetAction(this));
- buttonPanel.add(resetButton);
-
- JButton cancelButton = new DeselectingButton(new CancelAction(this));
- buttonPanel.add(cancelButton);
-
- JPanel innerPanel = new JPanel(new BorderLayout());
- JPanel processorChoice = createProcessorChoicePanel(dataflow);
- innerPanel.add(processorChoice, CENTER);
-
- JPanel namePanel = new JPanel(new FlowLayout());
- namePanel.add(new JLabel("Workflow name: "));
- nameField.setText("nested");
- namePanel.add(nameField);
- innerPanel.add(namePanel, SOUTH);
-
- this.add(innerPanel, CENTER);
-
- this.add(buttonPanel, SOUTH);
- this.pack();
- this.setSize(new Dimension(500, 800));
- }
-
- private JPanel createProcessorChoicePanel(Workflow dataflow) {
- JPanel result = new JPanel();
- result.setLayout(new GridLayout(0, 2));
-
- JPanel includedProcessorsPanel = createIncludedProcessorsPanel();
- JPanel includableProcessorsPanel = createIncludableProcessorsPanel();
- result.add(includableProcessorsPanel);
- result.add(includedProcessorsPanel);
- updateLists();
- return result;
- }
-
- private JPanel createIncludableProcessorsPanel() {
- JPanel result = new JPanel();
- result.setLayout(new BorderLayout());
- result.add(new JLabel("Possible services"), NORTH);
- includableList.setModel(new DefaultComboBoxModel<>(new Vector<>(
- includableProcessors)));
- includableList.setCellRenderer(processorRenderer);
- result.add(new JScrollPane(includableList), CENTER);
-
- includeButton = new DeselectingButton("Include", new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- includedProcessors.addAll(includableList
- .getSelectedValuesList());
- calculateIncludableProcessors();
- updateLists();
- }
- });
-
- JPanel buttonPanel = new JPanel();
- buttonPanel.setLayout(new FlowLayout());
- buttonPanel.add(includeButton);
- result.add(buttonPanel, SOUTH);
- return result;
- }
-
- private void resetLists() {
- includedProcessors.clear();
- updateLists();
- }
-
- private JPanel createIncludedProcessorsPanel() {
- JPanel result = new JPanel();
- result.setLayout(new BorderLayout());
- result.add(new JLabel("Included services"), NORTH);
- includedList.setModel(new DefaultComboBoxModel<>(new Vector<>(
- includedProcessors)));
- includedList.setCellRenderer(processorRenderer);
- result.add(new JScrollPane(includedList), CENTER);
-
- excludeButton = new DeselectingButton("Exclude", new ActionListener() {
- @Override
- public void actionPerformed(ActionEvent e) {
- includedProcessors.removeAll(includedList
- .getSelectedValuesList());
- calculateIncludableProcessors();
- updateLists();
- }
- });
- JPanel buttonPanel = new JPanel();
- buttonPanel.setLayout(new FlowLayout());
- buttonPanel.add(excludeButton);
-
- result.add(buttonPanel, SOUTH);
- return result;
- }
-
- private void updateLists() {
- calculateIncludableProcessors();
- sort(includedProcessors, processorComparator);
- sort(includableProcessors, processorComparator);
- includedList.setModel(new DefaultComboBoxModel<>(new Vector<>(
- includedProcessors)));
- includableList.setModel(new DefaultComboBoxModel<>(new Vector<>(
- includableProcessors)));
- boolean someIncludedProcessors = includedProcessors.size() > 0;
- excludeButton.setEnabled(someIncludedProcessors);
- okButton.setEnabled(someIncludedProcessors);
- resetButton.setEnabled(someIncludedProcessors);
- boolean someIncludableProcessors = includableProcessors.size() > 0;
- includeButton.setEnabled(someIncludableProcessors);
- }
-
- public void calculateIncludableProcessors() {
- includableProcessors.clear();
- if (includedProcessors.isEmpty())
- includableProcessors.addAll(allProcessors);
- else
- for (Processor p : includedProcessors) {
- considerNearestUpstream(p);
- considerNearestDownstream(p);
- }
- sort(includableProcessors, processorComparator);
- }
-
- private void considerNearestDownstream(Processor investigate) {
- for (BlockingControlLink condition : investigate.controlLinksWaitingFor())
- considerInclusion(condition.getBlock());
-
- for (OutputProcessorPort outputPort : investigate.getOutputPorts())
- for (DataLink datalink : outputPort.getDatalinksFrom()) {
- ReceiverPort sink = datalink.getSendsTo();
- if (sink instanceof InputProcessorPort)
- considerInclusion(((InputProcessorPort) sink).getParent());
- }
- }
-
- private void considerNearestUpstream(Processor investigate) {
- for (BlockingControlLink condition : investigate.controlLinksBlocking())
- considerInclusion(condition.getUntilFinished());
- for (InputProcessorPort inputPort : investigate.getInputPorts())
- for (DataLink incomingLink : inputPort.getDatalinksTo()) {
- if (incomingLink == null)
- continue;
- SenderPort source = incomingLink.getReceivesFrom();
- if (source instanceof OutputProcessorPort)
- considerInclusion(((OutputProcessorPort) source).getParent());
- }
- }
-
- private void considerInclusion(Processor p) {
- if (!includedProcessors.contains(p)
- && !includableProcessors.contains(p))
- includableProcessors.add(p);
- }
-
- private void createNestedWorkflow() {
- final List<Edit<?>> currentWorkflowEditList = new ArrayList<>();
- Map<Object, Object> oldNewMapping = new HashMap<>();
- Map<DataLink, String> linkProcessorPortMapping = new HashMap<>();
- Map<SenderPort, OutputWorkflowPort> outputPortMap = new HashMap<>();
- Map<ReceiverPort, InputWorkflowPort> inputPortMap = new HashMap<>();
-
- Profile profile;//FIXME
- Processor nestingProcessor = createNestingProcessor(currentWorkflowEditList);
- Workflow nestedDataflow = createNestedDataflow();
-
- transferProcessors(currentWorkflowEditList, oldNewMapping,
- nestedDataflow);
- transferDatalinks(oldNewMapping, linkProcessorPortMapping,
- outputPortMap, inputPortMap, nestedDataflow);
- transferConditions(currentWorkflowEditList, oldNewMapping,
- nestingProcessor);
- addDataflowToNestingProcessor(nestingProcessor, nestedDataflow, profile);
- currentWorkflowEditList.add(new AddChildEdit<>(currentDataflow,
- nestingProcessor));
- createDatalinkEdits(currentWorkflowEditList, oldNewMapping,
- linkProcessorPortMapping, nestingProcessor);
-
- try {
- GraphController gc = graphView.getGraphController(currentDataflow);
- gc.setExpandNestedDataflow(nestingProcessor.getActivity(profile), true);
- em.doDataflowEdit(currentDataflow.getParent(), new CompoundEdit(
- currentWorkflowEditList));
- gc.redraw();
- } catch (EditException e1) {
- logger.error("failed to manufacture nested workflow", e1);
- }
- }
-
- private void addDataflowToNestingProcessor(Processor nestingProcessor,
- Workflow nestedDataflow, Profile profile) {
- Activity da = new Activity();
- da.setParent(profile);
- da.createConfiguration(NESTED_WORKFLOW).getJsonAsObjectNode()
- .put("nestedWorkflow", nestedDataflow.getName());
- try {
- new AddActivityEdit(nestingProcessor, da).doEdit();
- new SetIterationStrategyStackEdit(nestingProcessor, null/*FIXME*/).doEdit();
- for (InputActivityPort aip : da.getInputPorts()) {
- InputProcessorPort pip = new InputProcessorPort();
- pip.setName(aip.getName());
- pip.setDepth(aip.getDepth());
- new AddProcessorInputPortEdit(nestingProcessor, pip).doEdit();
- new AddActivityInputPortMappingEdit(da, pip, aip).doEdit();
- }
- for (OutputActivityPort aop : da.getOutputPorts()) {
- OutputProcessorPort pop = new OutputProcessorPort();
- pop.setName(aop.getName());
- pop.setDepth(aop.getDepth());
- pop.setGranularDepth(aop.getGranularDepth());
- new AddProcessorOutputPortEdit(nestingProcessor, pop).doEdit();
- new AddActivityOutputPortMappingEdit(da, pop, aop).doEdit();
- }
- } catch (EditException e1) {
- logger.error("failed to add ports to processor", e1);
- }
- }
-
- private void createDatalinkEdits(List<Edit<?>> editList,
- Map<Object, Object> oldNewMapping,
- Map<DataLink, String> linkProcessorPortMapping,
- Processor nestingProcessor) {
- for (DataLink dl : currentDataflow.getDataLinks())
- if (oldNewMapping.containsKey(dl.getReceivesFrom())
- && oldNewMapping.containsKey(dl.getSendsTo()))
- // Internal to nested workflow
- editList.add(new RemoveDataLinkEdit(dl.getParent(), dl));
- else if (oldNewMapping.containsKey(dl.getReceivesFrom())) {
- // Coming out of nested workflow
- OutputProcessorPort nestedPort = nestingProcessor
- .getOutputPorts().getByName(
- linkProcessorPortMapping.get(dl));
- if (nestedPort != null) {
- DataLink replacementDatalink = new DataLink(nestedPort
- .getParent().getParent(), nestedPort,
- dl.getSendsTo());
- editList.add(new RemoveDataLinkEdit(dl.getParent(), dl));
- editList.add(new AddDataLinkEdit(nestedPort.getParent()
- .getParent(), replacementDatalink));
- }
- } else if (oldNewMapping.containsKey(dl.getSendsTo())) {
- // Coming into nested workflow
- InputProcessorPort nestedPort = nestingProcessor
- .getInputPorts().getByName(
- linkProcessorPortMapping.get(dl));
- if (nestedPort != null) {
- DataLink replacementDatalink = new DataLink(nestedPort
- .getParent().getParent(), dl.getReceivesFrom(),
- nestedPort);
- editList.add(new RemoveDataLinkEdit(dl.getParent(), dl));
- editList.add(new AddDataLinkEdit(nestedPort.getParent()
- .getParent(), replacementDatalink));
- }
- }
- }
-
- private void transferConditions(List<Edit<?>> editList,
- Map<Object, Object> oldNewMapping, Processor nestingProcessor) {
- for (Processor p : currentDataflow.getProcessors()) {
- boolean isTargetMoved = oldNewMapping.containsKey(p);
- for (BlockingControlLink c : p.controlLinksWaitingFor()) {
- Processor pre = c.getUntilFinished();
- boolean isControlMoved = oldNewMapping.containsKey(pre);
- if (isTargetMoved && isControlMoved) {
- // Add in new condition
- new BlockingControlLink(
- (Processor) oldNewMapping.get(pre),
- (Processor) oldNewMapping.get(p));
- } else if (isTargetMoved) {
- editList.add(new RemoveChildEdit<>(c.getParent(),c));
- editList.add(new AddChildEdit<>(c.getParent(),
- new BlockingControlLink(pre, nestingProcessor)));
- } else if (isControlMoved) {
- editList.add(new RemoveChildEdit<>(c.getParent(), c));
- editList.add(new AddChildEdit<>(c.getParent(),
- new BlockingControlLink(nestingProcessor, p)));
- }
- }
- }
- }
-
- private void transferDatalinks(Map<Object, Object> oldNewMapping,
- Map<DataLink, String> linkProcessorPortMapping,
- Map<SenderPort, OutputWorkflowPort> outputPortMap,
- Map<ReceiverPort, InputWorkflowPort> inputPortMap,
- Workflow nestedDataflow) {
- NamedSet<InputWorkflowPort> inputPorts = new NamedSet<>();
- NamedSet<OutputWorkflowPort> outputPorts = new NamedSet<>();
-
- for (DataLink dl : currentDataflow.getDataLinks()) {
- final SenderPort datalinkSource = dl.getReceivesFrom();
- final ReceiverPort datalinkSink = dl.getSendsTo();
- if (oldNewMapping.containsKey(datalinkSource)
- && oldNewMapping.containsKey(datalinkSink)) {
- // Internal to nested workflow
- DataLink newDatalink = new DataLink(null,
- (SenderPort) oldNewMapping.get(datalinkSource),
- (ReceiverPort) oldNewMapping.get(datalinkSink));
- try {
- new AddDataLinkEdit(nestedDataflow, newDatalink).doEdit();
- } catch (EditException e1) {
- logger.error("failed to connect datalink", e1);
- }
- } else if (oldNewMapping.containsKey(datalinkSource)) {
- OutputWorkflowPort dop = null;
- if (!outputPortMap.containsKey(datalinkSource)) {
- dop = new OutputWorkflowPort(nestedDataflow, uniqueName(
- datalinkSource.getName(), outputPorts));
- outputPorts.add(dop);
- outputPortMap.put(datalinkSource, dop);
- } else
- dop = outputPortMap.get(datalinkSource);
- String portName = dop.getName();
- // Coming out of nested workflow
- linkProcessorPortMapping.put(dl, portName);
- try {
- new AddWorkflowOutputPortEdit(nestedDataflow, dop).doEdit();
- DataLink newDatalink = new DataLink(
- (SenderPort) oldNewMapping.get(datalinkSource),
- dop.getInternalInputPort());
- new AddDataLinkEdit(nestedDataflow, newDatalink).doEdit();
- } catch (EditException e1) {
- logger.error("failed to add dataflow output", e1);
- }
- } else if (oldNewMapping.containsKey(datalinkSink)) {
- InputWorkflowPort dip = null;
- if (!inputPortMap.containsKey(datalinkSink)) {
- dip = new InputWorkflowPort(nestedDataflow, uniqueName(
- datalinkSink.getName(), inputPorts));
- inputPorts.add(dip);
- dip.setDepth(dl.getResolvedDepth());
- inputPortMap.put(datalinkSink, dip);
- } else
- dip = inputPortMap.get(datalinkSink);
- String portName = dip.getName();
- // Coming into nested workflow
- linkProcessorPortMapping.put(dl, portName);
- try {
- new AddWorkflowInputPortEdit(nestedDataflow, dip).doEdit();
- DataLink newDatalink = new DataLink(
- dip.getInternalOutputPort(),
- (ReceiverPort) oldNewMapping.get(datalinkSink));
- new AddDataLinkEdit(nestedDataflow, newDatalink).doEdit();
- } catch (EditException e1) {
- logger.error("failed to add dataflow input", e1);
- }
- }
- }
- }
-
- private void transferProcessors(List<Edit<?>> editList,
- Map<Object, Object> oldNewMapping, Workflow nestedDataflow) {
- for (Processor entity : includedProcessors)
- try {
- if (entity instanceof Processor)
- transferProcessor(editList, oldNewMapping, nestedDataflow,
- (Processor) entity);
- /*else if (entity instanceof Merge)
- //FIXME what to do here? Anything?
- transferMerge(editList, oldNewMapping, nestedDataflow,
- (Merge) entity);*/
- } catch (Exception e1) {
- logger.error("failed to transfer processor", e1);
- }
- }
-
- /*private void transferMerge(List<Edit<?>> editList,
- Map<Object, Object> oldNewMapping, Workflow nestedDataflow,
- Merge merge) throws EditException {
- editList.add(edits.getRemoveMergeEdit(currentDataflow, merge));
- Merge newMerge = edits.createMerge(nestedDataflow);
- edits.getAddMergeEdit(nestedDataflow, newMerge).doEdit();
- oldNewMapping.put(merge, newMerge);
- for (MergeInputPort mip : merge.getInputPorts()) {
- MergeInputPort newMip = edits.createMergeInputPort(newMerge,
- mip.getName(), mip.getDepth());
- edits.getAddMergeInputPortEdit(newMerge, newMip).doEdit();
- oldNewMapping.put(mip, newMip);
- }
- oldNewMapping.put(merge.getOutputPort(), newMerge.getOutputPort());
- }*/
-
- private void transferProcessor(List<Edit<?>> editList,
- Map<Object, Object> oldNewMapping, Workflow nestedDataflow,
- Processor p) throws Exception {
- editList.add(new RemoveChildEdit<>(currentDataflow, p));
- Processor newProcessor = (Processor) p.clone();
- newProcessor.setParent(nestedDataflow);
- oldNewMapping.put(p, newProcessor);
- for (InputProcessorPort pip : p.getInputPorts())
- for (InputProcessorPort newPip : newProcessor.getInputPorts())
- if (pip.getName().equals(newPip.getName())) {
- oldNewMapping.put(pip, newPip);
- break;
- }
- for (OutputProcessorPort pop : p.getOutputPorts())
- for (OutputProcessorPort newPop : newProcessor.getOutputPorts())
- if (pop.getName().equals(newPop.getName())) {
- oldNewMapping.put(pop, newPop);
- break;
- }
- }
-
- private Processor createNestingProcessor(List<Edit<?>> editList) {
- //TODO check what workflow the new processor is going into
- Processor nestingProcessor = new Processor(currentDataflow, uniqueName(
- nameField.getText(), currentDataflow.getProcessors()));
- if (includedProcessors.size() != 1)
- return nestingProcessor;
- Processor includedProcessor = includedProcessors.get(0);
- for (Annotation a: includedProcessor.getAnnotations()) {
- Annotation newAnn = (Annotation) a.clone();
- newAnn.setTarget(nestingProcessor);
- editList.add(new AddChildEdit<>(a.getParent(), newAnn));
- }
- return nestingProcessor;
- }
-
- private Workflow createNestedDataflow() {
- Workflow nestedDataflow = new Workflow(uniqueName(nameField.getText(),
- currentDataflow.getParent().getWorkflows()));
- // Set the title of the nested workflow to the name suggested by the user
- try {
- new AnnotationTools().setAnnotationString(nestedDataflow,
- DescriptiveTitle.class, nameField.getText()).doEdit();
- } catch (EditException ex) {
- logger.error("failed to put annotation on nested dataflow", ex);
- }
- return nestedDataflow;
- }
-
- private final class OKAction extends AbstractAction {
- private static final long serialVersionUID = 6516891432445682857L;
- private final JDialog dialog;
-
- private OKAction(JDialog dialog) {
- super("OK");
- this.dialog = dialog;
- }
-
- @Override
- public void actionPerformed(ActionEvent e) {
- if (includedProcessors.isEmpty()) {
- showMessageDialog(
- null,
- "At least one service must be included in the nested workflow",
- "Nested workflow creation", WARNING_MESSAGE);
- return;
- }
-
- createNestedWorkflow();
- dialog.setVisible(false);
- }
- }
-
- private final class ResetAction extends AbstractAction {
- private static final long serialVersionUID = 7296742769289881218L;
-
- private ResetAction(JDialog dialog) {
- super("Reset");
- }
-
- @Override
- public void actionPerformed(ActionEvent e) {
- resetLists();
- }
- }
-
- private final class CancelAction extends AbstractAction {
- private static final long serialVersionUID = -7842176979437027091L;
- private final JDialog dialog;
-
- private CancelAction(JDialog dialog) {
- super("Cancel");
- this.dialog = dialog;
- }
-
- @Override
- public void actionPerformed(ActionEvent e) {
- dialog.setVisible(false);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-component/blob/b7b61e71/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/NestedWorkflowCreatorMenuAction.java
----------------------------------------------------------------------
diff --git a/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/NestedWorkflowCreatorMenuAction.java b/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/NestedWorkflowCreatorMenuAction.java
deleted file mode 100644
index 0cdb2ba..0000000
--- a/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/NestedWorkflowCreatorMenuAction.java
+++ /dev/null
@@ -1,94 +0,0 @@
-/*
-* 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 io.github.taverna_extras.component.ui.menu;
-
-import java.awt.Dialog;
-import java.awt.event.ActionEvent;
-import java.net.URI;
-
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-import org.apache.taverna.activities.dataflow.servicedescriptions.DataflowActivityIcon;
-
-import org.apache.taverna.scufl2.api.core.Processor;
-import org.apache.taverna.scufl2.api.core.Workflow;
-import org.apache.taverna.ui.menu.AbstractContextualMenuAction;
-import org.apache.taverna.workbench.edits.EditManager;
-import org.apache.taverna.workbench.selection.SelectionManager;
-import org.apache.taverna.workbench.views.graph.GraphViewComponent;
-
-/**
- * @author alanrw
- */
-public class NestedWorkflowCreatorMenuAction extends
- AbstractContextualMenuAction {
- private static final URI configureSection = URI
- .create("http://taverna.sf.net/2009/contextMenu/configure");
-
- private SelectionManager sm;
- private EditManager em;
- private GraphViewComponent gv;
-
- public NestedWorkflowCreatorMenuAction() {
- super(configureSection, 70);
- }
-
- public void setEditManager(EditManager editManager) {
- em = editManager;
- }
- public void setGraphView(GraphViewComponent graphView) {
- gv = graphView;
- }
- public void setSelectionManager(SelectionManager selectionManager) {
- sm = selectionManager;
- }
-
- @Override
- public boolean isEnabled() {
- Object selection = getContextualSelection().getSelection();
- if (!super.isEnabled() || selection == null)
- return false;
- if (selection instanceof Processor)
- return true;
- if (!(selection instanceof Workflow))
- return false;
- return !((Workflow) selection).getProcessors().isEmpty();
- }
-
- @Override
- protected Action createAction() {
- return new AbstractAction("Create nested workflow...",
- DataflowActivityIcon.getDataflowIcon()) {
- private static final long serialVersionUID = -3121307982540205215L;
-
- @Override
- public void actionPerformed(ActionEvent e) {
- createNestedWorkflow();
- }
- };
- }
-
- private void createNestedWorkflow() {
- Dialog dialog = new NestedWorkflowCreationDialog(null,
- getContextualSelection().getSelection(),
- sm.getSelectedWorkflow(), em, gv);
- dialog.setVisible(true);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-component/blob/b7b61e71/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/OpenComponentFromComponentActivityAction.java
----------------------------------------------------------------------
diff --git a/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/OpenComponentFromComponentActivityAction.java b/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/OpenComponentFromComponentActivityAction.java
deleted file mode 100644
index 2bce63a..0000000
--- a/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/OpenComponentFromComponentActivityAction.java
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
-* 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 io.github.taverna_extras.component.ui.menu;
-
-import static org.apache.log4j.Logger.getLogger;
-
-import java.awt.event.ActionEvent;
-import java.net.MalformedURLException;
-
-import org.apache.log4j.Logger;
-import io.github.taverna_extras.component.api.ComponentFactory;
-import io.github.taverna_extras.component.api.Version;
-import io.github.taverna_extras.component.ui.ComponentAction;
-import io.github.taverna_extras.component.ui.ComponentActivityConfigurationBean;
-import io.github.taverna_extras.component.ui.serviceprovider.ComponentServiceIcon;
-
-import org.apache.taverna.scufl2.api.activity.Activity;
-import org.apache.taverna.scufl2.api.container.WorkflowBundle;
-import org.apache.taverna.workbench.file.FileManager;
-import org.apache.taverna.workbench.file.FileType;
-import org.apache.taverna.workbench.file.exceptions.OpenException;
-import org.apache.taverna.workbench.views.graph.GraphViewComponent;
-
-/**
- * @author alanrw
- */
-@SuppressWarnings("serial")
-public class OpenComponentFromComponentActivityAction extends ComponentAction {
- private static Logger logger = getLogger(OpenComponentFromComponentActivityAction.class);
-
- private final FileManager fileManager;
- private final ComponentFactory factory;
- private final FileType fileType;
-
- public OpenComponentFromComponentActivityAction(FileManager fileManager,
- ComponentFactory factory, FileType ft,
- GraphViewComponent graphView, ComponentServiceIcon icon) {
- super("Open component...", graphView);
- this.fileManager = fileManager;
- this.factory = factory;
- this.fileType = ft;
- setIcon(icon);
- }
-
- private Activity selection;
-
- @Override
- public void actionPerformed(ActionEvent ev) {
- try {
- Version.ID ident = new ComponentActivityConfigurationBean(
- selection.getConfiguration(), factory);
- WorkflowBundle d = fileManager.openDataflow(fileType, ident);
- markGraphAsBelongingToComponent(d);
- } catch (OpenException e) {
- logger.error("failed to open component", e);
- } catch (MalformedURLException e) {
- logger.error("bad URL in component description", e);
- }
- }
-
- public void setSelection(Activity selection) {
- this.selection = selection;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-component/blob/b7b61e71/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/OpenComponentFromComponentActivityMenuAction.java
----------------------------------------------------------------------
diff --git a/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/OpenComponentFromComponentActivityMenuAction.java b/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/OpenComponentFromComponentActivityMenuAction.java
deleted file mode 100644
index 6f28816..0000000
--- a/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/OpenComponentFromComponentActivityMenuAction.java
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
-* 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 io.github.taverna_extras.component.ui.menu;
-
-import java.net.URI;
-
-import javax.swing.Action;
-
-import io.github.taverna_extras.component.api.ComponentFactory;
-import io.github.taverna_extras.component.ui.serviceprovider.ComponentServiceIcon;
-
-import org.apache.taverna.scufl2.api.activity.Activity;
-import org.apache.taverna.scufl2.api.core.Processor;
-import org.apache.taverna.ui.menu.AbstractContextualMenuAction;
-import org.apache.taverna.workbench.file.FileManager;
-import org.apache.taverna.workbench.file.FileType;
-import org.apache.taverna.workbench.selection.SelectionManager;
-import org.apache.taverna.workbench.views.graph.GraphViewComponent;
-
-/**
- * @author alanrw
- */
-public class OpenComponentFromComponentActivityMenuAction extends
- AbstractContextualMenuAction {
- private static final URI configureSection = URI
- .create("http://taverna.sf.net/2009/contextMenu/configure");
-
- private SelectionManager sm;
- private FileManager fileManager;
- private ComponentFactory factory;
- private FileType fileType;
- private GraphViewComponent graphView;
- private ComponentServiceIcon icon;
-
- public OpenComponentFromComponentActivityMenuAction() {
- super(configureSection, 75);
- }
-
- public void setSelectionManager(SelectionManager sm) {
- this.sm = sm;
- }
-
- public void setFileManager(FileManager fileManager) {
- this.fileManager = fileManager;
- }
-
- public void setComponentFactory(ComponentFactory factory) {
- this.factory = factory;
- }
-
- public void setFileType(FileType fileType) {
- this.fileType = fileType;
- }
-
- public void setGraphView(GraphViewComponent graphView) {
- this.graphView = graphView;
- }
-
- public void setIcon(ComponentServiceIcon icon) {
- this.icon = icon;
- }
-
- @Override
- public boolean isEnabled() {
- return getSelectedActivity() != null;
- }
-
- @Override
- protected Action createAction() {
- OpenComponentFromComponentActivityAction action = new OpenComponentFromComponentActivityAction(
- fileManager, factory, fileType, graphView, icon);
- action.setSelection(getSelectedActivity());
- return action;
- }
-
- private Activity getSelectedActivity() {
- Object selection = getContextualSelection().getSelection();
- if (!super.isEnabled() || !(selection instanceof Processor))
- return null;
-
- try {
- return ((Processor) selection).getActivity(sm.getSelectedProfile());
- } catch (RuntimeException e) {
- return null;
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-component/blob/b7b61e71/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/ReplaceByComponentAction.java
----------------------------------------------------------------------
diff --git a/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/ReplaceByComponentAction.java b/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/ReplaceByComponentAction.java
deleted file mode 100644
index ebb51a8..0000000
--- a/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/ReplaceByComponentAction.java
+++ /dev/null
@@ -1,275 +0,0 @@
-/*
-* 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 io.github.taverna_extras.component.ui.menu;
-
-import static java.awt.BorderLayout.CENTER;
-import static java.awt.BorderLayout.SOUTH;
-import static javax.swing.JOptionPane.ERROR_MESSAGE;
-import static javax.swing.JOptionPane.OK_CANCEL_OPTION;
-import static javax.swing.JOptionPane.OK_OPTION;
-import static javax.swing.JOptionPane.showConfirmDialog;
-import static javax.swing.JOptionPane.showMessageDialog;
-import static io.github.taverna_extras.component.api.config.ComponentPropertyNames.COMPONENT_NAME;
-import static io.github.taverna_extras.component.ui.ComponentActivityConfigurationBean.ignorableNames;
-import static io.github.taverna_extras.component.ui.util.Utils.uniqueName;
-import static org.apache.taverna.scufl2.api.common.Scufl2Tools.NESTED_WORKFLOW;
-
-import java.awt.BorderLayout;
-import java.awt.FlowLayout;
-import java.awt.event.ActionEvent;
-import java.net.URI;
-import java.util.ArrayList;
-import java.util.List;
-
-import javax.swing.AbstractAction;
-import javax.swing.JCheckBox;
-import javax.swing.JPanel;
-import javax.swing.JSeparator;
-
-import io.github.taverna_extras.component.api.Component;
-import io.github.taverna_extras.component.api.ComponentFactory;
-import io.github.taverna_extras.component.api.Family;
-import io.github.taverna_extras.component.api.Registry;
-import io.github.taverna_extras.component.api.Version;
-import io.github.taverna_extras.component.ui.ComponentActivityConfigurationBean;
-import io.github.taverna_extras.component.ui.panel.ComponentChooserPanel;
-import io.github.taverna_extras.component.ui.preference.ComponentPreference;
-import io.github.taverna_extras.component.ui.serviceprovider.ComponentServiceIcon;
-import io.github.taverna_extras.component.ui.util.Utils;
-
-import org.apache.taverna.scufl2.api.activity.Activity;
-import org.apache.taverna.scufl2.api.common.Scufl2Tools;
-import org.apache.taverna.scufl2.api.core.Processor;
-import org.apache.taverna.scufl2.api.core.Workflow;
-import org.apache.taverna.scufl2.api.port.InputActivityPort;
-import org.apache.taverna.scufl2.api.port.InputProcessorPort;
-import org.apache.taverna.scufl2.api.port.OutputActivityPort;
-import org.apache.taverna.scufl2.api.port.OutputProcessorPort;
-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.AddActivityEdit;
-import org.apache.taverna.workflow.edits.AddActivityInputPortMappingEdit;
-import org.apache.taverna.workflow.edits.AddActivityOutputPortMappingEdit;
-import org.apache.taverna.workflow.edits.RemoveActivityEdit;
-import org.apache.taverna.workflow.edits.RenameEdit;
-
-/**
- * @author alanrw
- */
-public class ReplaceByComponentAction extends AbstractAction {
- private static final long serialVersionUID = 7364648399658711574L;
-
- private final EditManager em;
- private final ComponentPreference prefs;
- private final SelectionManager sm;
- private final ComponentFactory factory;
- private final Scufl2Tools tools = new Scufl2Tools();
-
- private Processor selection;
-
- public ReplaceByComponentAction(ComponentPreference prefs,
- ComponentFactory factory, EditManager em, SelectionManager sm,
- ComponentServiceIcon icon) {
- super("Replace by component...", icon.getIcon());
- this.prefs = prefs;
- this.em = em;
- this.sm = sm;
- this.factory = factory;
- }
-
- @Override
- public void actionPerformed(ActionEvent e) {
- JPanel overallPanel = new JPanel(new BorderLayout());
- ComponentChooserPanel panel = new ComponentChooserPanel(prefs);
- overallPanel.add(panel, CENTER);
- JPanel checkBoxPanel = new JPanel(new FlowLayout());
- JCheckBox replaceAllCheckBox = new JCheckBox(
- "Replace all matching services");
- checkBoxPanel.add(replaceAllCheckBox);
- checkBoxPanel.add(new JSeparator());
- JCheckBox renameServicesCheckBox = new JCheckBox("Rename service(s)");
- checkBoxPanel.add(renameServicesCheckBox);
- renameServicesCheckBox.setSelected(true);
- overallPanel.add(checkBoxPanel, SOUTH);
- int answer = showConfirmDialog(null, overallPanel, "Component choice",
- OK_CANCEL_OPTION);
- if (answer == OK_OPTION)
- doReplace(panel.getChosenRegistry(), panel.getChosenFamily(),
- replaceAllCheckBox.isSelected(),
- renameServicesCheckBox.isSelected(),
- panel.getChosenComponent());
- }
-
- private void doReplace(Registry chosenRegistry, Family chosenFamily,
- boolean replaceAll, boolean rename, Component chosenComponent) {
- Version chosenVersion = chosenComponent.getComponentVersionMap().get(
- chosenComponent.getComponentVersionMap().lastKey());
- Version.ID ident = new Version.Identifier(
- chosenRegistry.getRegistryBase(), chosenFamily.getName(),
- chosenComponent.getName(), chosenVersion.getVersionNumber());
-
- ComponentActivityConfigurationBean cacb = new ComponentActivityConfigurationBean(
- ident, factory);
-
- try {
- if (replaceAll) {
- Activity baseActivity = selection.getActivity(sm
- .getSelectedProfile());
- URI activityType = baseActivity.getType();
- String configString = getConfigString(baseActivity);
-
- replaceAllMatchingActivities(activityType, cacb, configString,
- rename, sm.getSelectedWorkflow());
- } else
- replaceActivity(cacb, selection, rename,
- sm.getSelectedWorkflow());
- } catch (Exception e) {
- showMessageDialog(
- null,
- "Failed to replace nested workflow with component: "
- + e.getMessage(), "Component Problem",
- ERROR_MESSAGE);
- }
- }
-
- private String getConfigString(Activity baseActivity) {
- return baseActivity.getConfiguration().getJsonAsString();
- }
-
- private void replaceAllMatchingActivities(URI activityType,
- ComponentActivityConfigurationBean cacb, String configString,
- boolean rename, Workflow d) throws IntermediateException {
- for (Processor p : d.getProcessors()) {
- Activity a = p.getActivity(sm.getSelectedProfile());
- if (a.getType().equals(activityType)
- && getConfigString(a).equals(configString))
- replaceActivity(cacb, p, rename, d);
- else if (a.getType().equals(NESTED_WORKFLOW))
- replaceAllMatchingActivities(activityType, cacb, configString,
- rename,
- tools.nestedWorkflowForProcessor(p, a.getParent()));
- }
- }
-
- private void replaceActivity(ComponentActivityConfigurationBean cacb,
- Processor p, boolean rename, Workflow d) throws IntermediateException {
- final Activity originalActivity = p.getActivity(sm.getSelectedProfile());
- final List<Edit<?>> currentWorkflowEditList = new ArrayList<>();
-
- Activity replacementActivity = new Activity();
- try {
- URI configType;
- replacementActivity.createConfiguration(configType);
-
- replacementActivity.configure(cacb);
- //FIXME
- } catch (Exception e) {
- throw new IntermediateException(
- "Unable to configure component", e);
- }
- if (originalActivity.getInputPorts().size() != replacementActivity
- .getInputPorts().size())
- throw new IntermediateException(
- "Component does not have matching ports", null);
-
- int replacementOutputSize = replacementActivity.getOutputPorts().size();
- int originalOutputSize = originalActivity.getOutputPorts().size();
- for (String name : ignorableNames) {
- if (originalActivity.getOutputPorts().getByName(name) != null)
- originalOutputSize--;
- if (replacementActivity.getOutputPorts().getByName(name) != null)
- replacementOutputSize--;
- }
-
- int sizeDifference = replacementOutputSize - originalOutputSize;
- if (sizeDifference != 0)
- throw new IntermediateException(
- "Component does not have matching ports", null);
-
- for (InputActivityPort aip : originalActivity.getInputPorts()) {
- String aipName = aip.getName();
- int aipDepth = aip.getDepth();
- InputActivityPort caip = replacementActivity.getInputPorts().getByName(aipName);
- if ((caip == null) || (caip.getDepth() != aipDepth))
- throw new RuntimeException("Original input port "
- + aipName + " is not matched");
- }
- for (OutputActivityPort aop : originalActivity.getOutputPorts()) {
- String aopName = aop.getName();
- int aopDepth = aop.getDepth();
- OutputActivityPort caop = replacementActivity.getOutputPorts().getByName(aopName);
- if ((caop == null || aopDepth != caop.getDepth())
- && !ignorableNames.contains(aopName))
- throw new IntermediateException(
- "Original output port " + aopName + " is not matched", null);
- }
-
- for (InputProcessorPort pip : p.getInputPorts()) {
- InputActivityPort iap = replacementActivity.getInputPorts()
- .getByName(pip.getName());
- if (iap == null)
- iap = new InputActivityPort(replacementActivity, pip.getName());
- currentWorkflowEditList.add(new AddActivityInputPortMappingEdit(
- replacementActivity, pip, iap));
- }
-
- for (OutputProcessorPort pop : p.getOutputPorts()) {
- OutputActivityPort oap = replacementActivity.getOutputPorts()
- .getByName(pop.getName());
- if (oap == null)
- oap = new OutputActivityPort(replacementActivity, pop.getName());
- currentWorkflowEditList.add(new AddActivityOutputPortMappingEdit(
- replacementActivity, pop, oap));
- }
-
- currentWorkflowEditList
- .add(new AddActivityEdit(p, replacementActivity));
- currentWorkflowEditList
- .add(new RemoveActivityEdit(p, originalActivity));
-
- if (rename) {
- String possibleName = replacementActivity.getConfiguration()
- .getJsonAsObjectNode().get(COMPONENT_NAME).textValue();
- currentWorkflowEditList.add(new RenameEdit<>(p, uniqueName(
- possibleName, d.getProcessors())));
- }
- try {
- em.doDataflowEdit(d.getParent(), new CompoundEdit(
- currentWorkflowEditList));
- } catch (EditException e) {
- throw new IntermediateException(
- "Unable to replace with component", e);
- }
- }
-
- public void setSelection(Processor selection) {
- this.selection = selection;
- }
-
- @SuppressWarnings("serial")
- private static class IntermediateException extends Exception {
- IntermediateException(String msg, Throwable cause) {
- super(msg, cause);
- }
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-component/blob/b7b61e71/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/ReplaceByComponentMenuAction.java
----------------------------------------------------------------------
diff --git a/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/ReplaceByComponentMenuAction.java b/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/ReplaceByComponentMenuAction.java
deleted file mode 100644
index 470ad40..0000000
--- a/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/ReplaceByComponentMenuAction.java
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
-* 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 io.github.taverna_extras.component.ui.menu;
-
-import java.net.URI;
-
-import javax.swing.Action;
-
-import io.github.taverna_extras.component.api.ComponentFactory;
-import io.github.taverna_extras.component.ui.preference.ComponentPreference;
-import io.github.taverna_extras.component.ui.serviceprovider.ComponentServiceIcon;
-
-import org.apache.taverna.scufl2.api.core.Processor;
-import org.apache.taverna.ui.menu.AbstractContextualMenuAction;
-import org.apache.taverna.workbench.edits.EditManager;
-import org.apache.taverna.workbench.selection.SelectionManager;
-
-/**
- * @author alanrw
- */
-public class ReplaceByComponentMenuAction extends AbstractContextualMenuAction {
- private static final URI configureSection = URI
- .create("http://taverna.sf.net/2009/contextMenu/configure");
-
- private ComponentPreference preferences;
- private EditManager editManager;
- private SelectionManager selectionManager;
- private ComponentFactory factory;
- private ComponentServiceIcon icon;
-
- public ReplaceByComponentMenuAction() {
- super(configureSection, 75);
- }
-
- public void setPreferences(ComponentPreference preferences) {
- this.preferences = preferences;
- }
-
- public void setEditManager(EditManager editManager) {
- this.editManager = editManager;
- }
-
- public void setSelectionManager(SelectionManager selectionManager) {
- this.selectionManager = selectionManager;
- }
-
- public void setComponentFactory(ComponentFactory factory) {
- this.factory = factory;
- }
-
- public void setIcon(ComponentServiceIcon icon) {
- this.icon = icon;
- }
-
- @Override
- public boolean isEnabled() {
- Object selection = getContextualSelection().getSelection();
- if (!super.isEnabled())
- return false;
- return (selection instanceof Processor);
- }
-
- @Override
- protected Action createAction() {
- ReplaceByComponentAction action = new ReplaceByComponentAction(
- preferences, factory, editManager, selectionManager, icon);
- action.setSelection((Processor) getContextualSelection().getSelection());
- return action;
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-component/blob/b7b61e71/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/component/AbstractComponentMenuAction.java
----------------------------------------------------------------------
diff --git a/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/component/AbstractComponentMenuAction.java b/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/component/AbstractComponentMenuAction.java
deleted file mode 100644
index 671e190..0000000
--- a/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/component/AbstractComponentMenuAction.java
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
-* 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 io.github.taverna_extras.component.ui.menu.component;
-
-import static io.github.taverna_extras.component.ui.menu.component.ComponentMenuSection.COMPONENT_SECTION;
-
-import java.net.URI;
-import org.apache.taverna.ui.menu.AbstractMenuAction;
-
-abstract class AbstractComponentMenuAction extends AbstractMenuAction {
- public AbstractComponentMenuAction(int positionHint, URI id) {
- super(COMPONENT_SECTION, positionHint, id);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-component/blob/b7b61e71/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/component/ComponentCloseAction.java
----------------------------------------------------------------------
diff --git a/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/component/ComponentCloseAction.java b/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/component/ComponentCloseAction.java
deleted file mode 100644
index da22a60..0000000
--- a/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/component/ComponentCloseAction.java
+++ /dev/null
@@ -1,73 +0,0 @@
-/*
-* 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 io.github.taverna_extras.component.ui.menu.component;
-
-import static org.apache.log4j.Logger.getLogger;
-
-import java.awt.event.ActionEvent;
-
-import javax.swing.AbstractAction;
-import javax.swing.Action;
-
-import org.apache.log4j.Logger;
-import io.github.taverna_extras.component.ui.serviceprovider.ComponentServiceIcon;
-import io.github.taverna_extras.component.ui.util.Utils;
-import org.apache.taverna.lang.observer.Observable;
-import org.apache.taverna.lang.observer.Observer;
-import org.apache.taverna.workbench.file.FileManager;
-import org.apache.taverna.workbench.file.events.FileManagerEvent;
-
-/**
- * @author alanrw
- */
-public class ComponentCloseAction extends AbstractAction implements
- Observer<FileManagerEvent> {
- private static final long serialVersionUID = -153986599735293879L;
- private static final String CLOSE_COMPONENT = "Close component";
- @SuppressWarnings("unused")
- private static Logger logger = getLogger(ComponentCloseAction.class);
-
- private Action closeAction;
- private final Utils utils;
-
- public ComponentCloseAction(Action closeWorkflowAction, FileManager fm,
- ComponentServiceIcon icon, Utils utils) {
- super(CLOSE_COMPONENT, icon.getIcon());
- closeAction = closeWorkflowAction;
- this.utils = utils;
- fm.addObserver(this);
- }
-
- @Override
- public void actionPerformed(ActionEvent arg0) {
- closeAction.actionPerformed(arg0);
- }
-
- @Override
- public boolean isEnabled() {
- return utils.currentDataflowIsComponent();
- }
-
- @Override
- public void notify(Observable<FileManagerEvent> sender,
- FileManagerEvent message) throws Exception {
- setEnabled(utils.currentDataflowIsComponent());
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-component/blob/b7b61e71/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/component/ComponentCloseMenuAction.java
----------------------------------------------------------------------
diff --git a/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/component/ComponentCloseMenuAction.java b/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/component/ComponentCloseMenuAction.java
deleted file mode 100644
index 6c40a5f..0000000
--- a/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/component/ComponentCloseMenuAction.java
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
-* 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 io.github.taverna_extras.component.ui.menu.component;
-
-import java.net.URI;
-
-import javax.swing.Action;
-
-import io.github.taverna_extras.component.ui.serviceprovider.ComponentServiceIcon;
-import io.github.taverna_extras.component.ui.util.Utils;
-import org.apache.taverna.workbench.file.FileManager;
-
-/**
- * @author alanrw
- */
-public class ComponentCloseMenuAction extends AbstractComponentMenuAction {
- private static final URI CLOSE_COMPONENT_URI = URI
- .create("http://taverna.sf.net/2008/t2workbench/menu#componentClose");
-
- private Action action;
- private FileManager fm;
- private ComponentServiceIcon icon;
- private Utils utils;
-
- public ComponentCloseMenuAction() {
- super(1000, CLOSE_COMPONENT_URI);
- }
-
- public void setCloseWorkflowAction(Action action) {
- this.action = action;
- }
-
- public void setFileManager(FileManager fm) {
- this.fm = fm;
- }
-
- public void setIcon(ComponentServiceIcon icon) {
- this.icon = icon;
- }
-
- public void setUtils(Utils utils) {
- this.utils = utils;
- }
-
- @Override
- protected Action createAction() {
- return new ComponentCloseAction(action, fm, icon, utils);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-component/blob/b7b61e71/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/component/ComponentCopyAction.java
----------------------------------------------------------------------
diff --git a/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/component/ComponentCopyAction.java b/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/component/ComponentCopyAction.java
deleted file mode 100644
index 676a6c9..0000000
--- a/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/component/ComponentCopyAction.java
+++ /dev/null
@@ -1,164 +0,0 @@
-/*
-* 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 io.github.taverna_extras.component.ui.menu.component;
-
-import static java.awt.GridBagConstraints.BOTH;
-import static java.awt.GridBagConstraints.WEST;
-import static javax.swing.JOptionPane.ERROR_MESSAGE;
-import static javax.swing.JOptionPane.OK_CANCEL_OPTION;
-import static javax.swing.JOptionPane.OK_OPTION;
-import static javax.swing.JOptionPane.showConfirmDialog;
-import static javax.swing.JOptionPane.showMessageDialog;
-import static org.apache.log4j.Logger.getLogger;
-
-import java.awt.GridBagConstraints;
-import java.awt.GridBagLayout;
-import java.awt.Insets;
-import java.awt.event.ActionEvent;
-
-import javax.swing.AbstractAction;
-import javax.swing.JPanel;
-import javax.swing.border.TitledBorder;
-
-import org.apache.log4j.Logger;
-import io.github.taverna_extras.component.api.Component;
-import io.github.taverna_extras.component.api.ComponentException;
-import io.github.taverna_extras.component.api.Family;
-import io.github.taverna_extras.component.api.Version;
-import io.github.taverna_extras.component.api.profile.Profile;
-import io.github.taverna_extras.component.ui.panel.ComponentChoiceMessage;
-import io.github.taverna_extras.component.ui.panel.ComponentChooserPanel;
-import io.github.taverna_extras.component.ui.panel.ProfileChoiceMessage;
-import io.github.taverna_extras.component.ui.panel.RegistryAndFamilyChooserPanel;
-import io.github.taverna_extras.component.ui.preference.ComponentPreference;
-import io.github.taverna_extras.component.ui.serviceprovider.ComponentServiceIcon;
-import io.github.taverna_extras.component.ui.serviceprovider.ComponentServiceProviderConfig;
-import io.github.taverna_extras.component.ui.util.Utils;
-import org.apache.taverna.lang.observer.Observable;
-import org.apache.taverna.lang.observer.Observer;
-
-/**
- * @author alanrw
- */
-public class ComponentCopyAction extends AbstractAction {
- private static final long serialVersionUID = -4440978712410081685L;
- private static final Logger logger = getLogger(ComponentCopyAction.class);
- private static final String COPY_COMPONENT = "Copy component...";
-
- private final ComponentPreference prefs;
- private final Utils utils;
-
- public ComponentCopyAction(ComponentPreference pref, ComponentServiceIcon icon, Utils utils) {
- super(COPY_COMPONENT, icon.getIcon());
- this.prefs = pref;
- this.utils = utils;
- }
-
- @Override
- public void actionPerformed(ActionEvent arg0) {
- JPanel overallPanel = new JPanel();
- overallPanel.setLayout(new GridBagLayout());
-
- GridBagConstraints gbc = new GridBagConstraints();
-
- ComponentChooserPanel source = new ComponentChooserPanel(prefs);
- source.setBorder(new TitledBorder("Source component"));
-
- gbc.insets = new Insets(0, 5, 0, 5);
- gbc.gridx = 0;
- gbc.gridy = 0;
- gbc.anchor = WEST;
- gbc.fill = BOTH;
- gbc.gridwidth = 2;
- gbc.weightx = 1;
- overallPanel.add(source, gbc);
-
- final RegistryAndFamilyChooserPanel target = new RegistryAndFamilyChooserPanel(prefs);
- target.setBorder(new TitledBorder("Target family"));
- gbc.gridy++;
- overallPanel.add(target, gbc);
-
- source.addObserver(new Observer<ComponentChoiceMessage>() {
- @Override
- public void notify(Observable<ComponentChoiceMessage> sender,
- ComponentChoiceMessage message) throws Exception {
- Profile componentProfile = null;
- Family componentFamily = message.getComponentFamily();
- if (componentFamily != null)
- componentProfile = componentFamily.getComponentProfile();
- ProfileChoiceMessage profileMessage = new ProfileChoiceMessage(
- componentProfile);
- target.notify(null, profileMessage);
- }
- });
-
- int answer = showConfirmDialog(null, overallPanel, "Copy Component",
- OK_CANCEL_OPTION);
- if (answer == OK_OPTION)
- doCopy(source.getChosenComponent(), target.getChosenFamily());
- }
-
- private void doCopy(Component sourceComponent, Family targetFamily) {
- if (sourceComponent == null) {
- showMessageDialog(null, "Unable to determine source component",
- "Component Copy Problem", ERROR_MESSAGE);
- return;
- } else if (targetFamily == null) {
- showMessageDialog(null, "Unable to determine target family",
- "Component Copy Problem", ERROR_MESSAGE);
- return;
- }
-
- try {
- String componentName = sourceComponent.getName();
- boolean alreadyUsed = targetFamily.getComponent(componentName) != null;
- if (alreadyUsed)
- showMessageDialog(null, componentName + " is already used",
- "Duplicate component name", ERROR_MESSAGE);
- else {
- Version targetVersion = doCopy(sourceComponent, targetFamily,
- componentName);
- try {
- utils.refreshComponentServiceProvider(new ComponentServiceProviderConfig(
- targetVersion.getID()).getConfiguration());
- } catch (Exception e) {
- logger.error(e);
- }
- }
- } catch (ComponentException e) {
- logger.error("failed to copy component", e);
- showMessageDialog(null,
- "Unable to create component: " + e.getMessage(),
- "Component Copy Problem", ERROR_MESSAGE);
- }
- }
-
- private Version doCopy(Component sourceComponent, Family targetFamily,
- String componentName) throws ComponentException {
- return targetFamily
- .createComponentBasedOn(
- componentName,
- sourceComponent.getDescription(),
- sourceComponent
- .getComponentVersionMap()
- .get(sourceComponent.getComponentVersionMap()
- .lastKey()).getImplementation());
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-component/blob/b7b61e71/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/component/ComponentCopyMenuAction.java
----------------------------------------------------------------------
diff --git a/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/component/ComponentCopyMenuAction.java b/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/component/ComponentCopyMenuAction.java
deleted file mode 100644
index 3c6db63..0000000
--- a/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/component/ComponentCopyMenuAction.java
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
-* 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 io.github.taverna_extras.component.ui.menu.component;
-
-import java.net.URI;
-
-import javax.swing.Action;
-
-import io.github.taverna_extras.component.ui.preference.ComponentPreference;
-import io.github.taverna_extras.component.ui.serviceprovider.ComponentServiceIcon;
-import io.github.taverna_extras.component.ui.util.Utils;
-
-/**
- * @author alanrw
- */
-public class ComponentCopyMenuAction extends AbstractComponentMenuAction {
- private static final URI COPY_COMPONENT_URI = URI
- .create("http://taverna.sf.net/2008/t2workbench/menu#componentCopy");
-
- private ComponentPreference prefs;
- private ComponentServiceIcon icon;
- private Utils utils;
-
- public ComponentCopyMenuAction() {
- super(800, COPY_COMPONENT_URI);
- }
-
- public void setIcon(ComponentServiceIcon icon) {
- this.icon = icon;
- }
-
- public void setPreferences(ComponentPreference prefs) {//FIXME beaninject
- this.prefs = prefs;
- }
-
- public void setUtils(Utils utils) {
- this.utils = utils;
- }
-
- @Override
- protected Action createAction() {
- return new ComponentCopyAction(prefs, icon, utils);
- }
-}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-plugin-component/blob/b7b61e71/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/component/ComponentCreatorSupport.java
----------------------------------------------------------------------
diff --git a/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/component/ComponentCreatorSupport.java b/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/component/ComponentCreatorSupport.java
deleted file mode 100644
index ffe26d8..0000000
--- a/taverna-component-activity-ui/src/main/java/org/apache/taverna/component/ui/menu/component/ComponentCreatorSupport.java
+++ /dev/null
@@ -1,257 +0,0 @@
-/*
-* 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 io.github.taverna_extras.component.ui.menu.component;
-
-import static javax.swing.JOptionPane.ERROR_MESSAGE;
-import static javax.swing.JOptionPane.OK_CANCEL_OPTION;
-import static javax.swing.JOptionPane.OK_OPTION;
-import static javax.swing.JOptionPane.showConfirmDialog;
-import static javax.swing.JOptionPane.showMessageDialog;
-import static org.apache.log4j.Logger.getLogger;
-
-import java.io.IOException;
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
-
-import org.apache.log4j.Logger;
-import io.github.taverna_extras.component.api.Component;
-import io.github.taverna_extras.component.api.ComponentException;
-import io.github.taverna_extras.component.api.ComponentFactory;
-import io.github.taverna_extras.component.api.Version;
-import io.github.taverna_extras.component.ui.ComponentActivityConfigurationBean;
-import io.github.taverna_extras.component.ui.panel.RegistryAndFamilyChooserComponentEntryPanel;
-import io.github.taverna_extras.component.ui.preference.ComponentPreference;
-import io.github.taverna_extras.component.ui.serviceprovider.ComponentServiceProviderConfig;
-import io.github.taverna_extras.component.ui.util.Utils;
-
-import org.apache.taverna.scufl2.api.activity.Activity;
-import org.apache.taverna.scufl2.api.container.WorkflowBundle;
-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.InputWorkflowPort;
-import org.apache.taverna.scufl2.api.port.OutputProcessorPort;
-import org.apache.taverna.scufl2.api.port.OutputWorkflowPort;
-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.file.FileManager;
-import org.apache.taverna.workbench.file.FileType;
-import org.apache.taverna.workbench.file.exceptions.SaveException;
-import org.apache.taverna.workbench.selection.SelectionManager;
-import org.apache.taverna.workflow.edits.AddActivityEdit;
-import org.apache.taverna.workflow.edits.AddActivityInputPortMappingEdit;
-import org.apache.taverna.workflow.edits.AddActivityOutputPortMappingEdit;
-import org.apache.taverna.workflow.edits.AddDataLinkEdit;
-import org.apache.taverna.workflow.edits.AddProcessorEdit;
-import org.apache.taverna.workflow.edits.AddWorkflowInputPortEdit;
-import org.apache.taverna.workflow.edits.AddWorkflowOutputPortEdit;
-import org.apache.taverna.workflow.edits.RemoveActivityEdit;
-import org.apache.taverna.workflow.edits.RenameEdit;
-import org.apache.taverna.workflowmodel.processor.activity.NestedDataflow;
-import org.apache.taverna.workflowmodel.utils.Tools;
-
-public class ComponentCreatorSupport {
- private static final Logger logger = getLogger(ComponentCreatorSupport.class);
-
- private ComponentFactory factory;
- private FileManager fm;
- private EditManager em;
- private ComponentPreference prefs;
- private FileType ft;
- private SelectionManager sm;
-
- public void setComponentFactory(ComponentFactory factory) {
- this.factory = factory;
- }
-
- public void setPreferences(ComponentPreference pref) {
- this.prefs = pref;
- }
-
- public void setFileManager(FileManager fm) {
- this.fm = fm;
- }
-
- public void setEditManager(EditManager em) {
- this.em = em;
- }
-
- public void setFileType(FileType ft) {
- this.ft = ft;
- }
-
- public void setSelectionManager(SelectionManager sm) {
- this.sm = sm;
- }
-
- public class CopiedProcessor {
- Processor processor;
- Map<String,Workflow> requiredSubworkflows;
- }
-
- void moveComponentActivityIntoPlace(Activity toReplace, Processor contextProcessor,
- Activity replacingActivity) throws EditException {
- List<Edit<?>> editsToDo = new ArrayList<>();
- for (InputProcessorPort pip : contextProcessor.getInputPorts())
- editsToDo.add(new AddActivityInputPortMappingEdit(toReplace, pip, null/*FIXME*/));
- for (OutputProcessorPort pop : contextProcessor.getOutputPorts())
- editsToDo.add(new AddActivityOutputPortMappingEdit(toReplace, pop, null/*FIXME*/));
- editsToDo.add(new RemoveActivityEdit(contextProcessor, toReplace));
- editsToDo.add(new AddActivityEdit(contextProcessor, replacingActivity));
- em.doDataflowEdit(contextProcessor.getParent().getParent(),
- new CompoundEdit(editsToDo));
- }
-
- void connectNewProcessor(Workflow d, Processor newProcessor)
- throws EditException {
- List<Edit<?>> editsToDo = new ArrayList<>();
-
- for (InputProcessorPort pip : newProcessor.getInputPorts()) {
- InputWorkflowPort dip = new InputWorkflowPort(d, pip.getName());
- // FIXME How to set depth?
- editsToDo.add(new AddWorkflowInputPortEdit(d, dip));
- editsToDo.add(new AddDataLinkEdit(d, new DataLink(d, dip, pip)));
- }
-
- for (OutputProcessorPort pop : newProcessor.getOutputPorts()) {
- OutputWorkflowPort dop = new OutputWorkflowPort(d, pop.getName());
- // TODO How to indicate depth?
- editsToDo.add(new AddWorkflowOutputPortEdit(d, dop));
- editsToDo.add(new AddDataLinkEdit(d, new DataLink(d, pop, dop)));
- }
- em.doDataflowEdit(d.getParent(), new CompoundEdit(editsToDo));
- }
-
- public ComponentActivityConfigurationBean saveWorkflowAsComponent(
- WorkflowBundle d, Version.ID ident) throws SaveException, IOException,
- ComponentException {
- if (ident == null)
- return null;
-
- createInitialComponent(d, ident);
-
- Utils.refreshComponentServiceProvider(new ComponentServiceProviderConfig(
- ident));
- return new ComponentActivityConfigurationBean(ident, factory);
- }
-
- public ComponentActivityConfigurationBean saveWorkflowAsComponent(
- Workflow d, Version.ID ident) throws SaveException, IOException,
- ComponentException {
- WorkflowBundle b = new WorkflowBundle();
- ((Workflow)d.clone()).setParent(b);
- //FIXME also must copy profile parts!
- return saveWorkflowAsComponent(b, ident);
- }
-
- Version.ID getNewComponentIdentification(String defaultName) {
- RegistryAndFamilyChooserComponentEntryPanel panel = new RegistryAndFamilyChooserComponentEntryPanel(prefs);
- panel.setComponentName(defaultName);
- int result = showConfirmDialog(null, panel, "Component location",
- OK_CANCEL_OPTION);
- if (result != OK_OPTION)
- return null;
-
- Version.ID ident = panel.getComponentVersionIdentification();
- if (ident == null) {
- showMessageDialog(null,
- "Not enough information to create component",
- "Component creation problem", ERROR_MESSAGE);
- return null;
- }
-
- try {
- Component existingComponent = factory.getComponent(ident);
- if (existingComponent != null) {
- showMessageDialog(null,
- "Component with this name already exists",
- "Component creation problem", ERROR_MESSAGE);
- return null;
- }
- } catch (ComponentException e) {
- logger.error("failed to search registry", e);
- showMessageDialog(null,
- "Problem searching registry: " + e.getMessage(),
- "Component creation problem", ERROR_MESSAGE);
- return null;
- }
- return ident;
- }
-
- CopiedProcessor copyProcessor(Processor p) throws IOException {
- CopiedProcessor copy = new CopiedProcessor();
- copy.processor = ProcessorXMLSerializer.getInstance().processorToXML(p);
- copy.requiredSubworkflows = new HashMap<>();
- rememberSubworkflows(p, copy);
- return copy;
- }
-
- void rememberSubworkflows(Processor p, CopiedProcessor copy) {
- for (Activity a : p.getActivity(sm.getSelectedProfile()))
- if (a instanceof NestedDataflow) {
- NestedDataflow da = (NestedDataflow) a;
- Workflow df = da.getNestedDataflow();
- if (!copy.requiredSubworkflows.containsKey(df.getIdentifier())) {
- copy.requiredSubworkflows.put(df.getIdentifier(),
- DataflowXMLSerializer.getInstance()
- .serializeDataflow(df));
- for (Processor sp : df.getProcessors())
- rememberSubworkflows(sp, copy);
- }
- }
- }
-
- public Processor pasteProcessor(CopiedProcessor copy, Workflow d)
- throws
- ClassNotFoundException, InstantiationException,
- IllegalAccessException, EditException {
- Processor result = ProcessorXMLDeserializer.getInstance()
- .deserializeProcessor(copy.processor, copy.requiredSubworkflows);
- if (result == null)
- return null;
-
- String newName = Tools.uniqueProcessorName(result.getName(), d);
-
- List<Edit<?>> editList = new ArrayList<>();
- if (!newName.equals(result.getName()))
- editList.add(new RenameEdit<>(result, newName));
- editList.add(new AddProcessorEdit(d, result));
- em.doDataflowEdit(d.getParent(), new CompoundEdit(editList));
-
- return result;
- }
-
- public Version.ID createInitialComponent(WorkflowBundle d, Version.ID ident)
- throws ComponentException {
- try {
- fm.saveDataflow(d, ft, ident, false);
-
- em.doDataflowEdit(d, new RenameEdit<>(d, d.getName()));
- } catch (SaveException | IllegalStateException | EditException e) {
- throw new ComponentException(e);
- }
- return ident;
- }
-}