Merge branch 'README' into ui-activities-1.5
diff --git a/pom.xml b/pom.xml
index 1325359..ec63c34 100644
--- a/pom.xml
+++ b/pom.xml
@@ -4,7 +4,7 @@
<parent>
<groupId>net.sf.taverna.t2</groupId>
<artifactId>ui-activities</artifactId>
- <version>1.3-SNAPSHOT</version>
+ <version>1.5</version>
</parent>
<groupId>net.sf.taverna.t2.ui-activities</groupId>
<artifactId>dataflow-activity-ui</artifactId>
@@ -47,7 +47,7 @@
</dependency> <dependency>
<groupId>javax.help</groupId>
<artifactId>javahelp</artifactId>
- <version>2.0.02</version>
+ <version>${javahelp.version}</version>
</dependency>
<!-- testing dependencies -->
diff --git a/src/main/java/net/sf/taverna/t2/activities/dataflow/actions/EditNestedDataflowAction.java b/src/main/java/net/sf/taverna/t2/activities/dataflow/actions/EditNestedDataflowAction.java
index cb13e83..d3be3da 100644
--- a/src/main/java/net/sf/taverna/t2/activities/dataflow/actions/EditNestedDataflowAction.java
+++ b/src/main/java/net/sf/taverna/t2/activities/dataflow/actions/EditNestedDataflowAction.java
@@ -10,11 +10,12 @@
import javax.swing.JOptionPane;
import net.sf.taverna.t2.activities.dataflow.DataflowActivity;
-import net.sf.taverna.t2.activities.dataflow.filemanager.NestedDataflowSource;
+import net.sf.taverna.t2.activities.dataflow.filemanager.NestedDataflowActivitySource;
import net.sf.taverna.t2.workbench.file.FileManager;
import net.sf.taverna.t2.workbench.file.exceptions.OpenException;
import net.sf.taverna.t2.workbench.file.impl.T2FlowFileType;
import net.sf.taverna.t2.workflowmodel.Dataflow;
+import net.sf.taverna.t2.workflowmodel.processor.activity.NestedDataflowSource;
import org.apache.log4j.Logger;
@@ -42,7 +43,7 @@
}
public void openNestedWorkflow(final Component parentComponent) {
- NestedDataflowSource nestedDataflowSource = new NestedDataflowSource(
+ NestedDataflowSource nestedDataflowSource = new NestedDataflowActivitySource(
getFileManager().getCurrentDataflow(), dataflowActivity);
Dataflow alreadyOpen = getFileManager()
diff --git a/src/main/java/net/sf/taverna/t2/activities/dataflow/filemanager/NestedDataflowSource.java b/src/main/java/net/sf/taverna/t2/activities/dataflow/filemanager/NestedDataflowActivitySource.java
similarity index 87%
rename from src/main/java/net/sf/taverna/t2/activities/dataflow/filemanager/NestedDataflowSource.java
rename to src/main/java/net/sf/taverna/t2/activities/dataflow/filemanager/NestedDataflowActivitySource.java
index 0d22aca..2985b88 100644
--- a/src/main/java/net/sf/taverna/t2/activities/dataflow/filemanager/NestedDataflowSource.java
+++ b/src/main/java/net/sf/taverna/t2/activities/dataflow/filemanager/NestedDataflowActivitySource.java
@@ -29,6 +29,7 @@
import net.sf.taverna.t2.workbench.file.FileManager;
import net.sf.taverna.t2.workflowmodel.Dataflow;
import net.sf.taverna.t2.workflowmodel.Processor;
+import net.sf.taverna.t2.workflowmodel.processor.activity.NestedDataflowSource;
import net.sf.taverna.t2.workflowmodel.utils.Tools;
/**
@@ -39,19 +40,19 @@
* @author Stian Soiland-Reyes
*
*/
-public class NestedDataflowSource {
+public class NestedDataflowActivitySource implements NestedDataflowSource<DataflowActivity> {
- private final DataflowActivity dataflowActivity;
+ public final DataflowActivity dataflowActivity;
- private final Dataflow parentDataflow;
+ public final Dataflow parentDataflow;
- public NestedDataflowSource(Dataflow parentDataflow,
+ public NestedDataflowActivitySource(Dataflow parentDataflow,
DataflowActivity dataflowActivity) {
this.parentDataflow = parentDataflow;
this.dataflowActivity = dataflowActivity;
}
- public DataflowActivity getDataflowActivity() {
+ public DataflowActivity getNestedDataflow() {
return dataflowActivity;
}
@@ -75,7 +76,7 @@
return false;
if (getClass() != obj.getClass())
return false;
- final NestedDataflowSource other = (NestedDataflowSource) obj;
+ final NestedDataflowActivitySource other = (NestedDataflowActivitySource) obj;
if (dataflowActivity == null) {
if (other.dataflowActivity != null)
return false;
@@ -99,7 +100,7 @@
//sb.append("Nested workflow");
Collection<Processor> processors = Tools.getProcessorsWithActivity(getParentDataflow(),
- getDataflowActivity());
+ getNestedDataflow());
if (! processors.isEmpty()) {
Processor processor = processors.iterator().next();
//sb.append(' ');
diff --git a/src/main/java/net/sf/taverna/t2/activities/dataflow/filemanager/NestedDataflowPersistenceHandler.java b/src/main/java/net/sf/taverna/t2/activities/dataflow/filemanager/NestedDataflowPersistenceHandler.java
index 1e83819..a920491 100644
--- a/src/main/java/net/sf/taverna/t2/activities/dataflow/filemanager/NestedDataflowPersistenceHandler.java
+++ b/src/main/java/net/sf/taverna/t2/activities/dataflow/filemanager/NestedDataflowPersistenceHandler.java
@@ -36,11 +36,13 @@
import net.sf.taverna.t2.workbench.file.impl.T2FlowFileType;
import net.sf.taverna.t2.workflowmodel.CompoundEdit;
import net.sf.taverna.t2.workflowmodel.Dataflow;
+import net.sf.taverna.t2.workflowmodel.DataflowValidationReport;
import net.sf.taverna.t2.workflowmodel.Edit;
import net.sf.taverna.t2.workflowmodel.EditException;
import net.sf.taverna.t2.workflowmodel.Edits;
import net.sf.taverna.t2.workflowmodel.Processor;
import net.sf.taverna.t2.workflowmodel.processor.activity.Activity;
+import net.sf.taverna.t2.workflowmodel.processor.activity.NestedDataflowSource;
import net.sf.taverna.t2.workflowmodel.serialization.DeserializationException;
import net.sf.taverna.t2.workflowmodel.serialization.SerializationException;
import net.sf.taverna.t2.workflowmodel.serialization.xml.XMLDeserializer;
@@ -52,7 +54,7 @@
/**
* Allow opening/saving of a nested workflow sourced from a
- * {@link DataflowActivity} - described by a {@link NestedDataflowSource}.
+ * {@link DataflowActivity} - described by a {@link NestedDataflowActivitySource}.
*
* @author Stian Soiland-Reyes
*
@@ -74,12 +76,12 @@
@Override
public List<Class<?>> getOpenSourceTypes() {
- return Arrays.<Class<?>> asList(NestedDataflowSource.class);
+ return Arrays.<Class<?>> asList(NestedDataflowActivitySource.class);
}
@Override
public List<Class<?>> getSaveDestinationTypes() {
- return Arrays.<Class<?>> asList(NestedDataflowSource.class);
+ return Arrays.<Class<?>> asList(NestedDataflowActivitySource.class);
}
@Override
@@ -95,13 +97,13 @@
throw new IllegalArgumentException("Unsupported file type "
+ fileType);
}
- if (!(source instanceof NestedDataflowSource)) {
+ if (!(source instanceof NestedDataflowActivitySource)) {
throw new IllegalArgumentException("Unsupported source " + source);
}
- NestedDataflowSource nestedDataflowSource = (NestedDataflowSource) source;
+ NestedDataflowActivitySource nestedDataflowSource = (NestedDataflowActivitySource) source;
DataflowActivity dataflowActivity = nestedDataflowSource
- .getDataflowActivity();
+ .getNestedDataflow();
Dataflow dataflow = dataflowActivity.getConfiguration();
if (dataflow == null) {
throw new OpenException("Workflow was null");
@@ -130,11 +132,15 @@
throw new IllegalArgumentException("Unsupported file type "
+ fileType);
}
- if (!(destination instanceof NestedDataflowSource)) {
+ if (!(destination instanceof NestedDataflowActivitySource)) {
throw new IllegalArgumentException("Unsupported source "
+ destination);
}
- NestedDataflowSource nestedDataflowDestination = (NestedDataflowSource) destination;
+
+ DataflowValidationReport dvr = dataflow.checkValidity();
+ // Saving an invalid dataflow is OK. Validity check is done to get predicted depth for output (if possible)
+
+ NestedDataflowActivitySource nestedDataflowDestination = (NestedDataflowActivitySource) destination;
Dataflow parentDataflow = nestedDataflowDestination.getParentDataflow();
if (! FileManager.getInstance().isDataflowOpen(parentDataflow)) {
throw new SaveException("Can't save to parent workflow, it's no longer open");
@@ -142,7 +148,7 @@
DataflowActivity dataflowActivity = nestedDataflowDestination
- .getDataflowActivity();
+ .getNestedDataflow();
Dataflow dataflowCopy;
try {
diff --git a/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/actions/ReplaceNestedWorkflowAction.java b/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/actions/ReplaceNestedWorkflowAction.java
index 69b9077..0542f31 100644
--- a/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/actions/ReplaceNestedWorkflowAction.java
+++ b/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/actions/ReplaceNestedWorkflowAction.java
@@ -2,6 +2,8 @@
import java.awt.Component;
import java.awt.event.ActionEvent;
+import java.util.ArrayList;
+import java.util.List;
import net.sf.taverna.t2.activities.dataflow.DataflowActivity;
import net.sf.taverna.t2.workbench.edits.EditManager;
@@ -9,9 +11,13 @@
import net.sf.taverna.t2.workbench.file.importworkflow.gui.ImportWorkflowWizard;
import net.sf.taverna.t2.workbench.ui.Utils;
import net.sf.taverna.t2.workbench.ui.actions.activity.ActivityConfigurationAction;
+import net.sf.taverna.t2.workflowmodel.CompoundEdit;
import net.sf.taverna.t2.workflowmodel.Dataflow;
import net.sf.taverna.t2.workflowmodel.Edit;
import net.sf.taverna.t2.workflowmodel.Edits;
+import net.sf.taverna.t2.workflowmodel.EditsRegistry;
+import net.sf.taverna.t2.workflowmodel.Processor;
+import net.sf.taverna.t2.workflowmodel.processor.activity.Activity;
public class ReplaceNestedWorkflowAction extends
ActivityConfigurationAction<DataflowActivity, Dataflow> {
@@ -40,8 +46,17 @@
@Override
protected Edit<?> makeInsertNestedWorkflowEdit(Dataflow nestedFlow,
String name) {
- return edits
- .getConfigureActivityEdit(getActivity(), nestedFlow);
+ Edits edits = EditsRegistry.getEdits();
+ Edit<?> configureActivityEdit = edits.getConfigureActivityEdit(getActivity(), nestedFlow);
+
+ List<Edit<?>> editList = new ArrayList<Edit<?>>();
+ editList.add(configureActivityEdit);
+ Processor p = findProcessor(fileManager.getCurrentDataflow(), getActivity());
+ if (p != null && p.getActivityList().size() == 1) {
+ editList.add(edits.getMapProcessorPortsForActivityEdit(p));
+ }
+
+ return new CompoundEdit(editList);
}
@Override
@@ -56,5 +71,15 @@
wizard.setDestinationEnabled(false);
wizard.setVisible(true);
}
+
+ protected static Processor findProcessor(Dataflow df, Activity activity) {
+ for (Processor processor : df.getProcessors()) {
+ if (processor.getActivityList().contains(activity))
+ return processor;
+ }
+ return null;
+ }
+
+
}
diff --git a/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/gui/ImportWorkflowWizard.java b/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/gui/ImportWorkflowWizard.java
index 34120a2..075a0ff 100644
--- a/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/gui/ImportWorkflowWizard.java
+++ b/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/gui/ImportWorkflowWizard.java
@@ -257,26 +257,23 @@
* @throws InterruptedException
*/
protected void updateWorkflowGraphic(final JSVGCanvas svgCanvas,
- Dataflow dataflow) {
- invokeAndWait(new Runnable() {
- public void run() {
- // Set it to blank while reloading
- svgCanvas.setSVGDocument(null);
- }
- });
- if (dataflow == null) {
- // Already set to blank
- return;
+ final Dataflow dataflow) {
+ try {
+ SwingUtilities.invokeAndWait(new Runnable() {
+ public void run() {
+ // Set it to blank while reloading
+ svgCanvas.setSVGDocument(null);
+ if (dataflow != null) {
+ SVGGraphController currentWfGraphController = new SVGGraphController(
+ dataflow, false, svgCanvas);
+ }
+ }
+ });
+ } catch (InterruptedException e) {
+// logger.error(e);
+ } catch (InvocationTargetException e) {
+// logger.error(e);
}
- SVGGraphController currentWfGraphController = new SVGGraphController(
- dataflow, false, svgCanvas);
- //final SVGDocument generateSVGDocument = currentWfGraphController
- // .getSVGDocument();
-// invokeAndWait(new Runnable() {
- // public void run() {
- // svgCanvas.setDocument(generateSVGDocument);
- // }
- //});
}
/**
@@ -512,6 +509,15 @@
gbc.gridy = 4;
gbc.fill = GridBagConstraints.NONE;
+ gbc.gridwidth = 1;
+ JButton cancelButton = new JButton(new AbstractAction("Cancel") {
+
+ @Override
+ public void actionPerformed(ActionEvent e) {
+ ImportWorkflowWizard.this.setVisible(false);
+ }});
+ j.add(cancelButton, gbc);
+ gbc.gridx = 1;
JButton comp = new JButton(new ImportWorkflowAction());
j.add(comp, gbc);
return j;
diff --git a/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/menu/AddNestedWorkflowMenuAction.java b/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/menu/AddNestedWorkflowMenuAction.java
index 66229fb..3551c7e 100644
--- a/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/menu/AddNestedWorkflowMenuAction.java
+++ b/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/menu/AddNestedWorkflowMenuAction.java
@@ -57,7 +57,7 @@
.getLogger(AddNestedWorkflowMenuAction.class);
public AddNestedWorkflowMenuAction() {
- super(InsertMenu.INSERT, 21, ADD_NESTED_WORKFLOW_URI);
+ super(InsertMenu.INSERT, 400, ADD_NESTED_WORKFLOW_URI);
}
@Override
diff --git a/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/menu/ImportWorkflowMenuAction.java b/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/menu/ImportWorkflowMenuAction.java
index 4dcee1c..aa4daab 100644
--- a/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/menu/ImportWorkflowMenuAction.java
+++ b/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/menu/ImportWorkflowMenuAction.java
@@ -48,7 +48,7 @@
.getLogger(ImportWorkflowMenuAction.class);
public ImportWorkflowMenuAction() {
- super(insertSection, 40);
+ super(insertSection, 400);
}
@Override
@@ -61,7 +61,7 @@
protected Action createAction() {
ImportWorkflowAction myAction = new ImportWorkflowAction();
// Just "Workflow" as we go under the "Insert" menu
- myAction.putValue(Action.NAME, "Workflow");
+ myAction.putValue(Action.NAME, "Nested workflow");
return myAction;
}
diff --git a/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/menu/MergeWorkflowMenuAction.java b/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/menu/MergeWorkflowMenuAction.java
index 611afc7..b34fcbf 100644
--- a/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/menu/MergeWorkflowMenuAction.java
+++ b/src/main/java/net/sf/taverna/t2/workbench/file/importworkflow/menu/MergeWorkflowMenuAction.java
@@ -16,7 +16,7 @@
.create("http://taverna.sf.net/2008/t2workbench/menu#insert");
public MergeWorkflowMenuAction() {
- super(INSERT_URI, 40, IMPORT_URI);
+ super(INSERT_URI, 2000, IMPORT_URI);
}
@Override
diff --git a/src/test/java/net/sf/taverna/t2/activities/dataflow/filemanager/TestNestedDataflowPersistenceHandler.java b/src/test/java/net/sf/taverna/t2/activities/dataflow/filemanager/TestNestedDataflowPersistenceHandler.java
index 732d421..b0b1c9e 100644
--- a/src/test/java/net/sf/taverna/t2/activities/dataflow/filemanager/TestNestedDataflowPersistenceHandler.java
+++ b/src/test/java/net/sf/taverna/t2/activities/dataflow/filemanager/TestNestedDataflowPersistenceHandler.java
@@ -44,6 +44,7 @@
import net.sf.taverna.t2.workflowmodel.EditException;
import net.sf.taverna.t2.workflowmodel.Edits;
import net.sf.taverna.t2.workflowmodel.Processor;
+import net.sf.taverna.t2.workflowmodel.processor.activity.NestedDataflowSource;
import org.junit.Before;
import org.junit.Test;
@@ -193,7 +194,7 @@
}
private Dataflow openNested() throws OpenException {
- NestedDataflowSource nestedDataflowSource = new NestedDataflowSource(
+ NestedDataflowSource nestedDataflowSource = new NestedDataflowActivitySource(
dataflow, nestedDataflowActivity);
Dataflow openedNested = fileManager.openDataflow(T2_FLOW_FILE_TYPE,
nestedDataflowSource);