http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-dataflow-activity-ui/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/gui/ImportWorkflowWizard.java ---------------------------------------------------------------------- diff --git a/taverna-dataflow-activity-ui/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/gui/ImportWorkflowWizard.java b/taverna-dataflow-activity-ui/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/gui/ImportWorkflowWizard.java deleted file mode 100644 index b8ddf1a..0000000 --- a/taverna-dataflow-activity-ui/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/gui/ImportWorkflowWizard.java +++ /dev/null @@ -1,1272 +0,0 @@ -package net.sf.taverna.t2.workbench.file.importworkflow.gui; - -import java.awt.BorderLayout; -import java.awt.Color; -import java.awt.Component; -import java.awt.Container; -import java.awt.Frame; -import java.awt.GridBagConstraints; -import java.awt.GridBagLayout; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.FocusAdapter; -import java.awt.event.FocusEvent; -import java.awt.event.ItemEvent; -import java.awt.event.ItemListener; -import java.io.File; -import java.lang.reflect.InvocationTargetException; -import java.net.MalformedURLException; -import java.net.URL; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import javax.swing.AbstractAction; -import javax.swing.BorderFactory; -import javax.swing.ButtonGroup; -import javax.swing.ButtonModel; -import javax.swing.JButton; -import javax.swing.JComboBox; -import javax.swing.JLabel; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JRadioButton; -import javax.swing.JTextField; -import javax.swing.ProgressMonitor; -import javax.swing.SwingUtilities; - -import net.sf.taverna.t2.activities.dataflow.servicedescriptions.DataflowTemplateService; -import net.sf.taverna.t2.ui.menu.MenuManager; -import net.sf.taverna.t2.workbench.MainWindow; -import net.sf.taverna.t2.workbench.configuration.colour.ColourManager; -import net.sf.taverna.t2.workbench.configuration.workbench.WorkbenchConfiguration; -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.file.DataflowInfo; -import net.sf.taverna.t2.workbench.file.FileManager; -import net.sf.taverna.t2.workbench.file.exceptions.OpenException; -import net.sf.taverna.t2.workbench.file.importworkflow.DataflowMerger; -import net.sf.taverna.t2.workbench.file.importworkflow.MergeException; -import net.sf.taverna.t2.workbench.file.importworkflow.actions.OpenSourceWorkflowAction; -import net.sf.taverna.t2.workbench.helper.HelpEnabledDialog; -import net.sf.taverna.t2.workbench.models.graph.svg.SVGGraphController; -import net.sf.taverna.t2.workbench.selection.SelectionManager; -import net.sf.taverna.t2.workflow.edits.AddChildEdit; -import net.sf.taverna.t2.workflow.edits.AddProcessorEdit; - -import org.apache.batik.swing.JSVGCanvas; -import org.apache.log4j.Logger; - -import uk.org.taverna.scufl2.api.activity.Activity; -import uk.org.taverna.scufl2.api.common.Scufl2Tools; -import uk.org.taverna.scufl2.api.configurations.Configuration; -import uk.org.taverna.scufl2.api.container.WorkflowBundle; -import uk.org.taverna.scufl2.api.core.Processor; -import uk.org.taverna.scufl2.api.core.Workflow; -import uk.org.taverna.scufl2.api.iterationstrategy.CrossProduct; -import uk.org.taverna.scufl2.api.port.InputActivityPort; -import uk.org.taverna.scufl2.api.port.InputProcessorPort; -import uk.org.taverna.scufl2.api.port.InputWorkflowPort; -import uk.org.taverna.scufl2.api.port.OutputActivityPort; -import uk.org.taverna.scufl2.api.port.OutputProcessorPort; -import uk.org.taverna.scufl2.api.port.OutputWorkflowPort; -import uk.org.taverna.scufl2.api.profiles.ProcessorBinding; -import uk.org.taverna.scufl2.api.profiles.ProcessorInputPortBinding; -import uk.org.taverna.scufl2.api.profiles.ProcessorOutputPortBinding; -import uk.org.taverna.scufl2.api.profiles.Profile; - -import com.fasterxml.jackson.databind.node.ObjectNode; - -@SuppressWarnings("serial") -public class ImportWorkflowWizard extends HelpEnabledDialog { - - private static Logger logger = Logger.getLogger(ImportWorkflowWizard.class); - - private Scufl2Tools scufl2Tools = new Scufl2Tools(); - - protected BrowseFileOnClick browseFileOnClick = new BrowseFileOnClick(); - protected JButton buttonBrowse; - protected JComboBox chooseDataflow; - protected DataflowOpenerThread dataflowOpenerThread; - - private WorkflowBundle destinationWorkflowBundle; - private Workflow destinationWorkflow; - private Profile destinationProfile; - private Workflow sourceWorkflow; - - protected JTextField fieldFile; - - protected JTextField fieldUrl; - protected boolean mergeEnabled = true; - protected boolean nestedEnabled = true; - protected JSVGCanvas previewSource = new JSVGCanvas(null, false, false); - protected JSVGCanvas previewDestination = new JSVGCanvas(null, false, false); - protected JTextField prefixField; - protected JRadioButton radioFile; - protected JRadioButton radioNew; - protected JRadioButton radioOpened; - protected JRadioButton radioUrl; - protected ButtonGroup sourceSelection; - protected ActionListener updateChosenListener = new UpdateChosenListener(); - protected Thread updatePreviewsThread; - protected Component sourceSelectionPanel; - protected JLabel prefixLabel; - protected JLabel prefixHelp; -// protected JPanel destinationSelectionPanel; -// protected ButtonGroup destinationSelection; -// protected JRadioButton radioNewDestination; -// protected JRadioButton radioOpenDestination; -// protected JComboBox destinationAlreadyOpen; - protected JPanel introductionPanel; - protected ButtonGroup actionSelection; - protected JRadioButton actionNested; - protected JRadioButton actionMerge; - protected JRadioButton radioCustomSource; - protected JRadioButton radioCustomDestination; - - private final EditManager editManager; - private final FileManager fileManager; - private final MenuManager menuManager; - private final ColourManager colourManager; - private final WorkbenchConfiguration workbenchConfiguration; - private final SelectionManager selectionManager; - - private WorkflowBundle customSourceDataFlow = null; -// private Workflow customDestinationDataflow = null; - private String customSourceName = ""; -// private String customDestinationName = ""; - - private boolean sourceEnabled = true; -// private boolean destinationEnabled = true; - private Activity insertedActivity; - - public ImportWorkflowWizard(Frame parentFrame, EditManager editManager, - FileManager fileManager, MenuManager menuManager, ColourManager colourManager, - WorkbenchConfiguration workbenchConfiguration, SelectionManager selectionManager) { - super(parentFrame, "Import workflow", true, null); - this.selectionManager = selectionManager; - destinationWorkflow = selectionManager.getSelectedWorkflow(); - destinationProfile = selectionManager.getSelectedProfile(); - destinationWorkflowBundle = selectionManager.getSelectedWorkflowBundle(); - - this.editManager = editManager; - this.fileManager = fileManager; - this.menuManager = menuManager; - this.colourManager = colourManager; - this.workbenchConfiguration = workbenchConfiguration; - - setSize(600, 600); - add(makeContentPane(), BorderLayout.CENTER); - // Add some space - add(new JPanel(), BorderLayout.WEST); - add(new JPanel(), BorderLayout.NORTH); - add(new JPanel(), BorderLayout.SOUTH); - add(new JPanel(), BorderLayout.EAST); - findChosenDataflow(this, true); - updateAll(); - } - - public void setMergeEnabled(boolean importEnabled) { - this.mergeEnabled = importEnabled; - updateAll(); - } - - public void setNestedEnabled(boolean nestedEnabled) { - this.nestedEnabled = nestedEnabled; - updateAll(); - } - - /** - * Silly workaround to avoid "Cannot call invokeAndWait from the event dispatcher thread" - * exception. - * - * @param runnable - */ - public static void invokeAndWait(Runnable runnable) { - if (SwingUtilities.isEventDispatchThread()) { - runnable.run(); - return; - } - try { - SwingUtilities.invokeAndWait(runnable); - } catch (InterruptedException ex) { - // logger.warn("Runnable " + runnable + " was interrupted " + runnable, ex); - } catch (InvocationTargetException e) { - logger.warn("Can't invoke " + runnable, e); - } - } - - protected Component makeWorkflowImage() { - JPanel workflowImages = new JPanel(new GridBagLayout()); - GridBagConstraints gbc = new GridBagConstraints(); - gbc.gridy = 0; - gbc.fill = GridBagConstraints.BOTH; - gbc.weighty = 0.1; - - gbc.weightx = 0.1; - workflowImages.add(new JPanel(), gbc);// filler - - gbc.weightx = 0.0; - previewSource.setBackground(workflowImages.getBackground()); - workflowImages.add(previewSource, gbc); - - JLabel arrow = new JLabel("\u2192"); - arrow.setFont(arrow.getFont().deriveFont(48f)); - workflowImages.add(arrow, gbc); - - previewDestination.setBackground(workflowImages.getBackground()); - workflowImages.add(previewDestination, gbc); - - gbc.weightx = 0.1; - workflowImages.add(new JPanel(), gbc); - gbc.weightx = 0.0; - - return workflowImages; - } - - protected void updateAll() { - updatePreviews(); // will go in separate thread anyway, do it first - updateHeader(); - updateSourceSection(); -// updateDestinationSection(); - updateFooter(); - } - -// protected void updateDestinationSection() { -// -// radioNewDestination.setVisible(false); -// -// radioCustomDestination.setText(customDestinationName); -// radioCustomDestination.setVisible(customDestinationDataflow != null); -// -// // radioNewDestination.setVisible(nestedEnabled); -// // radioNewDestination.setEnabled(actionNested.isSelected()); -// -// destinationSelectionPanel.setVisible(destinationEnabled); -// -// } - - protected synchronized void updatePreviews() { - if (updatePreviewsThread != null && updatePreviewsThread.isAlive()) { - updatePreviewsThread.interrupt(); - } - updatePreviewsThread = new UpdatePreviewsThread(); - updatePreviewsThread.start(); - } - - protected void updateDestinationPreview() { - updateWorkflowGraphic(previewDestination, destinationWorkflow, destinationProfile); - } - - protected void updateSourcePreview() { - Profile sourceProfile = null; - if (sourceWorkflow != null) { - sourceProfile = sourceWorkflow.getParent().getMainProfile(); - } - updateWorkflowGraphic(previewSource, sourceWorkflow, sourceProfile); - } - - protected void updateFooter() { - prefixField.setVisible(mergeEnabled); - prefixLabel.setVisible(mergeEnabled); - prefixHelp.setVisible(mergeEnabled); - - prefixField.setEnabled(actionMerge.isSelected()); - prefixLabel.setEnabled(actionMerge.isSelected()); - prefixHelp.setEnabled(actionMerge.isSelected()); - if (actionMerge.isSelected()) { - prefixHelp.setForeground(prefixLabel.getForeground()); - } else { - // Work around - // http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4303706 - // and assume gray is the 'disabled' colour in our Look n Feel - prefixHelp.setForeground(Color.gray); - } - - } - - protected void updateHeader() { - makeIntroductionPanel(); - } - - protected void updateSourceSection() { - radioCustomSource.setText(customSourceName); - radioCustomSource.setVisible(customSourceDataFlow != null); - - radioNew.setVisible(nestedEnabled); - radioNew.setEnabled(actionNested.isSelected()); - - if (actionNested.isSelected() && sourceSelection.getSelection() == null) { - // Preselect the new workflow - radioNew.setSelected(true); - } - - sourceSelectionPanel.setVisible(sourceEnabled); - } - - /** - * Create a PNG image of the workflow and place inside an ImageIcon - * - * @param dataflow - * @return - * @throws InvocationTargetException - * @throws InterruptedException - */ - protected void updateWorkflowGraphic(final JSVGCanvas svgCanvas, final Workflow workflow, final Profile profile) { - try { - SwingUtilities.invokeAndWait(new Runnable() { - public void run() { - // Set it to blank while reloading - svgCanvas.setSVGDocument(null); - if (workflow != null) { - SVGGraphController currentWfGraphController = new SVGGraphController( - workflow, profile, false, svgCanvas, - editManager, menuManager, colourManager, workbenchConfiguration); - } - } - }); - } catch (InterruptedException e) { - // logger.error(e); - } catch (InvocationTargetException e) { - // logger.error(e); - } - } - - /** - * Open the selected source and destination workflows. If background is true, this method will - * return immediately while a {@link DataflowOpenerThread} performs the updates. If a - * DataflowOpenerThread is already running, it will be interrupted and stopped. - * - * @param parentComponent - * The parent component for showing dialogues - * @param background - * If true, will run in separate thread. - * @return <code>false</code> if running in the background, or if a dialogue was shown and the - * operation is aborted by the user, or <code>true</code> if not running in the - * background and the method completed without user interruption. - */ - protected synchronized boolean findChosenDataflow(Component parentComponent, boolean background) { - if (dataflowOpenerThread != null && dataflowOpenerThread.isAlive()) { - if (background) { - // We've changed our mind - dataflowOpenerThread.interrupt(); - } else { - // We'll let it finish, we don't need to do it again - try { - dataflowOpenerThread.join(); - } catch (InterruptedException e) { - Thread.currentThread().interrupt(); - } - return !dataflowOpenerThread.shownWarning; - } - } - dataflowOpenerThread = new DataflowOpenerThread(parentComponent, background); - - if (background) { - dataflowOpenerThread.start(); - return false; - } else { - dataflowOpenerThread.run(); - return !dataflowOpenerThread.shownWarning; - } - - } - - protected Container makeContentPane() { - JPanel panel = new JPanel(new GridBagLayout()); - GridBagConstraints gbc = new GridBagConstraints(); - - gbc.ipadx = 5; - gbc.ipady = 5; - - gbc.gridx = 0; - gbc.weightx = 0.1; - gbc.fill = GridBagConstraints.BOTH; - - introductionPanel = makeIntroductionPanel(); - panel.add(introductionPanel, gbc); - - sourceSelectionPanel = makeSourceSelectionPanel(); - panel.add(sourceSelectionPanel, gbc); - -// destinationSelectionPanel = makeDestinationSelectionPanel(); -// panel.add(destinationSelectionPanel, gbc); - - gbc.weighty = 0.1; - panel.add(makeImportStylePanel(), gbc); - - return panel; - } - - protected JPanel makeIntroductionPanel() { - if (introductionPanel == null) { - introductionPanel = new JPanel(new GridBagLayout()); - } else { - introductionPanel.removeAll(); - } - boolean bothEnabled = mergeEnabled && nestedEnabled; - if (bothEnabled) { - introductionPanel.setBorder(BorderFactory.createTitledBorder("Import method")); - } else { - introductionPanel.setBorder(BorderFactory.createEmptyBorder()); - } - GridBagConstraints gbc = new GridBagConstraints(); - gbc.gridx = 0; - // gbc.gridy = 0; - gbc.weightx = 0.1; - gbc.fill = GridBagConstraints.BOTH; - gbc.anchor = GridBagConstraints.FIRST_LINE_START; - - StringBuilder nestedHelp = new StringBuilder(); - nestedHelp.append("<html><small>"); - nestedHelp.append("Add a <strong>nested workflow</strong> "); - nestedHelp.append("into the "); - nestedHelp.append("destination workflow as a single service. "); - nestedHelp.append("The nested workflow "); - nestedHelp.append("can be <em>edited separately</em>, but is shown "); - nestedHelp.append("expanded in the diagram of the parent "); - nestedHelp.append("workflow. In the parent workflow you can "); - nestedHelp.append("connect to the input and output ports of the nested "); - nestedHelp.append("workflow. "); - nestedHelp.append("</small></html>"); - - StringBuilder mergeHelp = new StringBuilder(); - mergeHelp.append("<html><small>"); - mergeHelp.append("<strong>Merge</strong> a workflow "); - mergeHelp.append("by copying all services, ports and links "); - mergeHelp.append("directly into the destination workflow. This can be "); - mergeHelp.append("useful for merging smaller workflow fragments. For "); - mergeHelp.append("inclusion of larger workflows you might find using "); - mergeHelp.append("<em>nested workflows</em> more beneficial."); - mergeHelp.append("</small></html>"); - - actionSelection = new ButtonGroup(); - actionNested = new JRadioButton(nestedHelp.toString()); - ActionListener updateListener = new ActionListener() { - public void actionPerformed(ActionEvent e) { - updateSourceSection(); -// updateDestinationSection(); - updateFooter(); - } - }; - actionNested.addActionListener(updateListener); - actionSelection.add(actionNested); - - actionMerge = new JRadioButton(mergeHelp.toString()); - actionMerge.addActionListener(updateListener); - actionSelection.add(actionMerge); - - if (bothEnabled) { - introductionPanel.add(actionNested, gbc); - introductionPanel.add(actionMerge, gbc); - actionNested.setSelected(true); - } else if (nestedEnabled) { - introductionPanel.add(new JLabel(nestedHelp.toString()), gbc); - actionNested.setSelected(true); - } else if (mergeEnabled) { - introductionPanel.add(new JLabel(mergeHelp.toString()), gbc); - actionMerge.setSelected(true); - } - return introductionPanel; - } - -// protected JPanel makeDestinationSelectionPanel() { -// JPanel j = new JPanel(new GridBagLayout()); -// j.setBorder(BorderFactory.createTitledBorder("Workflow destination")); -// -// GridBagConstraints gbc = new GridBagConstraints(); -// gbc.gridx = 0; -// gbc.gridy = 0; -// gbc.fill = GridBagConstraints.BOTH; -// -// destinationSelection = new ButtonGroup(); -// radioNewDestination = new JRadioButton("New workflow"); -// gbc.gridy = 0; -// j.add(radioNewDestination, gbc); -// destinationSelection.add(radioNewDestination); -// radioNewDestination.addActionListener(updateChosenListener); -// -// radioOpenDestination = new JRadioButton("Already opened workflow"); -// gbc.gridy = 2; -// j.add(radioOpenDestination, gbc); -// destinationSelection.add(radioOpenDestination); -// radioOpenDestination.addActionListener(updateChosenListener); -// gbc.weightx = 0.1; -// gbc.gridx = 1; -// destinationAlreadyOpen = makeSelectOpenWorkflowComboBox(true); -// j.add(destinationAlreadyOpen, gbc); -// -// radioCustomDestination = new JRadioButton(customDestinationName); -// radioCustomDestination.setVisible(customDestinationName != null); -// gbc.gridx = 0; -// gbc.gridy = 3; -// gbc.gridwidth = 2; -// j.add(radioCustomDestination, gbc); -// destinationSelection.add(radioCustomDestination); -// radioCustomDestination.addActionListener(updateChosenListener); -// gbc.gridwidth = 1; -// -// radioOpenDestination.setSelected(true); -// return j; -// } - - protected Component makeImportStylePanel() { - JPanel j = new JPanel(new GridBagLayout()); - GridBagConstraints gbc = new GridBagConstraints(); - gbc.gridx = 0; - gbc.gridy = 0; - gbc.fill = GridBagConstraints.BOTH; - - j.setBorder(BorderFactory.createTitledBorder("Import")); - - prefixLabel = new JLabel("Prefix"); - j.add(prefixLabel, gbc); - gbc.weightx = 0.1; - gbc.gridx = 1; - - prefixField = new JTextField(10); - prefixLabel.setLabelFor(prefixField); - j.add(prefixField, gbc); - - gbc.gridx = 0; - gbc.gridy = 1; - gbc.gridwidth = 2; - - prefixHelp = new JLabel( - "<html><small>Optional prefix to be prepended to the name of the " - + "inserted services and workflow ports. Even if no prefix is given, duplicate names will be " - + "resolved by adding numbers, for instance <code>my_service_2</code> if <code>my_service</code> already " - + "existed." + "</small></html>"); - prefixHelp.setLabelFor(prefixField); - j.add(prefixHelp, gbc); - - gbc.gridy = 2; - gbc.weightx = 0.1; - gbc.weighty = 0.1; - - j.add(makeWorkflowImage(), gbc); - - gbc.gridy = 3; - gbc.weighty = 0.0; - j.add(new JPanel(), gbc); - - gbc.gridy = 4; - gbc.fill = GridBagConstraints.NONE; - JButton comp = new JButton(new ImportWorkflowAction()); - j.add(comp, gbc); - return j; - - } - - protected Component makeSelectFile() { - JPanel j = new JPanel(new GridBagLayout()); - j.setBorder(BorderFactory.createEtchedBorder()); - - GridBagConstraints gbc = new GridBagConstraints(); - gbc.gridx = 0; - gbc.gridy = 0; - gbc.fill = GridBagConstraints.BOTH; - gbc.weightx = 0.1; - - fieldFile = new JTextField(20); - fieldFile.setEditable(false); - fieldFile.addFocusListener(new FocusAdapter() { - public void focusGained(FocusEvent e) { - radioFile.setSelected(true); - } - - @Override - public void focusLost(FocusEvent e) { - findChosenDataflow(e.getComponent(), true); - } - }); - j.add(fieldFile, gbc); - radioFile.addItemListener(new ItemListener() { - - public void itemStateChanged(ItemEvent e) { - if (e.getStateChange() == ItemEvent.SELECTED) { - browseFileOnClick.checkEmptyFile(); - } - } - }); - - gbc.gridx = 1; - gbc.weightx = 0.0; - gbc.fill = GridBagConstraints.NONE; - buttonBrowse = new JButton(new OpenSourceWorkflowAction(fileManager) { - @Override - public void openWorkflows(Component parentComponent, File[] files) { - if (files.length == 0) { - radioFile.setSelected(false); - fieldFile.setText(""); - radioFile.requestFocus(); - return; - } - fieldFile.setText(files[0].getPath()); - if (!radioFile.isSelected()) { - radioFile.setSelected(true); - } - findChosenDataflow(parentComponent, true); - } - }); - buttonBrowse.setText("Browse"); - j.add(buttonBrowse, gbc); - - // This just duplicates things - we already have actions on - // the radioFile and fieldFile that will handle the events - // radioFile.addActionListener(browseFileOnClick); - // fieldFile.addActionListener(browseFileOnClick); - return j; - } - - protected JComboBox makeSelectOpenWorkflowComboBox(boolean selectCurrent) { - List<DataflowSelection> openDataflows = new ArrayList<DataflowSelection>(); - DataflowSelection current = null; - for (WorkflowBundle df : fileManager.getOpenDataflows()) { - String name = df.getMainWorkflow().getName(); - boolean isCurrent = df.equals(fileManager.getCurrentDataflow()); - if (isCurrent) { - // Wrapping as HTML causes weird drop-down box under MAC, so - // we just use normal text - // name = "<html><body>" + name - // + " <i>(current)</i></body></html>"; - name = name + " (current)"; - } - DataflowSelection selection = new DataflowSelection(df, name); - openDataflows.add(selection); - if (isCurrent) { - current = selection; - } - } - JComboBox chooseDataflow = new JComboBox(openDataflows.toArray()); - if (selectCurrent) { - chooseDataflow.setSelectedItem(current); - } - chooseDataflow.addActionListener(updateChosenListener); - return chooseDataflow; - - } - - protected Component makeSourceSelectionPanel() { - JPanel j = new JPanel(new GridBagLayout()); - j.setBorder(BorderFactory.createTitledBorder("Workflow source")); - - GridBagConstraints gbc = new GridBagConstraints(); - gbc.gridx = 0; - gbc.gridy = 0; - gbc.fill = GridBagConstraints.BOTH; - - sourceSelection = new ButtonGroup(); - radioNew = new JRadioButton("New workflow"); - gbc.gridy = 0; - j.add(radioNew, gbc); - sourceSelection.add(radioNew); - - radioNew.addActionListener(updateChosenListener); - - radioFile = new JRadioButton("Import from file"); - gbc.gridy = 1; - j.add(radioFile, gbc); - sourceSelection.add(radioFile); - radioFile.addActionListener(updateChosenListener); - - radioUrl = new JRadioButton("Import from URL"); - gbc.gridy = 2; - j.add(radioUrl, gbc); - sourceSelection.add(radioUrl); - radioUrl.addActionListener(updateChosenListener); - - radioOpened = new JRadioButton("Already opened workflow"); - gbc.gridy = 3; - j.add(radioOpened, gbc); - sourceSelection.add(radioOpened); - radioOpened.addActionListener(updateChosenListener); - - radioCustomSource = new JRadioButton(customSourceName); - radioCustomSource.setVisible(customSourceDataFlow != null); - gbc.gridy = 4; - gbc.gridwidth = 2; - j.add(radioCustomSource, gbc); - sourceSelection.add(radioCustomSource); - radioCustomSource.addActionListener(updateChosenListener); - gbc.gridwidth = 1; - - gbc.gridx = 1; - gbc.gridy = 1; - gbc.weightx = 0.1; - j.add(makeSelectFile(), gbc); - - gbc.gridy = 2; - fieldUrl = new JTextField(20); - j.add(fieldUrl, gbc); - fieldUrl.addFocusListener(new FocusAdapter() { - @Override - public void focusGained(FocusEvent e) { - radioUrl.setSelected(true); - } - - @Override - public void focusLost(FocusEvent e) { - findChosenDataflow(e.getComponent(), true); - } - }); - - gbc.gridy = 3; - chooseDataflow = makeSelectOpenWorkflowComboBox(false); - chooseDataflow.addFocusListener(new FocusAdapter() { - @Override - public void focusGained(FocusEvent e) { - radioOpened.setSelected(true); - } - }); - j.add(chooseDataflow, gbc); - - return j; - } - - protected Edit<?> makeInsertNestedWorkflowEdit(Workflow nestedFlow) { - Processor processor = new Processor(); - processor.setName("nestedWorkflow"); - - CrossProduct crossProduct = new CrossProduct(); - crossProduct.setParent(processor.getIterationStrategyStack()); - - Activity activity = new Activity(); - activity.setType(DataflowTemplateService.ACTIVITY_TYPE); - Configuration configuration = new Configuration(); - configuration.setType(DataflowTemplateService.ACTIVITY_TYPE.resolve("#Config")); - destinationWorkflowBundle.getWorkflows().addWithUniqueName(nestedFlow); - ((ObjectNode) configuration.getJson()).put("nestedWorkflow", nestedFlow.getName()); - destinationWorkflowBundle.getWorkflows().remove(nestedFlow); - configuration.setConfigures(activity); - - ProcessorBinding processorBinding = new ProcessorBinding(); - processorBinding.setBoundProcessor(processor); - processorBinding.setBoundActivity(activity); - - for (InputWorkflowPort workflowPort : nestedFlow.getInputPorts()) { - InputActivityPort activityPort = new InputActivityPort(activity, workflowPort.getName()); - activityPort.setDepth(workflowPort.getDepth()); - // create processor port - InputProcessorPort processorPort = new InputProcessorPort(processor, activityPort.getName()); - processorPort.setDepth(activityPort.getDepth()); - // add a new port binding - new ProcessorInputPortBinding(processorBinding, processorPort, activityPort); - } - for (OutputWorkflowPort workflowPort : nestedFlow.getOutputPorts()) { - OutputActivityPort activityPort = new OutputActivityPort(activity, workflowPort.getName()); - // TODO calculate output depth - activityPort.setDepth(0); - activityPort.setGranularDepth(0); - // create processor port - OutputProcessorPort processorPort = new OutputProcessorPort(processor, activityPort.getName()); - processorPort.setDepth(activityPort.getDepth()); - processorPort.setGranularDepth(activityPort.getGranularDepth()); - // add a new port binding - new ProcessorOutputPortBinding(processorBinding, activityPort, processorPort); - } - - List<Edit<?>> editList = new ArrayList<Edit<?>>(); - editList.add(new AddChildEdit<Profile>(destinationProfile, activity)); - editList.add(new AddChildEdit<Profile>(destinationProfile, configuration)); - editList.add(new AddChildEdit<Profile>(destinationProfile, processorBinding)); - editList.add(new AddProcessorEdit(destinationWorkflow, processor)); - - editList.add(makeInsertWorkflowEdit(nestedFlow, nestedFlow.getParent().getMainProfile())); - - return new CompoundEdit(editList); - } - - protected Edit<?> makeInsertWorkflowEdit(Workflow nestedFlow, Profile profile) { - return makeInsertWorkflowEdit(nestedFlow, profile, new HashSet<>()); - } - - protected Edit<?> makeInsertWorkflowEdit(Workflow nestedFlow, Profile profile, Set<Object> seen) { - List<Edit<?>> editList = new ArrayList<Edit<?>>(); - // add the nested workflow to the workflow bundle - editList.add(new AddChildEdit<WorkflowBundle>(destinationWorkflowBundle, nestedFlow)); - seen.add(nestedFlow); - for (Processor processor : nestedFlow.getProcessors()) { - // add processor bindings to the profile - List<ProcessorBinding> processorBindings = scufl2Tools.processorBindingsForProcessor(processor, profile); - for (ProcessorBinding processorBinding : processorBindings) { - editList.add(new AddChildEdit<Profile>(destinationProfile, processorBinding)); - // add activity to the profile - Activity activity = processorBinding.getBoundActivity(); - if (!seen.contains(activity)) { - editList.add(new AddChildEdit<Profile>(destinationProfile, activity)); - // add activity configurations to the profile - for (Configuration configuration : scufl2Tools.configurationsFor(activity, profile)) { - editList.add(new AddChildEdit<Profile>(destinationProfile, configuration)); - } - seen.add(activity); - } - } - // add processor configurations to the profile - List<Configuration> configurations = scufl2Tools.configurationsFor(processor, profile); - for (Configuration configuration : configurations) { - editList.add(new AddChildEdit<Profile>(destinationProfile, configuration)); - } - - for (Workflow workflow : scufl2Tools.nestedWorkflowsForProcessor(processor, profile)) { - if (!seen.contains(workflow)) { - // recursively add nested workflows - editList.add(makeInsertWorkflowEdit(workflow, profile, seen)); - } - } - } - return new CompoundEdit(editList); - } - -// protected Activity getInsertedActivity() { -// return insertedActivity; -// } - - protected class ImportWorkflowAction extends AbstractAction implements Runnable { - private static final String VALID_NAME_REGEX = "[\\p{L}\\p{Digit}_.]+"; - private Component parentComponent; - private ProgressMonitor progressMonitor; - - protected ImportWorkflowAction() { - super("Import workflow"); - } - - public void actionPerformed(ActionEvent e) { - /* - * if (e.getSource() instanceof Component) { parentComponent = (Component) - * e.getSource(); } else { parentComponent = null; } - */ - parentComponent = MainWindow.getMainWindow(); - Thread t = new Thread(this, "Import workflow"); - progressMonitor = new ProgressMonitor(parentComponent, "Importing workflow", "", 0, 100); - progressMonitor.setMillisToDecideToPopup(200); - progressMonitor.setProgress(5); - t.start(); - setVisible(false); - } - - protected void nested() { - if (progressMonitor.isCanceled()) { - return; - } - progressMonitor.setProgress(15); - selectionManager.setSelectedWorkflowBundle(destinationWorkflowBundle); - if (progressMonitor.isCanceled()) { - return; - } - - progressMonitor.setNote("Copying source workflow"); - Workflow nestedFlow; - try { - nestedFlow = DataflowMerger.copyWorkflow(sourceWorkflow); - } catch (Exception ex) { - logger.warn("Could not copy nested workflow", ex); - progressMonitor.setProgress(100); - JOptionPane.showMessageDialog(parentComponent, - "An error occured while copying workflow:\n" + ex.getLocalizedMessage(), - "Could not copy nested workflow", JOptionPane.WARNING_MESSAGE); - return; - } - if (progressMonitor.isCanceled()) { - return; - } - - progressMonitor.setNote("Creating nested workflow"); - progressMonitor.setProgress(45); - - Edit<?> edit = makeInsertNestedWorkflowEdit(nestedFlow); - if (progressMonitor.isCanceled()) { - return; - } - - progressMonitor.setNote("Inserting nested workflow"); - progressMonitor.setProgress(65); - - try { - editManager.doDataflowEdit(destinationWorkflowBundle, edit); - } catch (EditException e) { - progressMonitor.setProgress(100); - logger.warn("Could not import nested workflow", e); - JOptionPane.showMessageDialog(parentComponent, - "An error occured while importing workflow:\n" + e.getLocalizedMessage(), - "Could not import workflows", JOptionPane.WARNING_MESSAGE); - return; - } - - if (radioNew.isSelected()) { - progressMonitor.setNote("Opening new nested workflow for editing"); - progressMonitor.setProgress(90); - selectionManager.setSelectedWorkflow(nestedFlow); - } - progressMonitor.setProgress(100); - } - - protected void merge() { - progressMonitor.setProgress(10); - DataflowMerger merger = new DataflowMerger(destinationWorkflow); - progressMonitor.setProgress(25); - progressMonitor.setNote("Planning workflow merging"); - - String prefix = prefixField.getText(); - if (!prefix.equals("")) { - if (!prefix.matches("[_.]$")) { - prefix = prefix + "_"; - } - if (!prefix.matches(VALID_NAME_REGEX)) { - progressMonitor.setProgress(100); - final String wrongPrefix = prefix; - SwingUtilities.invokeLater(new Runnable() { - public void run() { - JOptionPane.showMessageDialog(parentComponent, "The merge prefix '" - + wrongPrefix + "' is not valid. Try " - + "using only letters, numbers, " + "underscore and dot.", - "Invalid merge prefix", JOptionPane.ERROR_MESSAGE); - prefixField.requestFocus(); - ImportWorkflowWizard.this.setVisible(true); - } - }); - return; - } - } - - CompoundEdit mergeEdit; - try { - mergeEdit = merger.getMergeEdit(ImportWorkflowWizard.this.sourceWorkflow, prefix); - } catch (MergeException e1) { - progressMonitor.setProgress(100); - logger.warn("Could not merge workflow", e1); - JOptionPane.showMessageDialog(parentComponent, - "An error occured while merging workflows:\n" + e1.getLocalizedMessage(), - "Could not merge workflows", JOptionPane.WARNING_MESSAGE); - return; - } - - progressMonitor.setProgress(55); - selectionManager.setSelectedWorkflowBundle(destinationWorkflowBundle); - - progressMonitor.setNote("Merging workflows"); - progressMonitor.setProgress(75); - - if (progressMonitor.isCanceled()) { - return; - } - - try { - editManager.doDataflowEdit(destinationWorkflowBundle, mergeEdit); - } catch (EditException e1) { - progressMonitor.setProgress(100); - JOptionPane.showMessageDialog(parentComponent, - "An error occured while merging workflows:\n" + e1.getLocalizedMessage(), - "Could not merge workflows", JOptionPane.WARNING_MESSAGE); - return; - } - progressMonitor.setProgress(100); - - } - - public void run() { - boolean completed = findChosenDataflow(parentComponent, false); - if (!completed) { - return; - } - if (actionMerge.isSelected()) { - merge(); - } else if (actionNested.isSelected()) { - nested(); - } - } - } - - protected class UpdatePreviewsThread extends Thread { - protected UpdatePreviewsThread() { - super("Updating destination previews"); - } - - public void run() { - if (Thread.interrupted()) { - return; - } - updateSourcePreview(); - - if (Thread.interrupted()) { - return; - } - updateDestinationPreview(); - } - } - - protected class BrowseFileOnClick implements ActionListener { - public void actionPerformed(ActionEvent e) { - checkEmptyFile(); - } - - public void checkEmptyFile() { - if (radioFile.isSelected() && fieldFile.getText().equals("")) { - // On first label click pop up Browse dialogue. - buttonBrowse.doClick(); - } - } - } - - protected class DataflowOpenerThread extends Thread { - private final boolean background; - private final Component parentComponent; - private boolean shouldStop = false; - private boolean shownWarning = false; - - protected DataflowOpenerThread(Component parentComponent, boolean background) { - super("Inspecting selected workflow"); - this.parentComponent = parentComponent; - this.background = background; - } - - @Override - public void interrupt() { - this.shouldStop = true; - super.interrupt(); - } - - public void run() { - updateSource(); -// updateDestination(); - } - -// public void updateDestination() { -// ButtonModel selection = destinationSelection.getSelection(); -// Workflow chosenDataflow = null; -// if (selection == null) { -// chosenDataflow = null; -// } else if (selection.equals(radioNewDestination.getModel())) { -// chosenDataflow = new Workflow(); -// } else if (selection.equals(radioOpenDestination.getModel())) { -// DataflowSelection chosen = (DataflowSelection) destinationAlreadyOpen -// .getSelectedItem(); -// chosenDataflow = chosen.getDataflow(); -// } else if (selection.equals(radioCustomDestination.getModel())) { -// chosenDataflow = customDestinationDataflow; -// } else { -// logger.error("Unknown selection " + selection); -// } -// -// if (chosenDataflow == null) { -// if (!background && !shownWarning) { -// shownWarning = true; -// SwingUtilities.invokeLater(new Runnable() { -// public void run() { -// JOptionPane.showMessageDialog(parentComponent, -// "You need to choose a destination workflow", -// "No destination workflow chosen", JOptionPane.ERROR_MESSAGE); -// setVisible(true); -// } -// }); -// return; -// } -// } -// if (checkInterrupted()) { -// return; -// } -// if (chosenDataflow != ImportWorkflowWizard.this.destinationDataflow) { -// updateWorkflowGraphic(previewDestination, chosenDataflow); -// if (checkInterrupted()) { -// return; -// } -// ImportWorkflowWizard.this.destinationDataflow = chosenDataflow; -// } -// -// } - - public void updateSource() { - ButtonModel selection = sourceSelection.getSelection(); - Workflow chosenDataflow = null; - if (selection == null) { - chosenDataflow = null; - } else if (selection.equals(radioNew.getModel())) { - WorkflowBundle workflowBundle = new WorkflowBundle(); - workflowBundle.setMainWorkflow(new Workflow()); - workflowBundle.getMainWorkflow().setName(fileManager.getDefaultWorkflowName()); - workflowBundle.setMainProfile(new Profile()); - scufl2Tools.setParents(workflowBundle); - chosenDataflow = workflowBundle.getMainWorkflow(); - } else if (selection.equals(radioFile.getModel())) { - final String filePath = fieldFile.getText(); - try { - DataflowInfo opened = fileManager - .openDataflowSilently(null, new File(filePath)); - if (checkInterrupted()) { - return; - } - chosenDataflow = opened.getDataflow().getMainWorkflow(); - } catch (final OpenException e1) { - if (!background && !shownWarning) { - shownWarning = true; - logger.warn("Could not open workflow for merging: " + filePath, e1); - SwingUtilities.invokeLater(new Runnable() { - public void run() { - radioFile.requestFocus(); - JOptionPane.showMessageDialog(parentComponent, - "An error occured while trying to open " + filePath + "\n" - + e1.getMessage(), "Could not open workflow", - JOptionPane.WARNING_MESSAGE); - setVisible(true); - } - }); - } - } - } else if (selection.equals(radioUrl.getModel())) { - final String url = fieldUrl.getText(); - try { - DataflowInfo opened = fileManager.openDataflowSilently(null, new URL(url)); - if (checkInterrupted()) { - return; - } - chosenDataflow = opened.getDataflow().getMainWorkflow(); - } catch (final OpenException e1) { - if (!background && !shownWarning) { - logger.warn("Could not open source workflow: " + url, e1); - shownWarning = true; - SwingUtilities.invokeLater(new Runnable() { - public void run() { - fieldUrl.requestFocus(); - JOptionPane.showMessageDialog( - parentComponent, - "An error occured while trying to open " + url + "\n" - + e1.getMessage(), "Could not open workflow", - JOptionPane.WARNING_MESSAGE); - setVisible(true); - } - }); - - } - if (checkInterrupted()) { - return; - } - } catch (final MalformedURLException e1) { - if (!background && !shownWarning) { - logger.warn("Invalid workflow URL: " + url, e1); - shownWarning = true; - SwingUtilities.invokeLater(new Runnable() { - public void run() { - fieldUrl.requestFocus(); - JOptionPane.showMessageDialog( - parentComponent, - "The workflow location " + url + " is invalid\n" - + e1.getLocalizedMessage(), "Invalid URL", - JOptionPane.ERROR_MESSAGE); - setVisible(true); - } - }); - } - if (checkInterrupted()) { - return; - } - } - } else if (selection.equals(radioOpened.getModel())) { - DataflowSelection chosen = (DataflowSelection) chooseDataflow.getSelectedItem(); - chosenDataflow = chosen.getDataflow().getMainWorkflow(); - } else if (selection.equals(radioCustomSource.getModel())) { - chosenDataflow = customSourceDataFlow.getMainWorkflow(); - } else { - logger.error("Unknown selection " + selection); - } - if (checkInterrupted()) { - return; - } - if (chosenDataflow != ImportWorkflowWizard.this.sourceWorkflow) { - Profile chosenProfile = null; - if (chosenDataflow != null) { - chosenProfile = chosenDataflow.getParent().getMainProfile(); - } - updateWorkflowGraphic(previewSource, chosenDataflow, chosenProfile); - if (checkInterrupted()) { - return; - } - ImportWorkflowWizard.this.sourceWorkflow = chosenDataflow; - } - if (chosenDataflow == null) { - if (!background && !shownWarning) { - shownWarning = true; - SwingUtilities.invokeLater(new Runnable() { - public void run() { - JOptionPane.showMessageDialog(parentComponent, - "You need to choose a workflow for merging", - "No workflow chosen", JOptionPane.ERROR_MESSAGE); - setVisible(true); - } - }); - } - } - } - - private boolean checkInterrupted() { - if (Thread.interrupted() || this.shouldStop) { - // ImportWorkflowWizard.this.chosenDataflow = null; - return true; - } - return false; - } - } - - public static class DataflowSelection { - private final WorkflowBundle dataflow; - private final String name; - - public DataflowSelection(WorkflowBundle dataflow, String name) { - this.dataflow = dataflow; - this.name = name; - } - - public WorkflowBundle getDataflow() { - return dataflow; - } - - public String getName() { - return name; - } - - @Override - public String toString() { - return name; - } - - } - - protected class UpdateChosenListener implements ActionListener { - public void actionPerformed(ActionEvent e) { - Component parentComponent; - if (e.getSource() instanceof Component) { - parentComponent = (Component) e.getSource(); - } else { - parentComponent = null; - } - findChosenDataflow(parentComponent, true); - - } - } - - public void setCustomSourceDataflow(WorkflowBundle sourceDataflow, String label) { - this.customSourceDataFlow = sourceDataflow; - this.customSourceName = label; - updateSourceSection(); - radioCustomSource.doClick(); - } - -// public void setCustomDestinationDataflow(Workflow destinationDataflow, String label) { -// this.customDestinationDataflow = destinationDataflow; -// this.customDestinationName = label; -// updateDestinationSection(); -// radioCustomDestination.doClick(); -// } - -// public void setDestinationEnabled(boolean destinationEnabled) { -// this.destinationEnabled = destinationEnabled; -// updateDestinationSection(); -// } - - public void setSourceEnabled(boolean sourceEnabled) { - this.sourceEnabled = sourceEnabled; - updateSourceSection(); - } -}
http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-dataflow-activity-ui/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/menu/AddNestedWorkflowMenuAction.java ---------------------------------------------------------------------- diff --git a/taverna-dataflow-activity-ui/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/menu/AddNestedWorkflowMenuAction.java b/taverna-dataflow-activity-ui/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/menu/AddNestedWorkflowMenuAction.java deleted file mode 100644 index a37e308..0000000 --- a/taverna-dataflow-activity-ui/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/menu/AddNestedWorkflowMenuAction.java +++ /dev/null @@ -1,104 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007-2009 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.file.importworkflow.menu; - -import java.awt.event.InputEvent; -import java.awt.event.KeyEvent; -import java.net.URI; - -import javax.swing.Action; -import javax.swing.KeyStroke; - -import net.sf.taverna.t2.ui.menu.AbstractMenuAction; -import net.sf.taverna.t2.ui.menu.MenuManager; -import net.sf.taverna.t2.workbench.configuration.colour.ColourManager; -import net.sf.taverna.t2.workbench.configuration.workbench.WorkbenchConfiguration; -import net.sf.taverna.t2.workbench.edits.EditManager; -import net.sf.taverna.t2.workbench.file.FileManager; -import net.sf.taverna.t2.workbench.file.importworkflow.actions.AddNestedWorkflowAction; -import net.sf.taverna.t2.workbench.selection.SelectionManager; -import net.sf.taverna.t2.workbench.views.graph.menu.InsertMenu; - -/** - * An action to add a nested workflow activity + a wrapping processor to the - * workflow. - * - * @author Alex Nenadic - * @author Stian Soiland-Reyes - * - */ -public class AddNestedWorkflowMenuAction extends AbstractMenuAction { - - private static final String ADD_NESTED_WORKFLOW = "Nested workflow"; - - private static final URI ADD_NESTED_WORKFLOW_URI = URI - .create("http://taverna.sf.net/2008/t2workbench/menu#graphMenuAddNestedWorkflow"); - - private EditManager editManager; - private FileManager fileManager; - private MenuManager menuManager; - private ColourManager colourManager; - private WorkbenchConfiguration workbenchConfiguration; - private SelectionManager selectionManager; - - public AddNestedWorkflowMenuAction() { - super(InsertMenu.INSERT, 400, ADD_NESTED_WORKFLOW_URI); - } - - @Override - protected Action createAction() { - AddNestedWorkflowAction a = new AddNestedWorkflowAction(editManager, fileManager, - menuManager, colourManager, workbenchConfiguration, selectionManager); - // Override name to avoid "Add " - a.putValue(Action.NAME, ADD_NESTED_WORKFLOW); - a.putValue(Action.SHORT_DESCRIPTION, ADD_NESTED_WORKFLOW); - a.putValue(Action.ACCELERATOR_KEY, KeyStroke.getKeyStroke( - KeyEvent.VK_N, InputEvent.SHIFT_DOWN_MASK - | InputEvent.ALT_DOWN_MASK)); - return a; - - } - - public void setEditManager(EditManager editManager) { - this.editManager = editManager; - } - - public void setFileManager(FileManager fileManager) { - this.fileManager = fileManager; - } - - public void setMenuManager(MenuManager menuManager) { - this.menuManager = menuManager; - } - - public void setColourManager(ColourManager colourManager) { - this.colourManager = colourManager; - } - - public void setWorkbenchConfiguration(WorkbenchConfiguration workbenchConfiguration) { - this.workbenchConfiguration = workbenchConfiguration; - } - - public void setSelectionManager(SelectionManager selectionManager) { - this.selectionManager = selectionManager; - } - -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-dataflow-activity-ui/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/menu/ImportWorkflowMenuAction.java ---------------------------------------------------------------------- diff --git a/taverna-dataflow-activity-ui/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/menu/ImportWorkflowMenuAction.java b/taverna-dataflow-activity-ui/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/menu/ImportWorkflowMenuAction.java deleted file mode 100644 index 1c8b40b..0000000 --- a/taverna-dataflow-activity-ui/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/menu/ImportWorkflowMenuAction.java +++ /dev/null @@ -1,98 +0,0 @@ -/******************************************************************************* - * Copyright (C) 2007-2009 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.file.importworkflow.menu; - -import java.net.URI; - -import javax.swing.Action; - -import net.sf.taverna.t2.ui.menu.AbstractContextualMenuAction; -import net.sf.taverna.t2.ui.menu.MenuManager; -import net.sf.taverna.t2.workbench.configuration.colour.ColourManager; -import net.sf.taverna.t2.workbench.configuration.workbench.WorkbenchConfiguration; -import net.sf.taverna.t2.workbench.edits.EditManager; -import net.sf.taverna.t2.workbench.file.FileManager; -import net.sf.taverna.t2.workbench.file.importworkflow.actions.ImportWorkflowAction; -import net.sf.taverna.t2.workbench.selection.SelectionManager; -import uk.org.taverna.scufl2.api.core.Workflow; - -/** - * An action to import nested/merged workflows. - * - * @author Alex Nenadic - * @author Stian Soiland-Reyes - * - */ -public class ImportWorkflowMenuAction extends AbstractContextualMenuAction { - - private static final URI insertSection = URI - .create("http://taverna.sf.net/2009/contextMenu/insert"); - - private EditManager editManager; - private FileManager fileManager; - private MenuManager menuManager; - private ColourManager colourManager; - private WorkbenchConfiguration workbenchConfiguration; - private SelectionManager selectionManager; - - public ImportWorkflowMenuAction() { - super(insertSection, 400); - } - - @Override - public boolean isEnabled() { - return super.isEnabled() && getContextualSelection().getSelection() instanceof Workflow; - } - - @Override - protected Action createAction() { - ImportWorkflowAction myAction = new ImportWorkflowAction(editManager, fileManager, - menuManager, colourManager, workbenchConfiguration, selectionManager); - // Just "Workflow" as we go under the "Insert" menu - myAction.putValue(Action.NAME, "Nested workflow"); - return myAction; - } - - public void setEditManager(EditManager editManager) { - this.editManager = editManager; - } - - public void setFileManager(FileManager fileManager) { - this.fileManager = fileManager; - } - - public void setMenuManager(MenuManager menuManager) { - this.menuManager = menuManager; - } - - public void setColourManager(ColourManager colourManager) { - this.colourManager = colourManager; - } - - public void setWorkbenchConfiguration(WorkbenchConfiguration workbenchConfiguration) { - this.workbenchConfiguration = workbenchConfiguration; - } - - public void setSelectionManager(SelectionManager selectionManager) { - this.selectionManager = selectionManager; - } - -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-dataflow-activity-ui/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/menu/MergeWorkflowMenuAction.java ---------------------------------------------------------------------- diff --git a/taverna-dataflow-activity-ui/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/menu/MergeWorkflowMenuAction.java b/taverna-dataflow-activity-ui/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/menu/MergeWorkflowMenuAction.java deleted file mode 100644 index 7ce4891..0000000 --- a/taverna-dataflow-activity-ui/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/menu/MergeWorkflowMenuAction.java +++ /dev/null @@ -1,65 +0,0 @@ -package net.sf.taverna.t2.workbench.file.importworkflow.menu; - -import java.net.URI; - -import javax.swing.Action; - -import net.sf.taverna.t2.ui.menu.AbstractMenuAction; -import net.sf.taverna.t2.ui.menu.MenuManager; -import net.sf.taverna.t2.workbench.configuration.colour.ColourManager; -import net.sf.taverna.t2.workbench.configuration.workbench.WorkbenchConfiguration; -import net.sf.taverna.t2.workbench.edits.EditManager; -import net.sf.taverna.t2.workbench.file.FileManager; -import net.sf.taverna.t2.workbench.file.importworkflow.actions.MergeWorkflowAction; -import net.sf.taverna.t2.workbench.selection.SelectionManager; - -public class MergeWorkflowMenuAction extends AbstractMenuAction { - - public static final URI INSERT_URI = URI - .create("http://taverna.sf.net/2008/t2workbench/menu#insert"); - - public static final URI IMPORT_URI = URI - .create("http://taverna.sf.net/2008/t2workbench/menu#insert"); - - private EditManager editManager; - private FileManager fileManager; - private MenuManager menuManager; - private ColourManager colourManager; - private WorkbenchConfiguration workbenchConfiguration; - private SelectionManager selectionManager; - - public MergeWorkflowMenuAction() { - super(INSERT_URI, 2000, IMPORT_URI); - } - - @Override - protected Action createAction() { - return new MergeWorkflowAction(editManager, fileManager, menuManager, colourManager, - workbenchConfiguration, selectionManager); - } - - public void setEditManager(EditManager editManager) { - this.editManager = editManager; - } - - public void setFileManager(FileManager fileManager) { - this.fileManager = fileManager; - } - - public void setMenuManager(MenuManager menuManager) { - this.menuManager = menuManager; - } - - public void setColourManager(ColourManager colourManager) { - this.colourManager = colourManager; - } - - public void setWorkbenchConfiguration(WorkbenchConfiguration workbenchConfiguration) { - this.workbenchConfiguration = workbenchConfiguration; - } - - public void setSelectionManager(SelectionManager selectionManager) { - this.selectionManager = selectionManager; - } - -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-dataflow-activity-ui/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/menu/ReplaceNestedWorkflowMenuAction.java ---------------------------------------------------------------------- diff --git a/taverna-dataflow-activity-ui/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/menu/ReplaceNestedWorkflowMenuAction.java b/taverna-dataflow-activity-ui/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/menu/ReplaceNestedWorkflowMenuAction.java deleted file mode 100644 index 3d424df..0000000 --- a/taverna-dataflow-activity-ui/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/menu/ReplaceNestedWorkflowMenuAction.java +++ /dev/null @@ -1,76 +0,0 @@ -package net.sf.taverna.t2.workbench.file.importworkflow.menu; - -import java.net.URI; - -import javax.swing.Action; - -import net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry; -import net.sf.taverna.t2.ui.menu.MenuManager; -import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager; -import net.sf.taverna.t2.workbench.activitytools.AbstractConfigureActivityMenuAction; -import net.sf.taverna.t2.workbench.configuration.colour.ColourManager; -import net.sf.taverna.t2.workbench.configuration.workbench.WorkbenchConfiguration; -import net.sf.taverna.t2.workbench.edits.EditManager; -import net.sf.taverna.t2.workbench.file.FileManager; -import net.sf.taverna.t2.workbench.file.importworkflow.actions.ReplaceNestedWorkflowAction; -import net.sf.taverna.t2.workbench.selection.SelectionManager; - -public class ReplaceNestedWorkflowMenuAction extends AbstractConfigureActivityMenuAction { - - private static final URI NESTED_ACTIVITY = URI.create("http://ns.taverna.org.uk/2010/activity/nested-workflow"); - - private EditManager editManager; - private FileManager fileManager; - private MenuManager menuManager; - private ActivityIconManager activityIconManager; - private ColourManager colourManager; - private WorkbenchConfiguration workbenchConfiguration; - private ServiceDescriptionRegistry serviceDescriptionRegistry; - private SelectionManager selectionManager; - - public ReplaceNestedWorkflowMenuAction() { - super(NESTED_ACTIVITY); - } - - @Override - protected Action createAction() { - ReplaceNestedWorkflowAction configAction = new ReplaceNestedWorkflowAction(findActivity(), - editManager, fileManager, menuManager, activityIconManager, colourManager, - serviceDescriptionRegistry, workbenchConfiguration, selectionManager); - addMenuDots(configAction); - return configAction; - } - - public void setEditManager(EditManager editManager) { - this.editManager = editManager; - } - - public void setFileManager(FileManager fileManager) { - this.fileManager = fileManager; - } - - public void setMenuManager(MenuManager menuManager) { - this.menuManager = menuManager; - } - - public void setActivityIconManager(ActivityIconManager activityIconManager) { - this.activityIconManager = activityIconManager; - } - - public void setColourManager(ColourManager colourManager) { - this.colourManager = colourManager; - } - - public void setServiceDescriptionRegistry(ServiceDescriptionRegistry serviceDescriptionRegistry) { - this.serviceDescriptionRegistry = serviceDescriptionRegistry; - } - - public void setWorkbenchConfiguration(WorkbenchConfiguration workbenchConfiguration) { - this.workbenchConfiguration = workbenchConfiguration; - } - - public void setSelectionManager(SelectionManager selectionManager) { - this.selectionManager = selectionManager; - } - -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-dataflow-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider ---------------------------------------------------------------------- diff --git a/taverna-dataflow-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider b/taverna-dataflow-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider deleted file mode 100644 index bf42bef..0000000 --- a/taverna-dataflow-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider +++ /dev/null @@ -1 +0,0 @@ -net.sf.taverna.t2.activities.dataflow.servicedescriptions.DataflowTemplateService http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-dataflow-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent ---------------------------------------------------------------------- diff --git a/taverna-dataflow-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent b/taverna-dataflow-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent deleted file mode 100644 index 6e7eec5..0000000 --- a/taverna-dataflow-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.ui.menu.MenuComponent +++ /dev/null @@ -1,9 +0,0 @@ -# Needs to be first AbstractConfigureActivityMenuAction to be -# picked up as the automatic 'configure' action for template services -net.sf.taverna.t2.workbench.file.importworkflow.menu.ReplaceNestedWorkflowMenuAction - -net.sf.taverna.t2.workbench.file.importworkflow.menu.AddNestedWorkflowMenuAction -net.sf.taverna.t2.workbench.file.importworkflow.menu.ImportWorkflowMenuAction -net.sf.taverna.t2.workbench.file.importworkflow.menu.MergeWorkflowMenuAction - -net.sf.taverna.t2.activities.dataflow.menu.EditNestedDataflowMenuAction http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-dataflow-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI ---------------------------------------------------------------------- diff --git a/taverna-dataflow-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI b/taverna-dataflow-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI deleted file mode 100644 index 5cb0543..0000000 --- a/taverna-dataflow-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI +++ /dev/null @@ -1 +0,0 @@ -net.sf.taverna.t2.activities.dataflow.servicedescriptions.DataflowActivityIcon \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-dataflow-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.file.DataflowPersistenceHandler ---------------------------------------------------------------------- diff --git a/taverna-dataflow-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.file.DataflowPersistenceHandler b/taverna-dataflow-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.file.DataflowPersistenceHandler deleted file mode 100644 index a334e66..0000000 --- a/taverna-dataflow-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.file.DataflowPersistenceHandler +++ /dev/null @@ -1 +0,0 @@ -net.sf.taverna.t2.activities.dataflow.filemanager.NestedDataflowPersistenceHandler \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-dataflow-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory ---------------------------------------------------------------------- diff --git a/taverna-dataflow-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory b/taverna-dataflow-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory deleted file mode 100644 index 39d7ec2..0000000 --- a/taverna-dataflow-activity-ui/src/main/resources/META-INF/services/net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory +++ /dev/null @@ -1 +0,0 @@ -net.sf.taverna.t2.activities.dataflow.views.DataflowActivityViewFactory \ No newline at end of file http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-dataflow-activity-ui/src/main/resources/META-INF/spring/dataflow-activity-ui-context-osgi.xml ---------------------------------------------------------------------- diff --git a/taverna-dataflow-activity-ui/src/main/resources/META-INF/spring/dataflow-activity-ui-context-osgi.xml b/taverna-dataflow-activity-ui/src/main/resources/META-INF/spring/dataflow-activity-ui-context-osgi.xml deleted file mode 100644 index e664429..0000000 --- a/taverna-dataflow-activity-ui/src/main/resources/META-INF/spring/dataflow-activity-ui-context-osgi.xml +++ /dev/null @@ -1,33 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<beans:beans xmlns="http://www.springframework.org/schema/osgi" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xmlns:beans="http://www.springframework.org/schema/beans" - xsi:schemaLocation="http://www.springframework.org/schema/beans - http://www.springframework.org/schema/beans/spring-beans.xsd - http://www.springframework.org/schema/osgi - http://www.springframework.org/schema/osgi/spring-osgi.xsd"> - - <service ref="DataflowActivityIcon" interface="net.sf.taverna.t2.workbench.activityicons.ActivityIconSPI" /> - - <service ref="DataflowTemplateService" interface="net.sf.taverna.t2.servicedescriptions.ServiceDescriptionProvider" /> - - <service ref="ReplaceNestedWorkflowMenuAction" auto-export="interfaces" /> - <service ref="AddNestedWorkflowMenuAction" auto-export="interfaces" /> - <service ref="ImportWorkflowMenuAction" auto-export="interfaces" /> - <service ref="MergeWorkflowMenuAction" auto-export="interfaces" /> - <service ref="EditNestedDataflowMenuAction" auto-export="interfaces" /> - - <!-- <service ref="NestedDataflowPersistenceHandler" interface="net.sf.taverna.t2.workbench.file.DataflowPersistenceHandler" /> --> - - <service ref="DataflowActivityViewFactory" interface="net.sf.taverna.t2.workbench.ui.views.contextualviews.activity.ContextualViewFactory" /> - - <reference id="editManager" interface="net.sf.taverna.t2.workbench.edits.EditManager" /> - <reference id="fileManager" interface="net.sf.taverna.t2.workbench.file.FileManager" /> - <reference id="menuManager" interface="net.sf.taverna.t2.ui.menu.MenuManager" /> - <reference id="edits" interface="net.sf.taverna.t2.workflowmodel.Edits" /> - <reference id="activityIconManager" interface="net.sf.taverna.t2.workbench.activityicons.ActivityIconManager" /> - <reference id="colourManager" interface="net.sf.taverna.t2.workbench.configuration.colour.ColourManager" /> - <reference id="serviceDescriptionRegistry" interface="net.sf.taverna.t2.servicedescriptions.ServiceDescriptionRegistry" /> - <reference id="workbenchConfiguration" interface="net.sf.taverna.t2.workbench.configuration.workbench.WorkbenchConfiguration" /> - <reference id="selectionManager" interface="net.sf.taverna.t2.workbench.selection.SelectionManager" /> - -</beans:beans> http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-dataflow-activity-ui/src/main/resources/META-INF/spring/dataflow-activity-ui-context.xml ---------------------------------------------------------------------- diff --git a/taverna-dataflow-activity-ui/src/main/resources/META-INF/spring/dataflow-activity-ui-context.xml b/taverna-dataflow-activity-ui/src/main/resources/META-INF/spring/dataflow-activity-ui-context.xml deleted file mode 100644 index f72abd2..0000000 --- a/taverna-dataflow-activity-ui/src/main/resources/META-INF/spring/dataflow-activity-ui-context.xml +++ /dev/null @@ -1,64 +0,0 @@ -<?xml version="1.0" encoding="UTF-8"?> -<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" - xsi:schemaLocation="http://www.springframework.org/schema/beans - http://www.springframework.org/schema/beans/spring-beans.xsd"> - - <bean id="DataflowActivityIcon" class="net.sf.taverna.t2.activities.dataflow.servicedescriptions.DataflowActivityIcon" /> - - <bean id="DataflowTemplateService" class="net.sf.taverna.t2.activities.dataflow.servicedescriptions.DataflowTemplateService" /> - - <bean id="ReplaceNestedWorkflowMenuAction" class="net.sf.taverna.t2.workbench.file.importworkflow.menu.ReplaceNestedWorkflowMenuAction"> - <property name="editManager" ref="editManager" /> - <property name="fileManager" ref="fileManager" /> - <property name="menuManager" ref="menuManager" /> - <property name="activityIconManager" ref="activityIconManager" /> - <property name="colourManager" ref="colourManager" /> - <property name="serviceDescriptionRegistry" ref="serviceDescriptionRegistry" /> - <property name="workbenchConfiguration" ref="workbenchConfiguration" /> - <property name="selectionManager" ref="selectionManager" /> - </bean> - <bean id="AddNestedWorkflowMenuAction" class="net.sf.taverna.t2.workbench.file.importworkflow.menu.AddNestedWorkflowMenuAction"> - <property name="editManager" ref="editManager" /> - <property name="fileManager" ref="fileManager" /> - <property name="menuManager" ref="menuManager" /> - <property name="colourManager" ref="colourManager" /> - <property name="workbenchConfiguration" ref="workbenchConfiguration" /> - <property name="selectionManager" ref="selectionManager" /> - </bean> - <bean id="ImportWorkflowMenuAction" class="net.sf.taverna.t2.workbench.file.importworkflow.menu.ImportWorkflowMenuAction"> - <property name="editManager" ref="editManager" /> - <property name="fileManager" ref="fileManager" /> - <property name="menuManager" ref="menuManager" /> - <property name="colourManager" ref="colourManager" /> - <property name="workbenchConfiguration" ref="workbenchConfiguration" /> - <property name="selectionManager" ref="selectionManager" /> - </bean> - <bean id="MergeWorkflowMenuAction" class="net.sf.taverna.t2.workbench.file.importworkflow.menu.MergeWorkflowMenuAction"> - <property name="editManager" ref="editManager" /> - <property name="fileManager" ref="fileManager" /> - <property name="menuManager" ref="menuManager" /> - <property name="colourManager" ref="colourManager" /> - <property name="workbenchConfiguration" ref="workbenchConfiguration" /> - <property name="selectionManager" ref="selectionManager" /> - </bean> - <bean id="EditNestedDataflowMenuAction" class="net.sf.taverna.t2.activities.dataflow.menu.EditNestedDataflowMenuAction"> - <property name="selectionManager" ref="selectionManager" /> - </bean> - - <!-- <bean id="NestedDataflowPersistenceHandler" class="net.sf.taverna.t2.activities.dataflow.filemanager.NestedDataflowPersistenceHandler"> - <property name="editManager" ref="editManager" /> - <property name="fileManager" ref="fileManager" /> - </bean> --> - - <bean id="DataflowActivityViewFactory" class="net.sf.taverna.t2.activities.dataflow.views.DataflowActivityViewFactory"> - <property name="editManager" ref="editManager" /> - <property name="fileManager" ref="fileManager" /> - <property name="menuManager" ref="menuManager" /> - <property name="activityIconManager" ref="activityIconManager" /> - <property name="colourManager" ref="colourManager" /> - <property name="serviceDescriptionRegistry" ref="serviceDescriptionRegistry" /> - <property name="workbenchConfiguration" ref="workbenchConfiguration" /> - <property name="selectionManager" ref="selectionManager" /> - </bean> - -</beans> http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-dataflow-activity-ui/src/main/resources/dataflow.png ---------------------------------------------------------------------- diff --git a/taverna-dataflow-activity-ui/src/main/resources/dataflow.png b/taverna-dataflow-activity-ui/src/main/resources/dataflow.png deleted file mode 100644 index 71b188c..0000000 Binary files a/taverna-dataflow-activity-ui/src/main/resources/dataflow.png and /dev/null differ http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-dataflow-activity-ui/src/test/java/net/sf/taverna/t2/workbench/file/importworkflow/AbstractTestHelper.java ---------------------------------------------------------------------- diff --git a/taverna-dataflow-activity-ui/src/test/java/net/sf/taverna/t2/workbench/file/importworkflow/AbstractTestHelper.java b/taverna-dataflow-activity-ui/src/test/java/net/sf/taverna/t2/workbench/file/importworkflow/AbstractTestHelper.java deleted file mode 100644 index 7a4d2f6..0000000 --- a/taverna-dataflow-activity-ui/src/test/java/net/sf/taverna/t2/workbench/file/importworkflow/AbstractTestHelper.java +++ /dev/null @@ -1,266 +0,0 @@ -package net.sf.taverna.t2.workbench.file.importworkflow; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertNotNull; -import static org.junit.Assert.assertTrue; - -import java.io.InputStream; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import org.junit.Before; - -import uk.org.taverna.scufl2.api.common.Scufl2Tools; -import uk.org.taverna.scufl2.api.container.WorkflowBundle; -import uk.org.taverna.scufl2.api.core.BlockingControlLink; -import uk.org.taverna.scufl2.api.core.ControlLink; -import uk.org.taverna.scufl2.api.core.DataLink; -import uk.org.taverna.scufl2.api.core.Processor; -import uk.org.taverna.scufl2.api.core.Workflow; -import uk.org.taverna.scufl2.api.io.WorkflowBundleIO; -import uk.org.taverna.scufl2.api.port.InputWorkflowPort; -import uk.org.taverna.scufl2.api.port.OutputWorkflowPort; -import uk.org.taverna.scufl2.api.port.ProcessorPort; -import uk.org.taverna.scufl2.api.port.ReceiverPort; -import uk.org.taverna.scufl2.api.port.SenderPort; - -public abstract class AbstractTestHelper { - - private static final String Q_T2FLOW = "/q.t2flow"; - - private static final String ABC_T2FLOW = "/abc.t2flow"; - - private static final String P_T2FLOW = "/p.t2flow"; - - private WorkflowBundleIO workflowBundleIO = new WorkflowBundleIO(); - - protected Scufl2Tools scufl2Tools = new Scufl2Tools(); - - protected Workflow abc; - - protected Workflow p; - - protected Workflow q; - - protected void assertHasConditionals(Workflow dataflow, - String... expectedConditionalDef) { - Set<String> expectedConditionals = new HashSet<String>(); - for (String expected : expectedConditionalDef) { - expectedConditionals.add(expected); - } - - Set<String> foundConditionals = new HashSet<String>(); - - for (ControlLink c : dataflow.getControlLinks()) { - if (c instanceof BlockingControlLink) { - BlockingControlLink bcl = (BlockingControlLink) c; - foundConditionals.add(bcl.getUntilFinished().getName() + ";" - + bcl.getBlock().getName()); - } - } - - Set<String> extras = new HashSet<String>(foundConditionals); - extras.removeAll(expectedConditionals); - assertTrue("Unexpected conditional " + extras, extras.isEmpty()); - - Set<String> missing = new HashSet<String>(expectedConditionals); - missing.removeAll(foundConditionals); - assertTrue("Could not find conditional " + missing, missing.isEmpty()); - } - - protected void assertHasDatalinks(Workflow dataflow, - String... expectedLinkDef) { - Set<String> expectedLinks = new HashSet<String>(); - for (String expected : expectedLinkDef) { - expectedLinks.add(expected); - } - - Set<String> foundLinks = new HashSet<String>(); - - for (DataLink link : dataflow.getDataLinks()) { - StringBuilder linkRef = new StringBuilder(); - SenderPort source = link.getReceivesFrom(); - if (source instanceof ProcessorPort) { - linkRef.append(((ProcessorPort) source).getParent() - .getName()); - linkRef.append('.'); - } - linkRef.append(source.getName()); - - linkRef.append("->"); - - ReceiverPort sink = link.getSendsTo(); - if (sink instanceof ProcessorPort) { - linkRef.append(((ProcessorPort) sink).getParent() - .getName()); - linkRef.append('.'); - } - linkRef.append(sink.getName()); - - String linkStr = linkRef.toString(); - foundLinks.add(linkStr); - } - - Set<String> extras = new HashSet<String>(foundLinks); - extras.removeAll(expectedLinks); - assertTrue("Unexpected links " + extras, extras.isEmpty()); - - Set<String> missing = new HashSet<String>(expectedLinks); - missing.removeAll(foundLinks); - assertTrue("Could not find links " + missing, missing.isEmpty()); - } - - protected void assertHasInputPorts(Workflow dataflow, - String... expectedInputPorts) { - Set<String> expectedNames = new HashSet<String>(); - for (String expected : expectedInputPorts) { - expectedNames.add(expected); - } - Set<String> foundNames = new HashSet<String>(); - for (InputWorkflowPort port : dataflow.getInputPorts()) { - String name = port.getName(); - foundNames.add(name); - } - - Set<String> extras = new HashSet<String>(foundNames); - extras.removeAll(expectedNames); - assertTrue("Unexpected input port " + extras, extras.isEmpty()); - - Set<String> missing = new HashSet<String>(expectedNames); - missing.removeAll(foundNames); - assertTrue("Could not find input port " + missing, missing.isEmpty()); - - } - - protected void assertHasOutputPorts(Workflow dataflow, - String... expectedOutputPorts) { - Set<String> expectedNames = new HashSet<String>(); - for (String expected : expectedOutputPorts) { - expectedNames.add(expected); - } - Set<String> foundNames = new HashSet<String>(); - for (OutputWorkflowPort port : dataflow.getOutputPorts()) { - String name = port.getName(); - foundNames.add(name); - } - - Set<String> extras = new HashSet<String>(foundNames); - extras.removeAll(expectedNames); - assertTrue("Unexpected output port " + extras, extras.isEmpty()); - - Set<String> missing = new HashSet<String>(expectedNames); - missing.removeAll(foundNames); - assertTrue("Could not find output port " + missing, missing.isEmpty()); - } - - protected void assertHasProcessors(Workflow dataflow, - String... expectedProcessors) { - Set<String> expectedNames = new HashSet<String>(); - for (String expected : expectedProcessors) { - expectedNames.add(expected); - } - Set<String> foundNames = new HashSet<String>(); - - for (Processor proc : dataflow.getProcessors()) { - String processorName = proc.getName(); - foundNames.add(processorName); - } - - Set<String> extras = new HashSet<String>(foundNames); - extras.removeAll(expectedNames); - assertTrue("Unexpected processor " + extras, extras.isEmpty()); - - Set<String> missing = new HashSet<String>(expectedNames); - missing.removeAll(foundNames); - assertTrue("Could not find processor " + missing, missing.isEmpty()); - } - - protected void checkAbc() throws Exception { - assertHasProcessors(abc, "A", "B", "C"); - assertHasInputPorts(abc, "in1", "in2"); - assertHasOutputPorts(abc, "a", "b", "c"); - assertHasDatalinks(abc, "in2->B.inputlist", "in1->A.string1", - "in2->A.string2", "Merge0:Merge0_output->C.inputlist", - "A.output->a", "B.outputlist->b", - "B.outputlist->Merge0:outputlistToMerge0_input0", - "A.output->Merge0:outputToMerge0_input0", "C.outputlist->c"); - assertHasConditionals(abc, "A;B"); - } - - protected void checkP() throws Exception { - assertHasProcessors(p, "P"); - assertHasInputPorts(p, "i"); - assertHasOutputPorts(p, "o"); - assertHasDatalinks(p, "i->P.inputlist", "P.outputlist->o"); - assertHasConditionals(p); - - } - - protected void checkQ() throws Exception { - assertHasProcessors(q, "Q"); - assertHasInputPorts(q, "p"); - assertHasOutputPorts(q, "p", "q"); - assertHasDatalinks(q, "p->Q.inputlist", "Q.outputlist->q", "p->p"); - assertHasConditionals(q); - - List<DataLink> datalinksTo = scufl2Tools.datalinksTo(findOutputPort(q, "p")); - assertEquals(1, datalinksTo.size()); - SenderPort source = datalinksTo.get(0).getReceivesFrom(); - assertEquals("out port P not linked to input P", source, findInputPort(q, "p")); - - } - - protected Workflow loadAbc() throws Exception { - return openWorkflow(getClass().getResourceAsStream(ABC_T2FLOW)); - } - - protected Workflow loadP() throws Exception { - return openWorkflow(getClass().getResourceAsStream(P_T2FLOW)); - } - - protected Workflow loadQ() throws Exception { - return openWorkflow(getClass().getResourceAsStream(Q_T2FLOW)); - } - - @Before - public void loadWorkflows() throws Exception { - abc = loadAbc(); - p = loadP(); - q = loadQ(); - } - - protected Workflow openWorkflow(InputStream workflowXMLstream) throws Exception { - assertNotNull(workflowXMLstream); - WorkflowBundle workflowBundle = workflowBundleIO.readBundle(workflowXMLstream, "application/vnd.taverna.t2flow+xml"); - return workflowBundle.getMainWorkflow(); - } - - protected InputWorkflowPort findInputPort(Workflow wf, String name) { - for (InputWorkflowPort inp : wf.getInputPorts()) { - if (inp.getName().equals(name)) { - return inp; - } - } - throw new IllegalArgumentException("Unknown input port: " + name); - } - - protected OutputWorkflowPort findOutputPort(Workflow wf, String name) { - for (OutputWorkflowPort outp : wf.getOutputPorts()) { - if (outp.getName().equals(name)) { - return outp; - } - } - throw new IllegalArgumentException("Unknown output port: " + name); - } - - protected Processor findProcessor(Workflow wf, String name) { - for (Processor proc : wf.getProcessors()) { - if (proc.getName().equals(name)) { - return proc; - } - } - throw new IllegalArgumentException("Unknown processor: " + name); - } - -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-dataflow-activity-ui/src/test/java/net/sf/taverna/t2/workbench/file/importworkflow/TestPortMerge.java ---------------------------------------------------------------------- diff --git a/taverna-dataflow-activity-ui/src/test/java/net/sf/taverna/t2/workbench/file/importworkflow/TestPortMerge.java b/taverna-dataflow-activity-ui/src/test/java/net/sf/taverna/t2/workbench/file/importworkflow/TestPortMerge.java deleted file mode 100644 index 9141693..0000000 --- a/taverna-dataflow-activity-ui/src/test/java/net/sf/taverna/t2/workbench/file/importworkflow/TestPortMerge.java +++ /dev/null @@ -1,38 +0,0 @@ -package net.sf.taverna.t2.workbench.file.importworkflow; - -import static org.junit.Assert.assertEquals; -import static org.junit.Assert.assertSame; - -import java.util.List; - -import org.junit.Ignore; -import org.junit.Test; - -import uk.org.taverna.scufl2.api.core.DataLink; -import uk.org.taverna.scufl2.api.core.Workflow; -import uk.org.taverna.scufl2.api.port.SenderPort; - -@Ignore -public class TestPortMerge extends AbstractTestHelper { - - @Test - public void mergeQintoP() throws Exception { - DataflowMerger merger = new DataflowMerger(p); - merger.getMergeEdit(q).doEdit(); - Workflow merged = p; - checkQ(); - - assertHasProcessors(merged, "P", "Q"); - assertHasInputPorts(merged, "i", "p"); - assertHasOutputPorts(merged, "o", "p", "q"); - assertHasDatalinks(merged, "i->P.inputlist", "P.outputlist->o", "p->Q.inputlist", - "Q.outputlist->q", "p->p"); - - List<DataLink> datalinksTo = scufl2Tools.datalinksTo(findOutputPort(merged, "p")); - assertEquals(1, datalinksTo.size()); - SenderPort source = datalinksTo.get(0).getReceivesFrom(); - assertSame("out port P not linked to input P", source, findInputPort(merged, "p")); - - } - -} http://git-wip-us.apache.org/repos/asf/incubator-taverna-workbench/blob/dc466d6d/taverna-dataflow-activity-ui/src/test/java/net/sf/taverna/t2/workbench/file/importworkflow/TestRename.java ---------------------------------------------------------------------- diff --git a/taverna-dataflow-activity-ui/src/test/java/net/sf/taverna/t2/workbench/file/importworkflow/TestRename.java b/taverna-dataflow-activity-ui/src/test/java/net/sf/taverna/t2/workbench/file/importworkflow/TestRename.java deleted file mode 100644 index c235c98..0000000 --- a/taverna-dataflow-activity-ui/src/test/java/net/sf/taverna/t2/workbench/file/importworkflow/TestRename.java +++ /dev/null @@ -1,58 +0,0 @@ -package net.sf.taverna.t2.workbench.file.importworkflow; - -import org.junit.Ignore; -import org.junit.Test; - -import uk.org.taverna.scufl2.api.core.Workflow; - -@Ignore -public class TestRename extends AbstractTestHelper { - - @Test - public void mergePintoP() throws Exception { - DataflowMerger merger = new DataflowMerger(p); - merger.getMergeEdit(p).doEdit(); - Workflow merged = p; - - assertHasProcessors(merged, "P", "P_2"); - assertHasInputPorts(merged, "i", "i_2"); - assertHasOutputPorts(merged, "o", "o_2"); - assertHasDatalinks(merged, "i->P.inputlist", "P.outputlist->o", - "i_2->P_2.inputlist", "P_2.outputlist->o_2"); - } - - @Test - public void mergePintoPintoP() throws Exception { - // Don't put p in constructor, or we would get exponential merging! - Workflow merged = new Workflow(); - DataflowMerger merger = new DataflowMerger(merged); - merger.getMergeEdit(p).doEdit(); - merger.getMergeEdit(p).doEdit(); - merger.getMergeEdit(p).doEdit(); - - assertHasProcessors(merged, "P", "P_2", "P_3"); - assertHasInputPorts(merged, "i", "i_2", "i_3"); - assertHasOutputPorts(merged, "o", "o_2", "o_3"); - assertHasDatalinks(merged, "i->P.inputlist", "P.outputlist->o", - "i_2->P_2.inputlist", "P_2.outputlist->o_2", - "i_3->P_3.inputlist", "P_3.outputlist->o_3"); - } - - @Test - public void mergePintoPWithPrefix() throws Exception { - // Don't put p in constructor, or we would get exponential merging! - Workflow merged = new Workflow(); - DataflowMerger merger = new DataflowMerger(merged); - merger.getMergeEdit(p).doEdit(); - merger.getMergeEdit(p, "fish_").doEdit(); - merger.getMergeEdit(p, "soup_").doEdit(); - - assertHasProcessors(merged, "P", "fish_P", "soup_P"); - assertHasInputPorts(merged, "i", "fish_i", "soup_i"); - assertHasOutputPorts(merged, "o", "fish_o", "soup_o"); - assertHasDatalinks(merged, "i->P.inputlist", "P.outputlist->o", - "fish_i->fish_P.inputlist", "fish_P.outputlist->fish_o", - "soup_i->soup_P.inputlist", "soup_P.outputlist->soup_o"); - } - -}
