in taverna-reference-ui/src/main/java/org/apache/taverna/reference/ui/WorkflowLaunchWindow.java [231:423]
public void initComponents() {
workflowPart = new JPanel(new GridLayout(3, 1));
portsPart = new JPanel(new BorderLayout());
createWorkflowGraphic = createWorkflowGraphic(workflow);
createWorkflowGraphic.setBorder(new TitledBorder("Diagram"));
workflowPart.add(new JScrollPane(createWorkflowGraphic));
workflowDescriptionArea = new DialogTextArea(NO_WORKFLOW_DESCRIPTION, 5, 40);
workflowDescriptionArea.setBorder(new TitledBorder("Workflow description"));
workflowDescriptionArea.setEditable(false);
workflowDescriptionArea.setLineWrap(true);
workflowDescriptionArea.setWrapStyleWord(true);
workflowPart.add(new JScrollPane(workflowDescriptionArea));
workflowAuthorArea = new DialogTextArea(NO_WORKFLOW_AUTHOR, 1, 40);
workflowAuthorArea.setBorder(new TitledBorder("Workflow author"));
workflowAuthorArea.setEditable(false);
workflowAuthorArea.setLineWrap(true);
workflowAuthorArea.setWrapStyleWord(true);
workflowPart.add(new JScrollPane(workflowAuthorArea));
launchAction = new AbstractAction(LAUNCH_WORKFLOW, launchIcon) {
@Override
public void actionPerformed(ActionEvent ae) {
// First of all - is the workflow valid?
// TODO convert to Scufl2 validation
// if (!CheckWorkflowStatus.checkWorkflow(dataflowOriginal, workbench, editManager,
// fileManager, reportManager)) {
// setVisible(false);
// return;
// }
/*
* Check if user had entered input values for all input ports -
* otherwise there is no point in attempting to run the workflow
*/
for (InputWorkflowPort input : workflow.getInputPorts()) {
RegistrationPanel registrationPanel = inputPanelMap.get(input.getName());
Object userInput = registrationPanel.getUserInput();
if (userInput == null) {
showMessageDialog(
WorkflowLaunchWindow.this,
"You have not provided input values for all workflow inputs",
"Workflow input value error", ERROR_MESSAGE);
// exit
return;
}
}
setState(ICONIFIED);
try {
Bundle inputDataBundle = createInputDataBundle();
handleLaunch(inputDataBundle);
} catch (IOException e) {
showMessageDialog(WorkflowLaunchWindow.this,
"An error occurred while creating input values\n"
+ e.getMessage(), "Error creating inputs",
ERROR_MESSAGE);
return;
}
}
};
WorkflowBundle workflowBundle = workflow.getParent();
Model annotations = annotationsForBean(workflowBundle, workflow);
Resource bean = annotations.getResource(uriTools.uriForBean(workflow)
.toASCIIString());
String title = null;
Property titleProp = annotations
.createProperty("http://purl.org/dc/terms/title");
if (bean.hasProperty(titleProp))
title = bean.getProperty(titleProp).getString();
setWindowTitle(title);
Property descProp = annotations
.createProperty("http://purl.org/dc/terms/description");
if (bean.hasProperty(descProp))
setWorkflowDescription(bean.getProperty(descProp).getString());
Property creatorProp = annotations
.createProperty("http://purl.org/dc/elements/1.1/creator");
if (bean.hasProperty(creatorProp))
setWorkflowAuthor(bean.getProperty(creatorProp).getString());
Action useExamplesAction = new AbstractAction("Use examples", addTextIcon) {
@Override
public void actionPerformed(ActionEvent arg0) {
List<InputWorkflowPort> inputPorts = new ArrayList<>(
workflow.getInputPorts());
/*
* Create tabs for input ports (but only for the one that are
* connected!)
*/
for (InputWorkflowPort inputPort : inputPorts) {
RegistrationPanel rp = inputPanelMap.get(inputPort
.getName());
Object example = rp.getExample();
if (example != null && inputPort.getDepth() == 0
&& rp.getValue() == null)
rp.setValue(example);
}
}
};
JButton useExamplesButton = new JButton(useExamplesAction);
useExamplesButton
.setToolTipText("Use the example value (if any) for ports that you have not set a value for");
// Construct tool bar
JToolBar toolBar = new JToolBar();
toolBar.setFloatable(false);
toolBar.add(useExamplesButton);
toolBar.add(new JButton(launchAction));
toolBar.add(new JButton(new AbstractAction("Cancel", closeIcon) {
@Override
public void actionPerformed(ActionEvent e) {
handleCancel();
}
}));
JToolBar loadButtonsBar = new JToolBar();
loadButtonsBar.setFloatable(false);
for (ReferenceActionSPI spi : referenceActionSPIs) {
ReferenceActionSPI action = (ReferenceActionSPI) spi.getAction();
action.setInputPanelMap(inputPanelMap);
JButton loadButton = new JButton((AbstractAction) action);
loadButtonsBar.add(loadButton);
}
JPanel toolBarPanel = new JPanel(new BorderLayout());
toolBarPanel.add(loadButtonsBar, WEST);
toolBarPanel.add(toolBar, EAST);
toolBarPanel.setBorder(new EmptyBorder(5, 10, 5, 20));
portsPart.add(toolBarPanel, SOUTH);
/*
* Construct tab container - tabs will be populated based on the wf
* input ports
*/
tabsPane = new JTabbedPane();
List<InputWorkflowPort> inputPorts = new ArrayList<>(workflow.getInputPorts());
Set<String> inputNames = new HashSet<>();
/*
* Create tabs for input ports (but only for the one that are
* connected!)
*/
for (InputWorkflowPort inputPort : inputPorts) {
// Is this input port connected to anything?
if (scufl2Tools.datalinksFrom(inputPort).isEmpty())
continue;
String portDescription = "";
String portExample = "";
annotations = annotationsForBean(workflowBundle, inputPort);
bean = annotations.getResource(uriTools.uriForBean(inputPort)
.toASCIIString());
if (bean.hasProperty(descProp))
portDescription = bean.getProperty(descProp).getString();
Property exDataProp = annotations
.createProperty("http://biocatalogue.org/attribute/exampleData");
if (bean.hasProperty(exDataProp))
portExample = bean.getProperty(exDataProp).getString();
// add tabs for wf input ports
String name = inputPort.getName();
inputNames.add(name);
addInput(name, inputPort.getDepth(), portDescription, portExample);
}
portsPart.add(tabsPane, CENTER);
workflowPart.setPreferredSize(new Dimension(300, 500));
portsPart.setPreferredSize(new Dimension(650, 500));
overallPanel = new JPanel();
overallPanel.setLayout(new BoxLayout(overallPanel, X_AXIS));
overallPanel.add(workflowPart);
overallPanel.add(portsPart);
setLayout(new BorderLayout());
getContentPane().add(new JScrollPane(overallPanel), CENTER);
pack();
}