blob: 46c14beeb77c16b49b24c80275085b1eb85992a2 [file] [log] [blame]
/*******************************************************************************
* Copyright (C) 2010 Hajo Nils Krabbenhoeft, INB, University of Luebeck
*
* 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.activities.externaltool.views;
import java.awt.Frame;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;
import javax.swing.Action;
import net.sf.taverna.t2.activities.externaltool.ExternalToolActivity;
import net.sf.taverna.t2.activities.externaltool.ExternalToolActivityConfigurationBean;
import net.sf.taverna.t2.activities.externaltool.actions.ExternalToolActivityConfigureAction;
import net.sf.taverna.t2.activities.externaltool.servicedescriptions.ExternalToolActivityIcon;
import net.sf.taverna.t2.workbench.activityicons.ActivityIconManager;
import net.sf.taverna.t2.workbench.configuration.colour.ColourManager;
import net.sf.taverna.t2.workbench.edits.EditManager;
import net.sf.taverna.t2.workbench.file.FileManager;
import net.sf.taverna.t2.workbench.ui.actions.activity.HTMLBasedActivityContextualView;
import net.sf.taverna.t2.workflowmodel.processor.activity.Activity;
import de.uni_luebeck.inb.knowarc.usecases.ScriptInput;
import de.uni_luebeck.inb.knowarc.usecases.ScriptInputStatic;
import de.uni_luebeck.inb.knowarc.usecases.ScriptOutput;
import de.uni_luebeck.inb.knowarc.usecases.UseCaseDescription;
/**
* ExternalToolActivityContextualView displays the use case information in a HTML table. Currently,
* this is only the use case ID.
*
* @author Hajo Nils Krabbenhoeft
*/
public class ExternalToolActivityContextualView extends
HTMLBasedActivityContextualView<ExternalToolActivityConfigurationBean> {
private static final long serialVersionUID = 1L;
private final EditManager editManager;
private final FileManager fileManager;
private final ActivityIconManager activityIconManager;
public ExternalToolActivityContextualView(Activity<?> activity, EditManager editManager,
FileManager fileManager, ColourManager colourManager, ActivityIconManager activityIconManager) {
super(activity, colourManager);
this.editManager = editManager;
this.fileManager = fileManager;
this.activityIconManager = activityIconManager;
}
@Override
protected String getRawTableRowsHtml() {
String html = "";
ExternalToolActivityConfigurationBean bean = getConfigBean();
String repositoryUrl = bean.getRepositoryUrl();
if ((repositoryUrl == null) || repositoryUrl.isEmpty()) {
repositoryUrl = "<b>Not specified</b>";
}
html += "<tr><td>Repository URL</td><td>" + repositoryUrl + "</td></tr>";
String id = bean.getExternaltoolid();
if ((id == null) || id.isEmpty()) {
id = "<b>Not specified</b>";
}
html += "<tr><td>Id</td><td>" + id + "</td></tr>";
UseCaseDescription useCaseDescription = bean.getUseCaseDescription();
String name = useCaseDescription.getUsecaseid();
if ((name == null) || name.isEmpty()) {
name = "<b>Not specified</b>";
}
html += "<tr><td>Name</td><td>" + name + "</td></tr>";
Map<String, ScriptInput> stringReplacements = new TreeMap<String, ScriptInput>();
Map<String, ScriptInput> fileInputs = new TreeMap<String, ScriptInput>();
for (Entry<String, ScriptInput> entry : useCaseDescription.getInputs().entrySet()) {
String key = entry.getKey();
ScriptInput value = entry.getValue();
if (value.isFile()) {
fileInputs.put(key, value);
} else if (value.isTempFile()) {
// Nothing
} else {
stringReplacements.put(key, value);
}
}
if (!stringReplacements.isEmpty()) {
html += "<tr><td colspan=2 align=center><b>String replacements</b></td></tr>";
html += "<tr><td><b>Port name</b></td><td><b>Replaces</b></td></tr>";
for (String siName : stringReplacements.keySet()) {
html += "<tr><td>" + siName + "</td>";
ScriptInput si = stringReplacements.get(siName);
html += "<td>%%" + si.getTag() + "%%</td>";
html += "</tr>";
}
}
if (!fileInputs.isEmpty()) {
html += "<tr><td colspan=2 align=center><b>File inputs</b></td></tr>";
html += "<tr><td><b>Port name</b></td><td><b>To file</b></td></tr>";
for (String siName : fileInputs.keySet()) {
html += "<tr><td>" + siName + "</td>";
ScriptInput si = fileInputs.get(siName);
html += "<td>" + si.getTag() + "</td>";
html += "</tr>";
}
}
List<ScriptInputStatic> staticInputs = useCaseDescription.getStatic_inputs();
if (!staticInputs.isEmpty()) {
html += "<tr><td colspan=2 align=center><b>Static inputs</b></td></tr>";
html += "<tr><td><b>Type</b></td><td><b>To file</b></td></tr>";
for (ScriptInputStatic si : staticInputs) {
if (si.getUrl() != null) {
html += "<td><b>URL</b></td>";
} else {
html += "<td><b>Explicit content</b></td>";
}
if (si.isFile()) {
html += "<td>" + si.getTag() + "</td>";
}
html += "</tr>";
}
}
Map<String, ScriptOutput> outputs = useCaseDescription.getOutputs();
if (!outputs.isEmpty()) {
html += "<tr><td colspan=2 align=center><b>File outputs</b></td></tr>";
html += "<tr><td><b>Port name</b></td><td><b>From file</b></td></tr>";
for (String soName : outputs.keySet()) {
html += "<tr><td>" + soName + "</td>";
ScriptOutput so = outputs.get(soName);
html += "<td>" + so.getPath() + "</td>";
html += "</tr>";
}
}
return html;
}
@Override
public String getViewTitle() {
return "Tool service";
}
@Override
public Action getConfigureAction(final Frame owner) {
return new ExternalToolActivityConfigureAction((ExternalToolActivity) getActivity(), owner,
editManager, fileManager, activityIconManager);
}
public String getBackgroundColour() {
return ExternalToolActivityIcon.getColourString();
}
@Override
public int getPreferredPosition() {
return 100;
}
}