blob: 4a638682fb25c0b81e9c1e12c9562153f5506388 [file] [log] [blame]
/**
*
*/
package net.sf.taverna.t2.workbench.ui.views.contextualviews.dataflow;
import static net.sf.taverna.t2.lang.ui.HtmlUtils.buildTableOpeningTag;
import static net.sf.taverna.t2.lang.ui.HtmlUtils.createEditorPane;
import static net.sf.taverna.t2.lang.ui.HtmlUtils.getHtmlHead;
import static net.sf.taverna.t2.lang.ui.HtmlUtils.panelForHtml;
import javax.swing.JComponent;
import javax.swing.JEditorPane;
import net.sf.taverna.t2.workbench.configuration.colour.ColourManager;
import net.sf.taverna.t2.workbench.file.FileManager;
import net.sf.taverna.t2.workbench.ui.views.contextualviews.ContextualView;
import net.sf.taverna.t2.workflowmodel.Dataflow;
import uk.org.taverna.scufl2.api.core.Workflow;
import uk.org.taverna.scufl2.api.port.InputWorkflowPort;
import uk.org.taverna.scufl2.api.port.OutputWorkflowPort;
/**
* @author alanrw
*/
@SuppressWarnings("serial")
class DataflowContextualView extends ContextualView {
private static int MAX_LENGTH = 50;
private static final String ELLIPSIS = "...";
private Workflow dataflow;
private JEditorPane editorPane;
private final FileManager fileManager;
private final ColourManager colourManager;
public DataflowContextualView(Workflow dataflow, FileManager fileManager,
ColourManager colourManager) {
this.dataflow = dataflow;
this.fileManager = fileManager;
this.colourManager = colourManager;
initView();
}
@Override
public JComponent getMainFrame() {
editorPane = createEditorPane(buildHtml());
return panelForHtml(editorPane);
}
private String buildHtml() {
StringBuilder html = new StringBuilder(getHtmlHead(getBackgroundColour()));
html.append(buildTableOpeningTag());
html.append("<tr><td colspan=\"2\" align=\"center\"><b>Source</b></td></tr>");
String source = "Newly created";
if (fileManager.getDataflowSource(dataflow.getParent()) != null)
source = fileManager.getDataflowName(dataflow.getParent());
html.append("<tr><td colspan=\"2\" align=\"center\">").append(source)
.append("</td></tr>");
if (!dataflow.getInputPorts().isEmpty()) {
html.append("<tr><th>Input Port Name</th><th>Depth</th></tr>");
for (InputWorkflowPort dip : dataflow.getInputPorts())
html.append("<tr><td>")
.append(dip.getName())
.append("</td><td>")
.append(dip.getDepth() < 0 ? "invalid/unpredicted"
: dip.getDepth()).append("</td></tr>");
}
if (!dataflow.getOutputPorts().isEmpty()) {
html.append("<tr><th>Output Port Name</th><th>Depth</th></tr>");
for (OutputWorkflowPort dop : dataflow.getOutputPorts())
html.append("<tr><td>")
.append(dop.getName())
.append("</td><td>")
.append(/*(dop.getDepth() < 0 ?*/ "invalid/unpredicted" /*: dop.getDepth())*/)
.append("</td>" + "</tr>");
}
return html.append("</table>").append("</body></html>").toString();
}
public String getBackgroundColour() {
return colourManager.getDefaultPropertyMap().get(
Dataflow.class.toString());
}
@Override
public int getPreferredPosition() {
return 100;
}
private String limitName(String fullName) {
if (fullName.length() <= MAX_LENGTH)
return fullName;
return fullName.substring(0, MAX_LENGTH - ELLIPSIS.length()) + ELLIPSIS;
}
@Override
public String getViewTitle() {
return "Workflow " + limitName(dataflow.getName());
}
@Override
public void refreshView() {
editorPane.setText(buildHtml());
repaint();
}
}