in taverna-external-tool-activity-ui/src/main/java/org/apache/taverna/activities/externaltool/views/FilePanel.java [50:122]
public FilePanel(final ExternalToolConfigView view,
final List<ExternalToolFileViewer> viewList,
String fileHeader, String typeHeader, final String portPrefix,
final String description, String addText) {
super();
this.view = view;
this.setLayout(new BorderLayout());
final JPanel fileEditPanel = new JPanel(new GridBagLayout());
final GridBagConstraints fileConstraint = new GridBagConstraints();
fileConstraint.insets = new Insets(5, 5, 5, 5);
fileConstraint.anchor = GridBagConstraints.FIRST_LINE_START;
fileConstraint.gridx = 0;
fileConstraint.gridy = 0;
fileConstraint.weightx = 0.1;
fileConstraint.fill = GridBagConstraints.BOTH;
final String[] elementLabels = new String[] {"Taverna port name",
"Use port name for file",
fileHeader,
typeHeader
};
fileConstraint.gridx = 0;
synchronized (viewList) {
for (ExternalToolFileViewer outputView : viewList) {
addFileViewer(viewList, this, fileEditPanel,
outputView, elementLabels);
}
}
JButton addFilePortButton = new DeselectingButton(addText,
new AbstractAction() {
public void actionPerformed(ActionEvent e) {
int portNumber = 1;
String name2 = portPrefix + portNumber++;
boolean nameExists = true;
while (nameExists == true) {
nameExists = view.portNameExists(name2);
if (nameExists) {
name2 = portPrefix + portNumber++;
}
}
ExternalToolFileViewer newViewer = new ExternalToolFileViewer(
name2);
synchronized (viewList) {
viewList.add(newViewer);
addFileViewer(viewList, FilePanel.this, fileEditPanel,
newViewer, elementLabels);
fileEditPanel.revalidate();
fileEditPanel.repaint();
}
}
});
JTextArea descriptionText = new ReadOnlyTextArea(description);
descriptionText.setEditable(false);
descriptionText.setFocusable(false);
descriptionText.setBorder(new EmptyBorder(5, 5, 10, 5));
this.add(descriptionText, BorderLayout.NORTH);
this.add(new JScrollPane(fileEditPanel), BorderLayout.CENTER);
JPanel buttonPanel = new JPanel(new BorderLayout());
buttonPanel.add(addFilePortButton, BorderLayout.EAST);
this.add(buttonPanel, BorderLayout.SOUTH);
}