in taverna-perspective-myexperiment/src/main/java/org/apache/taverna/ui/perspectives/myexperiment/ResourcePreviewFactory.java [895:1073]
private JScrollPane createWorkflowComponentPreviewTab(Workflow w) {
final JPanel jpWorkflowComponentsTabContent = createStandardTabContentPanel();
if (!w.isTavernaWorkflow()) {
// can only display components for Taverna 1 workflows at the moment
JLabel lNotSupported = new JLabel("<html>This is a "
+ w.getVisibleType()
+ " workflow;<br>myExperiment can only display Taverna workflow components at the moment.</html>");
lNotSupported.setFont(lNotSupported.getFont().deriveFont(Font.ITALIC));
lNotSupported.setForeground(Color.GRAY);
jpWorkflowComponentsTabContent.add(lNotSupported);
} else if (!w.isDownloadAllowed()) {
// can display components for workflow of this type, but current user is
// not
// allowed to download this workflow - and, hence, to view its components
JLabel lNotAuthorized = new JLabel("You are not authorised to download this workflow, "
+ "and hence component preview is not available.");
lNotAuthorized.setFont(lNotAuthorized.getFont().deriveFont(Font.ITALIC));
lNotAuthorized.setForeground(Color.GRAY);
jpWorkflowComponentsTabContent.add(lNotAuthorized);
} else {
// can display the components
// storage for table column names
Vector<String> vColumnNames = new Vector<String>();
// ** inputs **
vColumnNames.clear();
vColumnNames.addAll(Arrays.asList(new String[] { "Name", "Description" }));
Vector<Vector<String>> vInputsData = new Vector<Vector<String>>();
ArrayList<HashMap<String, String>> inputs = w.getComponents().get("inputs");
if (inputs != null) {
for (HashMap<String, String> curInput : inputs) {
Vector<String> vCurData = new Vector<String>();
vCurData.add(curInput.get("name"));
vCurData.add(curInput.get("description"));
vInputsData.add(vCurData);
}
}
JTable jtInputs = new JTable(vInputsData, vColumnNames);
jtInputs.getColumnModel().getColumn(0).setPreferredWidth(100);
jtInputs.getTableHeader().setFont(jtInputs.getTableHeader().getFont().deriveFont(Font.BOLD));
JPanel jpInputs = new JPanel();
jpInputs.setLayout(new BorderLayout());
jpInputs.add(jtInputs.getTableHeader(), BorderLayout.NORTH);
jpInputs.add(jtInputs, BorderLayout.CENTER);
JPanel jpInputsWithTitle = new JPanel();
jpInputsWithTitle.setBorder(BorderFactory.createEtchedBorder());
jpInputsWithTitle.setLayout(new BorderLayout());
jpInputsWithTitle.add(new ShadedLabel("Workflow input ports ("
+ vInputsData.size() + ")", ShadedLabel.BLUE, true), BorderLayout.NORTH);
if (vInputsData.size() > 0) {
jpInputsWithTitle.add(jpInputs, BorderLayout.CENTER);
}
// ** processors **
vColumnNames.clear();
vColumnNames.addAll(Arrays.asList(new String[] { "Name", "Type", "Description" }));
Vector<Vector<String>> vProcessorsData = new Vector<Vector<String>>();
ArrayList<HashMap<String, String>> processors = w.getComponents().get("processors");
if (processors != null) {
for (HashMap<String, String> curProcessor : processors) {
Vector<String> vCurData = new Vector<String>();
vCurData.add(curProcessor.get("name"));
vCurData.add(curProcessor.get("type"));
vCurData.add(curProcessor.get("description"));
vProcessorsData.add(vCurData);
}
}
JTable jtProcessors = new JTable(vProcessorsData, vColumnNames);
jtProcessors.getTableHeader().setFont(jtProcessors.getTableHeader().getFont().deriveFont(Font.BOLD));
JPanel jpProcessors = new JPanel();
jpProcessors.setLayout(new BorderLayout());
jpProcessors.add(jtProcessors.getTableHeader(), BorderLayout.NORTH);
jpProcessors.add(jtProcessors, BorderLayout.CENTER);
JPanel jpProcessorsWithTitle = new JPanel();
jpProcessorsWithTitle.setBorder(BorderFactory.createEtchedBorder());
jpProcessorsWithTitle.setLayout(new BorderLayout());
jpProcessorsWithTitle.add(new ShadedLabel("Services ("
+ vProcessorsData.size() + ")", ShadedLabel.BLUE, true), BorderLayout.NORTH);
if (vProcessorsData.size() > 0) {
jpProcessorsWithTitle.add(jpProcessors, BorderLayout.CENTER);
}
// ** links **
vColumnNames.clear();
vColumnNames.addAll(Arrays.asList(new String[] { "Source", "Sink" }));
Vector<Vector<String>> vLinksData = new Vector<Vector<String>>();
ArrayList<HashMap<String, String>> links = w.getComponents().get("links");
if (links != null) {
for (HashMap<String, String> curLink : links) {
Vector<String> vCurData = new Vector<String>();
vCurData.add(curLink.get("source"));
vCurData.add(curLink.get("sink"));
vLinksData.add(vCurData);
}
}
JTable jtLinks = new JTable(vLinksData, vColumnNames);
jtLinks.getColumnModel().getColumn(0).setPreferredWidth(100);
jtLinks.getTableHeader().setFont(jtLinks.getTableHeader().getFont().deriveFont(Font.BOLD));
JPanel jpLinks = new JPanel();
jpLinks.setLayout(new BorderLayout());
jpLinks.add(jtLinks.getTableHeader(), BorderLayout.NORTH);
jpLinks.add(jtLinks, BorderLayout.CENTER);
JPanel jpLinksWithTitle = new JPanel();
jpLinksWithTitle.setBorder(BorderFactory.createEtchedBorder());
jpLinksWithTitle.setLayout(new BorderLayout());
jpLinksWithTitle.add(new ShadedLabel("Links (" + vLinksData.size() + ")", ShadedLabel.BLUE, true), BorderLayout.NORTH);
if (vLinksData.size() > 0) {
jpLinksWithTitle.add(jpLinks, BorderLayout.CENTER);
}
// ** outputs **
vColumnNames.clear();
vColumnNames.addAll(Arrays.asList(new String[] { "Name", "Description" }));
Vector<Vector<String>> vOutputsData = new Vector<Vector<String>>();
ArrayList<HashMap<String, String>> outputs = w.getComponents().get("outputs");
if (outputs != null) {
for (HashMap<String, String> curOutput : outputs) {
Vector<String> vCurData = new Vector<String>();
vCurData.add(curOutput.get("name"));
vCurData.add(curOutput.get("description"));
vOutputsData.add(vCurData);
}
}
JTable jtOutputs = new JTable(vOutputsData, vColumnNames);
jtOutputs.getColumnModel().getColumn(0).setPreferredWidth(100);
jtOutputs.getTableHeader().setFont(jtOutputs.getTableHeader().getFont().deriveFont(Font.BOLD));
JPanel jpOutputs = new JPanel();
jpOutputs.setLayout(new BorderLayout());
jpOutputs.add(jtOutputs.getTableHeader(), BorderLayout.NORTH);
jpOutputs.add(jtOutputs, BorderLayout.CENTER);
JPanel jpOutputsWithTitle = new JPanel();
jpOutputsWithTitle.setBorder(BorderFactory.createEtchedBorder());
jpOutputsWithTitle.setLayout(new BorderLayout());
jpOutputsWithTitle.add(new ShadedLabel("Workflow output ports ("
+ vOutputsData.size() + ")", ShadedLabel.BLUE, true), BorderLayout.NORTH);
if (vOutputsData.size() > 0) {
jpOutputsWithTitle.add(jpOutputs, BorderLayout.CENTER);
}
// PUT EVERYTHING TOGETHER
jpWorkflowComponentsTabContent.setLayout(new GridBagLayout());
GridBagConstraints c = new GridBagConstraints();
c.gridx = 0;
c.gridy = GridBagConstraints.RELATIVE;
c.weightx = 1.0;
c.fill = GridBagConstraints.HORIZONTAL;
c.anchor = GridBagConstraints.NORTH;
jpWorkflowComponentsTabContent.add(jpInputsWithTitle, c);
c.insets = new Insets(10, 0, 0, 0);
jpWorkflowComponentsTabContent.add(jpProcessorsWithTitle, c);
jpWorkflowComponentsTabContent.add(jpLinksWithTitle, c);
c.weighty = 1.0; // ONLY FOR THE LAST ELEMENT
jpWorkflowComponentsTabContent.add(jpOutputsWithTitle, c);
}
return (wrapPreviewTabContentIntoScrollPane(jpWorkflowComponentsTabContent));
}