Author: koen.aers(a)jboss.com
Date: 2009-05-04 06:06:51 -0400 (Mon, 04 May 2009)
New Revision: 14999
Added:
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/model/SubprocessTask.java
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/properties/SubprocessSection.java
Modified:
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/plugin.xml
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editor/JpdlDeserializer.java
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editor/JpdlPaletteFactory.java
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editor/JpdlSerializer.java
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/properties/JpdlPropertySection.java
Log:
subprocess support
Modified: trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/plugin.xml
===================================================================
--- trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/plugin.xml 2009-05-04 08:10:18 UTC (rev
14998)
+++ trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/plugin.xml 2009-05-04 10:06:51 UTC (rev
14999)
@@ -173,6 +173,16 @@
</node>
</element>
<element
+ class="org.jboss.tools.flow.jpdl4.model.SubprocessTask"
+ figure="icons/16/task_empty.png"
+ id="org.jboss.tools.flow.jpdl4.subprocessTask"
+ label="Subprocess"
+ language="org.jboss.tools.flow.jpdl4">
+ <node>
+ <figure
class="org.jboss.tools.flow.jpdl4.figure.TaskFigure"></figure>
+ </node>
+ </element>
+ <element
class="org.jboss.tools.flow.jpdl4.model.ExclusiveGateway"
figure="icons/16/gateway_exclusive.png"
id="org.jboss.tools.flow.jpdl4.exclusiveGateway"
@@ -276,6 +286,11 @@
category="general"
id="org.jboss.tools.jpdl4.assignment"
label="Assignment"/>
+ <propertyTab
+ afterTab="org.jboss.tools.jpdl4.general"
+ category="general"
+ id="org.jboss.tools.jpdl4.subprocess"
+ label="Subprocess"/>
<!-- <propertyTab
afterTab="org.jboss.tools.jpdl4.general"
category="details"
@@ -318,6 +333,12 @@
<input type="org.jboss.tools.flow.jpdl4.model.Timer"/>
</propertySection>
<propertySection
+ class="org.jboss.tools.flow.jpdl4.properties.SubprocessSection"
+ id="org.jboss.tools.jpdl4.subprocess"
+ tab="org.jboss.tools.jpdl4.subprocess">
+ <input
type="org.jboss.tools.flow.jpdl4.model.SubprocessTask"/>
+ </propertySection>
+ <propertySection
class="org.jboss.tools.flow.jpdl4.properties.EventTypeSection"
id="org.jboss.tools.jpdl4.eventType"
tab="org.jboss.tools.jpdl4.general">
Modified:
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editor/JpdlDeserializer.java
===================================================================
---
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editor/JpdlDeserializer.java 2009-05-04
08:10:18 UTC (rev 14998)
+++
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editor/JpdlDeserializer.java 2009-05-04
10:06:51 UTC (rev 14999)
@@ -23,6 +23,7 @@
import org.jboss.tools.flow.jpdl4.model.EventListener;
import org.jboss.tools.flow.jpdl4.model.EventListenerContainer;
import org.jboss.tools.flow.jpdl4.model.HumanTask;
+import org.jboss.tools.flow.jpdl4.model.SubprocessTask;
import org.jboss.tools.flow.jpdl4.model.Swimlane;
import org.jboss.tools.flow.jpdl4.model.Timer;
import org.w3c.dom.Document;
@@ -126,6 +127,27 @@
}
}
+ class SubprocessTaskAttributeHandler extends NodeAttributeHandler {
+ protected List<String> getAttributesToRead() {
+ List<String> result = super.getAttributesToRead();
+ result.add(SubprocessTask.ID);
+ result.add(SubprocessTask.KEY);
+ result.add(SubprocessTask.OUTCOME);
+ return result;
+ }
+ protected String getXmlName(String attributeName) {
+ if (SubprocessTask.ID.equals(attributeName)) {
+ return "sub-process-id";
+ } else if (SubprocessTask.KEY.equals(attributeName)) {
+ return "sub-process-key";
+ } else if (SubprocessTask.OUTCOME.equals(attributeName)) {
+ return "outcome";
+ } else {
+ return super.getXmlName(attributeName);
+ }
+ }
+ }
+
class EventListenerContainerAttributeHandler extends DefaultAttributeDeserializer {
protected List<String> getAttributesToRead() {
ArrayList<String> result = new ArrayList<String>();
@@ -360,6 +382,8 @@
Object element = wrapper.getElement();
if (element instanceof HumanTask) {
return new HumanTaskAttributeHandler();
+ } else if (element instanceof SubprocessTask) {
+ return new SubprocessTaskAttributeHandler();
} else {
return new NodeAttributeHandler();
}
@@ -396,6 +420,7 @@
else if ("script".equals(nodeName)) return
"org.jboss.tools.flow.jpdl4.scriptTask";
else if ("esb".equals(nodeName)) return
"org.jboss.tools.flow.jpdl4.serviceTask";
else if ("task".equals(nodeName)) return
"org.jboss.tools.flow.jpdl4.humanTask";
+ else if ("sub-process".equals(nodeName)) return
"org.jboss.tools.flow.jpdl4.subprocessTask";
else if ("exclusive".equals(nodeName)) return
"org.jboss.tools.flow.jpdl4.exclusiveGateway";
else if ("join".equals(nodeName)) return
"org.jboss.tools.flow.jpdl4.parallelJoinGateway";
else if ("fork".equals(nodeName)) return
"org.jboss.tools.flow.jpdl4.parallelForkGateway";
Modified:
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editor/JpdlPaletteFactory.java
===================================================================
---
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editor/JpdlPaletteFactory.java 2009-05-04
08:10:18 UTC (rev 14998)
+++
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editor/JpdlPaletteFactory.java 2009-05-04
10:06:51 UTC (rev 14999)
@@ -169,6 +169,15 @@
ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getEntry("icons/32/task_empty.png"))
);
entries.add(combined);
+ combined = new CombinedTemplateCreationEntry(
+ "subprocess",
+ "Create a new Subprocess",
+ "org.jboss.tools.flow.jpdl4.subprocess",
+
ElementRegistry.getCreationFactory("org.jboss.tools.flow.jpdl4.subprocessTask"),
+
ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getEntry("icons/16/task_empty.png")),
+
ImageDescriptor.createFromURL(Activator.getDefault().getBundle().getEntry("icons/32/task_empty.png"))
+ );
+ entries.add(combined);
return entries;
}
Modified:
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editor/JpdlSerializer.java
===================================================================
---
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editor/JpdlSerializer.java 2009-05-04
08:10:18 UTC (rev 14998)
+++
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/editor/JpdlSerializer.java 2009-05-04
10:06:51 UTC (rev 14999)
@@ -47,6 +47,7 @@
import org.jboss.tools.flow.jpdl4.model.ServiceTask;
import org.jboss.tools.flow.jpdl4.model.SqlTask;
import org.jboss.tools.flow.jpdl4.model.StartEvent;
+import org.jboss.tools.flow.jpdl4.model.SubprocessTask;
import org.jboss.tools.flow.jpdl4.model.SuperState;
import org.jboss.tools.flow.jpdl4.model.Swimlane;
import org.jboss.tools.flow.jpdl4.model.TerminateEndEvent;
@@ -188,6 +189,7 @@
else if ("org.jboss.tools.flow.jpdl4.scriptTask".equals(elementId)) return
"script";
else if ("org.jboss.tools.flow.jpdl4.serviceTask".equals(elementId)) return
"esb";
else if ("org.jboss.tools.flow.jpdl4.humanTask".equals(elementId)) return
"task";
+ else if ("org.jboss.tools.flow.jpdl4.subprocessTask".equals(elementId))
return "sub-process";
else if ("org.jboss.tools.flow.jpdl4.exclusiveGateway".equals(elementId))
return "exclusive";
else if ("org.jboss.tools.flow.jpdl4.parallelJoinGateway".equals(elementId))
return "join";
else if ("org.jboss.tools.flow.jpdl4.parallelForkGateway".equals(elementId))
return "fork";
@@ -393,6 +395,26 @@
}
}
+ class SubprocessTaskWrapperSerializer extends AbstractWrapperSerializer {
+ protected List<String> getAttributesToSave() {
+ ArrayList<String> result = new ArrayList<String>();
+ result.add("sub-process-id");
+ result.add("sub-process-key");
+ result.add("outcome");
+ return result;
+ }
+ protected String getPropertyName(String attributeName) {
+ if ("sub-process-id".equals(attributeName)) {
+ return SubprocessTask.ID;
+ } else if ("sub-process-key".equals(attributeName)) {
+ return SubprocessTask.KEY;
+ } else if ("outcome".equals(attributeName)) {
+ return SubprocessTask.OUTCOME;
+ }
+ return super.getPropertyName(attributeName);
+ }
+ }
+
class EventListenerContainerWrapperSerializer extends AbstractWrapperSerializer {
protected List<String> getAttributesToSave() {
ArrayList<String> result = new ArrayList<String>();
@@ -487,6 +509,8 @@
new ProcessNodeWrapperSerializer().appendOpening(buffer, wrapper, level);
} else if (element instanceof HumanTask) {
new HumanTaskSerializer().appendOpening(buffer, wrapper, level);
+ } else if (element instanceof SubprocessTask) {
+ new SubprocessTaskWrapperSerializer().appendOpening(buffer, wrapper, level);
} else if (element instanceof ExclusiveGateway) {
new ProcessNodeWrapperSerializer().appendOpening(buffer, wrapper, level);
} else if (element instanceof ForkParallelGateway) {
@@ -601,6 +625,8 @@
buffer.append("</esb>");
} else if (element instanceof HumanTask) {
buffer.append("</task>");
+ } else if (element instanceof HumanTask) {
+ buffer.append("</sub-process>");
} else if (element instanceof ExclusiveGateway) {
buffer.append("</exclusive>");
} else if (element instanceof ForkParallelGateway) {
Added:
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/model/SubprocessTask.java
===================================================================
---
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/model/SubprocessTask.java
(rev 0)
+++
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/model/SubprocessTask.java 2009-05-04
10:06:51 UTC (rev 14999)
@@ -0,0 +1,121 @@
+package org.jboss.tools.flow.jpdl4.model;
+
+import org.eclipse.ui.views.properties.IPropertyDescriptor;
+import org.eclipse.ui.views.properties.IPropertySource;
+import org.eclipse.ui.views.properties.TextPropertyDescriptor;
+import org.jboss.tools.flow.common.properties.IPropertyId;
+
+
+public class SubprocessTask extends Task {
+
+ public final static String ID =
"org.jboss.tools.flow.jpdl4.model.subprocess.id";
+ public final static String KEY =
"org.jboss.tools.flow.jpdl4.model.subprocess.key";
+ public final static String OUTCOME =
"org.jboss.tools.flow.jpdl4.model.subprocess.outcome";
+
+ private String subprocessId;
+ private String key;
+ private String outcome;
+
+ public SubprocessTask() {
+ setMetaData("propertySource", new PropertySource());
+ }
+
+ public String getSubprocessId() {
+ return subprocessId;
+ }
+
+ public void setSubprocessId(String id) {
+ this.subprocessId = id;
+ }
+
+ public String getKey() {
+ return key;
+ }
+
+ public void setKey(String key) {
+ this.key = key;
+ }
+
+ public String getOutcome() {
+ return outcome;
+ }
+
+ public void setOutcome(String outcome) {
+ this.outcome = outcome;
+ }
+
+ protected boolean isPropagationExclusive() {
+ return true;
+ }
+
+ private class PropertySource implements IPropertySource, IPropertyId {
+
+ private IPropertyDescriptor[] propertyDescriptors = new IPropertyDescriptor[] {
+ new TextPropertyDescriptor(ID, "Id") {
+ public String getCategory() {
+ return "General";
+ }
+ },
+ new TextPropertyDescriptor(KEY, "Key") {
+ public String getCategory() {
+ return "General";
+ }
+ },
+ new TextPropertyDescriptor(OUTCOME, "Outcome") {
+ public String getCategory() {
+ return "General";
+ }
+ }
+ };
+
+ public Object getEditableValue() {
+ return null;
+ }
+
+ public IPropertyDescriptor[] getPropertyDescriptors() {
+ return propertyDescriptors;
+ }
+
+ public Object getPropertyValue(Object id) {
+ if (ID.equals(id)) {
+ return getSubprocessId() != null ? getSubprocessId() : "";
+ } else if (KEY.equals(id)) {
+ return getKey() != null ? getKey() : "";
+ } else if (OUTCOME.equals(id)) {
+ return getOutcome() != null ? getOutcome() : "";
+ }
+ return null;
+ }
+
+ public boolean isPropertySet(Object id) {
+ if (ID.equals(id)) {
+ return getSubprocessId() != null;
+ } else if (KEY.equals(id)) {
+ return getKey() != null;
+ } else if (OUTCOME.equals(id)) {
+ return getOutcome() != null;
+ }
+ return false;
+ }
+
+ public void resetPropertyValue(Object id) {
+ }
+
+ public void setPropertyValue(Object id, Object value) {
+ if (ID.equals(id)) {
+ if (value == null || value instanceof String) {
+ setSubprocessId((String)value);
+ }
+ } else if (KEY.equals(id)) {
+ if (value == null || value instanceof String) {
+ setKey((String)value);
+ }
+ } else if (OUTCOME.equals(id)) {
+ if (value == null || value instanceof String) {
+ setOutcome((String)value);
+ }
+ }
+ }
+
+ }
+}
Property changes on:
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/model/SubprocessTask.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain
Modified:
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/properties/JpdlPropertySection.java
===================================================================
---
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/properties/JpdlPropertySection.java 2009-05-04
08:10:18 UTC (rev 14998)
+++
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/properties/JpdlPropertySection.java 2009-05-04
10:06:51 UTC (rev 14999)
@@ -73,7 +73,7 @@
changePropertyCommand.setPropertyId(propertyId);
changePropertyCommand.setTarget(input);
changePropertyCommand.setNewValue(newValue);
- commandStack.execute(changePropertyCommand);
+ commandStack.execute(changePropertyCommand);
}
public void aboutToBeShown() {
Added:
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/properties/SubprocessSection.java
===================================================================
---
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/properties/SubprocessSection.java
(rev 0)
+++
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/properties/SubprocessSection.java 2009-05-04
10:06:51 UTC (rev 14999)
@@ -0,0 +1,130 @@
+package org.jboss.tools.flow.jpdl4.properties;
+
+import org.eclipse.gef.commands.CommandStack;
+import org.eclipse.swt.SWT;
+import org.eclipse.swt.custom.CLabel;
+import org.eclipse.swt.events.ModifyEvent;
+import org.eclipse.swt.events.ModifyListener;
+import org.eclipse.swt.layout.FormAttachment;
+import org.eclipse.swt.layout.FormData;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Text;
+import org.eclipse.ui.views.properties.IPropertySource;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+import org.jboss.tools.flow.jpdl4.model.SubprocessTask;
+
+public class SubprocessSection extends JpdlPropertySection {
+
+ private Text idText;
+ private CLabel idLabel;
+ private Text keyText;
+ private CLabel keyLabel;
+ private Text outcomeText;
+ private CLabel outcomeLabel;
+
+ private ModifyListener textModifyListener = new ModifyListener() {
+ public void modifyText(ModifyEvent event) {
+ IPropertySource input = getInput();
+ CommandStack commandStack = getCommandStack();
+ if (input == null || commandStack == null) return;
+ if (idText == event.getSource()) {
+ changeProperty(SubprocessTask.ID, getValueNullsAllowed(idText.getText()));
+ } else if (keyText == event.getSource()) {
+ changeProperty(SubprocessTask.KEY, getValueNullsAllowed(keyText.getText()));
+ } else if (outcomeText == event.getSource()) {
+ changeProperty(SubprocessTask.OUTCOME, getValueNullsAllowed(outcomeText.getText()));
+ }
+ }
+ };
+
+ public void createControls(Composite parent,
+ TabbedPropertySheetPage aTabbedPropertySheetPage) {
+ super.createControls(parent, aTabbedPropertySheetPage);
+ Composite composite = getFlatFormComposite();
+ createIdLabel(composite);
+ createIdText(composite);
+ createKeyLabel(composite);
+ createKeyText(composite);
+ createOutcomeLabel(composite);
+ createOutcomeText(composite);
+ }
+
+
+ private void createIdLabel(Composite parent) {
+ idLabel = getWidgetFactory().createCLabel(parent, "Id ");
+ FormData data = new FormData();
+ data.left = new FormAttachment(0, 0);
+ data.top = new FormAttachment(0, 5);
+ idLabel.setLayoutData(data);
+ }
+
+ private void createIdText(Composite parent) {
+ idText = getWidgetFactory().createText(parent, "");
+ FormData data = new FormData();
+ data.top = new FormAttachment(0, 0);
+ data.left = new FormAttachment(idLabel, 0, SWT.RIGHT);
+ data.right = new FormAttachment(100, 0);
+ idText.setLayoutData(data);
+ }
+
+ private void createKeyLabel(Composite parent) {
+ keyLabel = getWidgetFactory().createCLabel(parent, "Key");
+ FormData data = new FormData();
+ data.left = new FormAttachment(0, 0);
+ data.top = new FormAttachment(idText, 5);
+ keyLabel.setLayoutData(data);
+ }
+
+ private void createKeyText(Composite parent) {
+ keyText = getWidgetFactory().createText(parent, "");
+ FormData data = new FormData();
+ data.top = new FormAttachment(idText, 0);
+ data.left = new FormAttachment(idLabel, 0, SWT.RIGHT);
+ data.right = new FormAttachment(100, 0);
+ keyText.setLayoutData(data);
+ }
+
+ private void createOutcomeLabel(Composite parent) {
+ outcomeLabel = getWidgetFactory().createCLabel(parent, "Outcome");
+ FormData data = new FormData();
+ data.left = new FormAttachment(0, 0);
+ data.top = new FormAttachment(keyText, 5);
+ outcomeLabel.setLayoutData(data);
+ }
+
+ private void createOutcomeText(Composite parent) {
+ outcomeText = getWidgetFactory().createText(parent, "");
+ FormData data = new FormData();
+ data.top = new FormAttachment(keyText, 0);
+ data.left = new FormAttachment(idLabel, 0, SWT.RIGHT);
+ data.right = new FormAttachment(100, 0);
+ outcomeText.setLayoutData(data);
+ }
+
+ protected void hookListeners() {
+ idText.addModifyListener(textModifyListener);
+ keyText.addModifyListener(textModifyListener);
+ outcomeText.addModifyListener(textModifyListener);
+ }
+
+ protected void unhookListeners() {
+ idText.removeModifyListener(textModifyListener);
+ keyText.removeModifyListener(textModifyListener);
+ outcomeText.removeModifyListener(textModifyListener);
+ }
+
+ protected void updateValues() {
+ IPropertySource input = getInput();
+ if (input != null) {
+ idText.setText(getValueNotNull((String)input.getPropertyValue(SubprocessTask.ID)));
+ keyText.setText(getValueNotNull((String)input.getPropertyValue(SubprocessTask.KEY)));
+ outcomeText.setText(getValueNotNull((String)input.getPropertyValue(SubprocessTask.OUTCOME)));
+ } else {
+ idText.setText("");
+ keyText.setText("");
+ outcomeText.setText("");
+ }
+ }
+
+
+}
Property changes on:
trunk/jbpm/plugins/org.jboss.tools.flow.jpdl4/src/org/jboss/tools/flow/jpdl4/properties/SubprocessSection.java
___________________________________________________________________
Name: svn:mime-type
+ text/plain