diff options
author | Bob Brodt | 2015-06-29 16:44:54 +0000 |
---|---|---|
committer | Bob Brodt | 2015-06-29 16:44:54 +0000 |
commit | 7d80b927613363a5ed6176497a921bd711a3ed99 (patch) | |
tree | 96dc10f81cb9eb5f7e2170b121d5b9320527ee66 | |
parent | 2280a0865c6acee2431fe1f376d4f33d54ff1805 (diff) | |
download | org.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.
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)) { |