Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBob Brodt2015-06-29 16:44:54 +0000
committerBob Brodt2015-06-29 16:44:54 +0000
commit7d80b927613363a5ed6176497a921bd711a3ed99 (patch)
tree96dc10f81cb9eb5f7e2170b121d5b9320527ee66
parent2280a0865c6acee2431fe1f376d4f33d54ff1805 (diff)
downloadorg.eclipse.bpmn2-modeler-7d80b927613363a5ed6176497a921bd711a3ed99.tar.gz
org.eclipse.bpmn2-modeler-7d80b927613363a5ed6176497a921bd711a3ed99.tar.xz
org.eclipse.bpmn2-modeler-7d80b927613363a5ed6176497a921bd711a3ed99.zip
https://bugzilla.redhat.com/show_bug.cgi?id=1213445 - User can't specify
Interface for Service Task. Add ability to edit Interface name and implementation from ServiceTask, ReceiveTask and SendTask Operation editor.
-rw-r--r--plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/clad/DefaultDialogComposite.java8
-rw-r--r--plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/ComboObjectEditor.java2
-rw-r--r--plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/ObjectEditor.java13
-rw-r--r--plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/JBPM5RuntimeExtension.java4
-rw-r--r--plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/property/JbpmImportObjectEditor.java2
-rw-r--r--plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/property/JbpmOperationDetailComposite.java72
-rw-r--r--plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/properties/ServiceTaskPropertiesAdapter.java4
-rw-r--r--plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/data/InterfaceDetailComposite.java1
-rw-r--r--plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/data/OperationDetailComposite.java31
9 files changed, 130 insertions, 7 deletions
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/clad/DefaultDialogComposite.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/clad/DefaultDialogComposite.java
index 29ef1099..945a8099 100644
--- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/clad/DefaultDialogComposite.java
+++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/clad/DefaultDialogComposite.java
@@ -195,6 +195,7 @@ public class DefaultDialogComposite extends AbstractDialogComposite {
public void setData(String key, Object object) {
if ("factory".equals(key) && object instanceof IPropertiesCompositeFactory) //$NON-NLS-1$
compositeFactory = (IPropertiesCompositeFactory) object;
+ super.setData(key, object);
}
@Override
@@ -209,6 +210,13 @@ public class DefaultDialogComposite extends AbstractDialogComposite {
detail.setIsPopupDialog(true);
StructuredSelection selection = new StructuredSelection(businessObject);
EObject bo = section.getBusinessObjectForSelection(selection);
+ // Pass the container object along to the detail composites
+ // in case they need to display additional information
+ // depending on what type of referencing object created this
+ // feature editing dialog.
+ Object data = this.getData("container");
+ if (data!=null)
+ detail.setData("container",data);
detail.setBusinessObject(bo);
}
}
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/ComboObjectEditor.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/ComboObjectEditor.java
index c273a0ca..31fcf711 100644
--- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/ComboObjectEditor.java
+++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/ComboObjectEditor.java
@@ -155,6 +155,7 @@ public class ComboObjectEditor extends MultivalueObjectEditor {
createButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
buttonClicked(ID_CREATE_BUTTON);
+ fillCombo();
}
});
}
@@ -164,6 +165,7 @@ public class ComboObjectEditor extends MultivalueObjectEditor {
editButton.addSelectionListener(new SelectionAdapter() {
public void widgetSelected(SelectionEvent e) {
buttonClicked(ID_EDIT_BUTTON);
+ fillCombo();
}
});
editButton.setEnabled(canEdit());
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/ObjectEditor.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/ObjectEditor.java
index 28f100a0..067c23d0 100644
--- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/ObjectEditor.java
+++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/ObjectEditor.java
@@ -202,7 +202,18 @@ public abstract class ObjectEditor implements INotifyChangedListener {
}
protected FeatureEditingDialog createFeatureEditingDialog(EObject value) {
- return new FeatureEditingDialog(getDiagramEditor(), object, feature, value);
+ FeatureEditingDialog dialog = new FeatureEditingDialog(getDiagramEditor(), object, feature, value) {
+ public void aboutToOpen() {
+ // Pass the container object along to the dialog so that
+ // it can be set in its detail composites. This is used
+ // if a detail composite needs to display additional information
+ // depending on what type of referencing object created the
+ // feature editing dialog.
+ dialogContent.setData("container", object);
+ super.aboutToOpen();
+ }
+ };
+ return dialog;
}
/**
diff --git a/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/JBPM5RuntimeExtension.java b/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/JBPM5RuntimeExtension.java
index 284d0ae9..07a3c1a6 100644
--- a/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/JBPM5RuntimeExtension.java
+++ b/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/JBPM5RuntimeExtension.java
@@ -32,6 +32,7 @@ import org.eclipse.bpmn2.ItemDefinition;
import org.eclipse.bpmn2.ManualTask;
import org.eclipse.bpmn2.Message;
import org.eclipse.bpmn2.MultiInstanceLoopCharacteristics;
+import org.eclipse.bpmn2.Operation;
import org.eclipse.bpmn2.ReceiveTask;
import org.eclipse.bpmn2.ScriptTask;
import org.eclipse.bpmn2.SendTask;
@@ -50,7 +51,6 @@ import org.eclipse.bpmn2.modeler.core.utils.ModelUtil.Bpmn2DiagramType;
import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.features.JbpmCustomTaskFeatureContainer;
import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.drools.GlobalType;
import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.drools.ImportType;
-import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.drools.MetaDataType;
import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.property.JbpmActivityDetailComposite;
import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.property.JbpmCommonEventDetailComposite;
import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.property.JbpmDataAssociationDetailComposite;
@@ -65,6 +65,7 @@ import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.property.JbpmItemDefinition
import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.property.JbpmItemDefinitionListComposite;
import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.property.JbpmManualTaskDetailComposite;
import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.property.JbpmMultiInstanceDetailComposite;
+import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.property.JbpmOperationDetailComposite;
import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.property.JbpmReceiveTaskDetailComposite;
import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.property.JbpmScriptTaskDetailComposite;
import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.property.JbpmSendTaskDetailComposite;
@@ -154,6 +155,7 @@ public class JBPM5RuntimeExtension implements IBpmn2RuntimeExtension {
PropertiesCompositeFactory.register(Task.class, JbpmTaskDetailComposite.class);
PropertiesCompositeFactory.register(ItemDefinition.class, JbpmItemDefinitionDetailComposite.class);
PropertiesCompositeFactory.register(Interface.class, JbpmInterfaceDetailComposite.class);
+ PropertiesCompositeFactory.register(Operation.class, JbpmOperationDetailComposite.class);
PropertiesCompositeFactory.register(Expression.class, JbpmExpressionDetailComposite.class);
// TODO: if file was opened from a Guvnor Repository view (or git in jBPM 6)
diff --git a/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/property/JbpmImportObjectEditor.java b/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/property/JbpmImportObjectEditor.java
index a0c83c7a..28f6710f 100644
--- a/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/property/JbpmImportObjectEditor.java
+++ b/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/property/JbpmImportObjectEditor.java
@@ -23,8 +23,6 @@ import org.eclipse.emf.common.util.TreeIterator;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.jdt.core.IType;
-import org.eclipse.swt.widgets.Composite;
-import org.eclipse.swt.widgets.Control;
public class JbpmImportObjectEditor extends ComboObjectEditor {
diff --git a/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/property/JbpmOperationDetailComposite.java b/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/property/JbpmOperationDetailComposite.java
new file mode 100644
index 00000000..0525a915
--- /dev/null
+++ b/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/property/JbpmOperationDetailComposite.java
@@ -0,0 +1,72 @@
+package org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.property;
+
+import org.eclipse.bpmn2.Activity;
+import org.eclipse.bpmn2.Interface;
+import org.eclipse.bpmn2.Operation;
+import org.eclipse.bpmn2.modeler.core.adapters.ExtendedPropertiesProvider;
+import org.eclipse.bpmn2.modeler.core.merrimac.clad.AbstractBpmn2PropertySection;
+import org.eclipse.bpmn2.modeler.core.merrimac.clad.AbstractPropertiesProvider;
+import org.eclipse.bpmn2.modeler.core.merrimac.clad.DefaultDetailComposite;
+import org.eclipse.bpmn2.modeler.core.merrimac.dialogs.ObjectEditor;
+import org.eclipse.bpmn2.modeler.core.merrimac.dialogs.TextObjectEditor;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EReference;
+import org.eclipse.swt.widgets.Composite;
+
+public class JbpmOperationDetailComposite extends DefaultDetailComposite {
+
+ public JbpmOperationDetailComposite(Composite parent, int style) {
+ super(parent, style);
+ }
+
+ public JbpmOperationDetailComposite(AbstractBpmn2PropertySection section) {
+ super(section);
+ }
+
+ @Override
+ public AbstractPropertiesProvider getPropertiesProvider(EObject object) {
+ if (propertiesProvider==null) {
+ propertiesProvider = new AbstractPropertiesProvider(object) {
+ String[] properties = new String[] {
+ "name", //$NON-NLS-1$
+ "implementationRef", //$NON-NLS-1$
+ "inMessageRef", //$NON-NLS-1$
+ "outMessageRef", //$NON-NLS-1$
+ "errorRefs" //$NON-NLS-1$
+ };
+
+ @Override
+ public String[] getProperties() {
+ return properties;
+ }
+ };
+ }
+ return propertiesProvider;
+ }
+
+ @Override
+ public void createBindings(EObject be) {
+ Object data = getData("container");
+ if (data instanceof Activity) {
+ // If the container object is an Activity, we want to also display
+ // the Interface name and implementation.
+ Operation op = (Operation) be;
+ Interface iface = (Interface) op.eContainer();
+ if (isModelObjectEnabled(iface.eClass())) {
+ EAttribute name = PACKAGE.getInterface_Name();
+ EReference implementationRef = PACKAGE.getInterface_ImplementationRef();
+ Composite parent = getAttributesParent();
+
+ String displayName = "Interface"; ExtendedPropertiesProvider.getLabel(iface, name);
+ ObjectEditor editor = new TextObjectEditor(this,iface,name);
+ editor.createControl(parent,displayName);
+
+ displayName = ExtendedPropertiesProvider.getLabel(iface, implementationRef);
+ editor = new JbpmImportObjectEditor(this,iface,implementationRef);
+ editor.createControl(parent,displayName);
+ }
+ }
+ super.createBindings(be);
+ }
+}
diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/properties/ServiceTaskPropertiesAdapter.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/properties/ServiceTaskPropertiesAdapter.java
index 7df4f795..a30d69bc 100644
--- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/properties/ServiceTaskPropertiesAdapter.java
+++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/properties/ServiceTaskPropertiesAdapter.java
@@ -44,8 +44,8 @@ public class ServiceTaskPropertiesAdapter extends TaskPropertiesAdapter<ServiceT
super(adapterFactory, object);
EStructuralFeature feature = Bpmn2Package.eINSTANCE.getServiceTask_OperationRef();
- setProperty(feature, UI_CAN_CREATE_NEW, Boolean.TRUE);
- setProperty(feature, UI_CAN_EDIT, Boolean.TRUE);
+ setProperty(feature, UI_CAN_CREATE_NEW, Boolean.FALSE);
+ setProperty(feature, UI_CAN_EDIT, Boolean.FALSE);
setProperty(feature, UI_IS_MULTI_CHOICE, Boolean.TRUE);
setFeatureDescriptor(feature, new OperationRefFeatureDescriptor<ServiceTask>(this,object,feature) {
diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/data/InterfaceDetailComposite.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/data/InterfaceDetailComposite.java
index 8979b9c1..7dcb14c5 100644
--- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/data/InterfaceDetailComposite.java
+++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/data/InterfaceDetailComposite.java
@@ -71,7 +71,6 @@ public class InterfaceDetailComposite extends DefaultDetailComposite {
if (parent==null)
parent = getAttributesParent();
- final Interface iface = (Interface)object;
String displayName = ExtendedPropertiesProvider.getLabel(object, reference);
SchemaObjectEditor editor = new SchemaObjectEditor(this,object,reference);
diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/data/OperationDetailComposite.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/data/OperationDetailComposite.java
index 1f8f44e4..fa248b87 100644
--- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/data/OperationDetailComposite.java
+++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/data/OperationDetailComposite.java
@@ -13,12 +13,17 @@
package org.eclipse.bpmn2.modeler.ui.property.data;
+import org.eclipse.bpmn2.Activity;
+import org.eclipse.bpmn2.Interface;
import org.eclipse.bpmn2.Operation;
import org.eclipse.bpmn2.modeler.core.adapters.ExtendedPropertiesProvider;
import org.eclipse.bpmn2.modeler.core.merrimac.clad.AbstractBpmn2PropertySection;
import org.eclipse.bpmn2.modeler.core.merrimac.clad.AbstractPropertiesProvider;
import org.eclipse.bpmn2.modeler.core.merrimac.clad.DefaultDetailComposite;
+import org.eclipse.bpmn2.modeler.core.merrimac.dialogs.ObjectEditor;
+import org.eclipse.bpmn2.modeler.core.merrimac.dialogs.TextObjectEditor;
import org.eclipse.bpmn2.modeler.ui.property.editors.SchemaObjectEditor;
+import org.eclipse.emf.ecore.EAttribute;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.swt.widgets.Composite;
@@ -66,6 +71,32 @@ public class OperationDetailComposite extends DefaultDetailComposite {
}
@Override
+ public void createBindings(EObject be) {
+ Object data = getData("container");
+ if (data instanceof Activity) {
+ // If the container object is an Activity, we want to also display
+ // the Interface name and implementation.
+ Operation op = (Operation) be;
+ Interface iface = (Interface) op.eContainer();
+ if (isModelObjectEnabled(iface.eClass())) {
+ EAttribute name = PACKAGE.getInterface_Name();
+ EReference implementationRef = PACKAGE.getInterface_ImplementationRef();
+ Composite parent = getAttributesParent();
+
+ String displayName = ExtendedPropertiesProvider.getLabel(iface, name);
+ ObjectEditor editor = new TextObjectEditor(this,iface,name);
+ editor.createControl(parent,displayName);
+
+ displayName = ExtendedPropertiesProvider.getLabel(iface, implementationRef);
+ editor = new SchemaObjectEditor(this,iface,implementationRef);
+ editor.createControl(parent,displayName);
+ }
+ }
+
+ super.createBindings(be);
+ }
+
+ @Override
protected void bindReference(Composite parent, EObject object, EReference reference) {
if ("implementationRef".equals(reference.getName()) && //$NON-NLS-1$
isModelObjectEnabled(object.eClass(), reference)) {

Back to the top