Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBob Brodt2014-02-05 19:38:27 +0000
committerBob Brodt2014-02-05 19:38:27 +0000
commit4a8d06e1cbf88d666a430e2c914a7100522f7b80 (patch)
treed0dd738e800aa2e816a5c945adf085630a1040c5
parent3d953efb6f62a9c2dba23c822ee784bf9b40dc4d (diff)
downloadorg.eclipse.bpmn2-modeler-4a8d06e1cbf88d666a430e2c914a7100522f7b80.tar.gz
org.eclipse.bpmn2-modeler-4a8d06e1cbf88d666a430e2c914a7100522f7b80.tar.xz
org.eclipse.bpmn2-modeler-4a8d06e1cbf88d666a430e2c914a7100522f7b80.zip
Bug 427406 - Add support for EndPoint objects and define extensions.
EndPoints not yet supported, but fixed some related issues. Also fixed property tabs for collaboration diagrams.
-rw-r--r--org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/model/Bpmn2ModelerResourceImpl.java12
-rw-r--r--org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/model/RootElementComparator.java44
-rw-r--r--org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/preferences/ModelEnablements.java11
-rw-r--r--org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/utils/ModelUtil.java15
-rw-r--r--org.eclipse.bpmn2.modeler.ui/plugin.xml25
-rw-r--r--org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/DefaultBpmn2RuntimeExtension.java5
-rw-r--r--org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2Editor.java11
-rw-r--r--org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/data/InterfacePropertySection.java9
-rw-r--r--org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/diagrams/DataItemsDetailComposite.java18
-rw-r--r--org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/diagrams/DataItemsPropertySection.java15
-rw-r--r--org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/diagrams/DefinitionsPropertyComposite.java145
-rw-r--r--org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/diagrams/ParticipantDetailComposite.java14
-rw-r--r--org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/diagrams/ProcessDiagramPropertySection.java9
13 files changed, 221 insertions, 112 deletions
diff --git a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/model/Bpmn2ModelerResourceImpl.java b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/model/Bpmn2ModelerResourceImpl.java
index 69393896..924f30e3 100644
--- a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/model/Bpmn2ModelerResourceImpl.java
+++ b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/model/Bpmn2ModelerResourceImpl.java
@@ -1162,14 +1162,15 @@ public class Bpmn2ModelerResourceImpl extends Bpmn2ResourceImpl {
isTargetNamespacePrefix = xmlHelper.isTargetNamespace(prefix);
} catch (Exception e) {
}
+
+ String uriString = xmlHelper.getPathForPrefix(prefix).appendFragment(fragment).toString();
+
if (!isTargetNamespacePrefix) {
- EObject o;
- String uriString = xmlHelper.getPathForPrefix(prefix).appendFragment(fragment).toString();
URI uri = URI.createURI(uriString);
ResourceSet rs = ModelUtil.slightlyHackedResourceSet(xmlHelper.getResource().getResourceSet());
Resource r = ((Bpmn2ModelerResourceSetImpl)rs).getResource(uri, true, "wsdl"); // the only problem here... //$NON-NLS-1$
if (r instanceof WSDLResourceImpl) {
- o = r.getContents().get(0);
+ EObject o = r.getContents().get(0);
Definition def = (Definition)o;
// if eReference -- operation.implementationref
// search all of these:
@@ -1182,8 +1183,9 @@ public class Bpmn2ModelerResourceImpl extends Bpmn2ResourceImpl {
}
return xmlHelper.getPathForPrefix(prefix).appendFragment(fragment).toString();
}
- else
- return baseURI.appendFragment(fragment).toString();
+ else {
+ return uriString;
+ }
}
}
diff --git a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/model/RootElementComparator.java b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/model/RootElementComparator.java
index 4ec7c92c..21d74a5b 100644
--- a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/model/RootElementComparator.java
+++ b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/model/RootElementComparator.java
@@ -12,18 +12,40 @@ package org.eclipse.bpmn2.modeler.core.model;
import java.util.Comparator;
+import org.eclipse.bpmn2.Category;
+import org.eclipse.bpmn2.CorrelationProperty;
import org.eclipse.bpmn2.DataStore;
+import org.eclipse.bpmn2.EndPoint;
import org.eclipse.bpmn2.Error;
import org.eclipse.bpmn2.Escalation;
import org.eclipse.bpmn2.EventDefinition;
import org.eclipse.bpmn2.Interface;
import org.eclipse.bpmn2.ItemDefinition;
import org.eclipse.bpmn2.Message;
+import org.eclipse.bpmn2.PartnerEntity;
+import org.eclipse.bpmn2.PartnerRole;
import org.eclipse.bpmn2.Resource;
import org.eclipse.bpmn2.RootElement;
import org.eclipse.bpmn2.Signal;
public final class RootElementComparator implements Comparator<RootElement> {
+ private static Class[] elements = new Class[] {
+ ItemDefinition.class,
+ Error.class,
+ Signal.class,
+ Escalation.class,
+ Resource.class,
+ Message.class,
+ EventDefinition.class,
+ DataStore.class,
+ EndPoint.class,
+ Interface.class,
+ Category.class,
+ CorrelationProperty.class,
+ PartnerRole.class,
+ PartnerEntity.class,
+ };
+
@Override
public int compare(RootElement a, RootElement b) {
int aOrder = getOrder(a);
@@ -32,24 +54,10 @@ public final class RootElementComparator implements Comparator<RootElement> {
}
private int getOrder(RootElement element) {
- if (element instanceof ItemDefinition)
- return 0;
- if (element instanceof Error)
- return 1;
- if (element instanceof Signal)
- return 2;
- if (element instanceof Escalation)
- return 3;
- if (element instanceof Resource)
- return 4;
- if (element instanceof Message)
- return 5;
- if (element instanceof EventDefinition)
- return 6;
- if (element instanceof DataStore)
- return 7;
- if (element instanceof Interface)
- return 8;
+ for (int i=0; i<elements.length; ++i) {
+ if (element.eClass().getInstanceClass() == elements[i])
+ return i;
+ }
return Integer.MAX_VALUE;
}
diff --git a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/preferences/ModelEnablements.java b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/preferences/ModelEnablements.java
index aa617637..e4ec3910 100644
--- a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/preferences/ModelEnablements.java
+++ b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/preferences/ModelEnablements.java
@@ -27,8 +27,8 @@ public class ModelEnablements {
// Map of enabled EClasses and their enabled Features
private Hashtable<String, HashSet<String>> classes = new Hashtable<String, HashSet<String>>();
private TargetRuntime targetRuntime = null;
- private Bpmn2DiagramType diagramType;
- private String profile;
+ private Bpmn2DiagramType diagramType = Bpmn2DiagramType.NONE;
+ private String profile = "";
private int enableIdAttribute = -1;
// require a TargetRuntime!
@@ -452,4 +452,11 @@ public class ModelEnablements {
return classList;
}
+ public Bpmn2DiagramType getDiagramType() {
+ return diagramType;
+ }
+
+ public String getProfile() {
+ return profile;
+ }
}
diff --git a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/utils/ModelUtil.java b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/utils/ModelUtil.java
index 000eab22..f7aafea7 100644
--- a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/utils/ModelUtil.java
+++ b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/utils/ModelUtil.java
@@ -22,6 +22,7 @@ import java.util.Map;
import org.eclipse.bpmn2.AdHocSubProcess;
import org.eclipse.bpmn2.BaseElement;
+import org.eclipse.bpmn2.Bpmn2Factory;
import org.eclipse.bpmn2.Bpmn2Package;
import org.eclipse.bpmn2.Choreography;
import org.eclipse.bpmn2.ChoreographyActivity;
@@ -49,6 +50,7 @@ import org.eclipse.bpmn2.modeler.core.adapters.INamespaceMap;
import org.eclipse.bpmn2.modeler.core.adapters.InsertionAdapter;
import org.eclipse.bpmn2.modeler.core.model.Bpmn2ModelerFactory;
import org.eclipse.bpmn2.modeler.core.model.Bpmn2ModelerResourceSetImpl;
+import org.eclipse.bpmn2.modeler.core.runtime.TargetRuntime;
import org.eclipse.bpmn2.util.Bpmn2Resource;
import org.eclipse.core.runtime.Assert;
import org.eclipse.dd.dc.DcPackage;
@@ -714,7 +716,14 @@ public class ModelUtil {
@SuppressWarnings("unchecked")
public static EStructuralFeature addAnyAttribute(EObject childObject, String namespace, String name, String type, Object value) {
EStructuralFeature attr = null;
- EStructuralFeature anyAttribute = childObject.eClass().getEStructuralFeature(Bpmn2Package.BASE_ELEMENT__ANY_ATTRIBUTE);
+ EClass eclass = null;
+ if (childObject instanceof EClass) {
+ eclass = (EClass)childObject;
+ childObject = ExtendedPropertiesAdapter.getDummyObject(eclass);
+ }
+ else
+ eclass = childObject.eClass();
+ EStructuralFeature anyAttribute = eclass.getEStructuralFeature(Bpmn2Package.BASE_ELEMENT__ANY_ATTRIBUTE);
List<BasicFeatureMap.Entry> anyMap = (List<BasicFeatureMap.Entry>)childObject.eGet(anyAttribute);
if (anyMap==null)
return null;
@@ -771,6 +780,10 @@ public class ModelUtil {
public static EAttribute createDynamicAttribute(EPackage pkg, EObject object, String name, String type) {
if (isBpmnPackage(pkg)) {
+ String namespace = TargetRuntime.getDefaultRuntime().getRuntimeExtension().getTargetNamespace(Bpmn2DiagramType.NONE);
+ EStructuralFeature feature = ModelUtil.addAnyAttribute(object, namespace, name, type, null);
+ if (feature instanceof EAttribute)
+ return (EAttribute) feature;
throw new IllegalArgumentException(NLS.bind(Messages.ModelUtil_Illegal_EPackage_For_Attribute, pkg.getName()));
}
EClass eClass = object instanceof EClass ? (EClass)object : object.eClass();
diff --git a/org.eclipse.bpmn2.modeler.ui/plugin.xml b/org.eclipse.bpmn2.modeler.ui/plugin.xml
index be33abe6..46a57f3a 100644
--- a/org.eclipse.bpmn2.modeler.ui/plugin.xml
+++ b/org.eclipse.bpmn2.modeler.ui/plugin.xml
@@ -32,14 +32,21 @@
</extension>
<extension point="org.eclipse.core.contenttype.contentTypes">
- <content-type base-type="org.eclipse.core.runtime.xml"
+ <content-type
+ base-type="org.eclipse.core.runtime.xml"
id="org.eclipse.bpmn2.content-type.xml"
name="%content-type.name"
file-extensions="bpmn,bpmn2,bpmn20,xml"
- priority="normal">
- <describer class="org.eclipse.bpmn2.modeler.ui.BPMN2ContentDescriber">
+ priority="high">
+ <describer
+ class="org.eclipse.bpmn2.modeler.ui.BPMN2ContentDescriber"
+ plugin="org.eclipse.bpmn2.modeler.ui">
</describer>
</content-type>
+ <file-association
+ content-type="org.eclipse.bpmn2.content-type.xml"
+ file-extensions="bpmn,bpmn2">
+ </file-association>
</extension>
<extension
@@ -152,16 +159,13 @@
<!-- ========= Default EndPoint Ext ========= -->
<!-- ======================================== -->
- <!-- TODO: how do we handle this?
<modelExtension
id="org.eclipse.bpmn2.modeler.runtime.none.modelExtension.endpoint"
runtimeId="org.eclipse.bpmn2.modeler.runtime.none"
name="Default EndPoint Extension"
type="EndPoint">
- <property name="name" type="EString"/>
- <property name="value" type="WSDLElement"/>
+ <property name="serviceAddress" type="EString"/>
</modelExtension>
- -->
<!-- ======================================== -->
<!-- ============ Property Tabs ============ -->
@@ -558,7 +562,7 @@
id="org.eclipse.bpmn2.modeler.interface.tab"
afterTab="org.eclipse.bpmn2.modeler.process.diagram.tab"
class="org.eclipse.bpmn2.modeler.ui.property.data.InterfacePropertySection"
- type="org.eclipse.bpmn2.di.BPMNDiagram org.eclipse.bpmn2.Process"
+ type="org.eclipse.bpmn2.di.BPMNDiagram org.eclipse.bpmn2.Process org.eclipse.bpmn2.Participant"
label="%propertyTab.label.41">
</propertyTab>
@@ -987,7 +991,7 @@
<enable object="Assignment"/>
<enable object="FormalExpression"/>
<disable object="FormalExpression" feature="evaluatesToTypeRef"/>
- <enable object="EndPoint"/>
+<!-- <enable object="EndPoint" feature="serviceAddress"/> -->
</modelEnablement>
<modelEnablement
@@ -1022,13 +1026,11 @@
<!-- and then add these objects -->
<enable object="Collaboration"/>
<enable object="Participant"/>
- <enable object="Lane"/>
<enable object="MessageFlow"/>
<enable object="Conversation"/>
<enable object="SubConversation"/>
<enable object="CallConversation"/>
<enable object="ConversationLink"/>
- <enable object="EndPoint"/>
</modelEnablement>
<modelEnablement
@@ -1088,7 +1090,6 @@
<disable object="ConversationNode"/>
<disable object="ExtensionAttributeDefinition"/>
<disable object="MessageFlowAssociation"/>
- <enable object="EndPoint"/>
</modelEnablement>
<style object="AdHocSubProcess" foreground="546778" background="D4E7F8" textColor="546778" font="arial,10,-,-"/>
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/DefaultBpmn2RuntimeExtension.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/DefaultBpmn2RuntimeExtension.java
index 0f21b9da..3e84badb 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/DefaultBpmn2RuntimeExtension.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/DefaultBpmn2RuntimeExtension.java
@@ -30,7 +30,7 @@ import org.xml.sax.InputSource;
public class DefaultBpmn2RuntimeExtension implements IBpmn2RuntimeExtension {
- private static final String targetNamespace = "http://sample.bpmn2.org/bpmn2/sample"; //$NON-NLS-1$
+ private static final String targetNamespace = "http://org.eclipse.bpmn2/default"; //$NON-NLS-1$
private static final String[] typeLanguages = new String[] {
"http://www.w3.org/2001/XMLSchema", "XML Schema", //$NON-NLS-1$ //$NON-NLS-2$
};
@@ -59,6 +59,9 @@ public class DefaultBpmn2RuntimeExtension implements IBpmn2RuntimeExtension {
case CHOREOGRAPHY:
type = "/choreography"; //$NON-NLS-1$
break;
+ default:
+ type = "/ext"; //$NON-NLS-1$
+ break;
}
return targetNamespace + type;
}
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2Editor.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2Editor.java
index 46256a5e..f8737c84 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2Editor.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2Editor.java
@@ -612,9 +612,16 @@ public class BPMN2Editor extends DiagramEditor implements IPreferenceChangeListe
}
public ModelEnablements getModelEnablements() {
+ Bpmn2DiagramType diagramType = ModelUtil.getDiagramType(bpmnDiagram);
+ String profile = getPreferences().getDefaultToolProfile(getTargetRuntime(), diagramType);
+ if (modelEnablements!=null) {
+ if ( !modelEnablements.getProfile().equals(profile) ||
+ !modelEnablements.getDiagramType().equals(diagramType)) {
+ modelEnablements = null;
+ }
+
+ }
if (modelEnablements==null) {
- Bpmn2DiagramType diagramType = ModelUtil.getDiagramType(bpmnDiagram);
- String profile = getPreferences().getDefaultToolProfile(getTargetRuntime(), diagramType);
modelEnablements = getPreferences().getModelEnablements(getTargetRuntime(), diagramType, profile);
if (modelEnablements.size()==0) {
// This Target Runtime doesn't define a profile for the current diagram type,
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/data/InterfacePropertySection.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/data/InterfacePropertySection.java
index f6756c02..b869c63b 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/data/InterfacePropertySection.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/data/InterfacePropertySection.java
@@ -17,6 +17,7 @@ import java.util.List;
import org.eclipse.bpmn2.BaseElement;
import org.eclipse.bpmn2.Bpmn2Package;
import org.eclipse.bpmn2.CallableElement;
+import org.eclipse.bpmn2.Collaboration;
import org.eclipse.bpmn2.Definitions;
import org.eclipse.bpmn2.Interface;
import org.eclipse.bpmn2.Participant;
@@ -72,10 +73,10 @@ public class InterfacePropertySection extends DefaultPropertySection {
@Override
protected EObject getBusinessObjectForSelection(ISelection selection) {
EObject bo = super.getBusinessObjectForSelection(selection);
- if (bo instanceof Participant) {
- return bo;
- } else if (bo instanceof BPMNDiagram) {
+ if (bo instanceof BPMNDiagram) {
BaseElement be = ((BPMNDiagram)bo).getPlane().getBpmnElement();
+ if (be instanceof Collaboration)
+ return be;
if (be instanceof Process)
return be;
} else if (bo instanceof CallableElement) {
@@ -182,7 +183,7 @@ public class InterfacePropertySection extends DefaultPropertySection {
}
}
- public class ProvidedInterfaceListComposite extends DefaultListComposite {
+ public static class ProvidedInterfaceListComposite extends DefaultListComposite {
/**
* @param section
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/diagrams/DataItemsDetailComposite.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/diagrams/DataItemsDetailComposite.java
index 968a6ccc..a700a35b 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/diagrams/DataItemsDetailComposite.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/diagrams/DataItemsDetailComposite.java
@@ -13,16 +13,16 @@
package org.eclipse.bpmn2.modeler.ui.property.diagrams;
-import org.eclipse.bpmn2.Definitions;
+import org.eclipse.bpmn2.BaseElement;
+import org.eclipse.bpmn2.Collaboration;
import org.eclipse.bpmn2.Process;
-import org.eclipse.bpmn2.RootElement;
import org.eclipse.bpmn2.di.BPMNDiagram;
import org.eclipse.bpmn2.modeler.core.merrimac.clad.AbstractBpmn2PropertySection;
import org.eclipse.bpmn2.modeler.core.merrimac.clad.AbstractListComposite;
import org.eclipse.bpmn2.modeler.core.merrimac.clad.AbstractPropertiesProvider;
import org.eclipse.bpmn2.modeler.core.merrimac.clad.DefaultDetailComposite;
+import org.eclipse.bpmn2.modeler.core.utils.BusinessObjectUtil;
import org.eclipse.bpmn2.modeler.ui.editor.BPMN2Editor;
-import org.eclipse.bpmn2.modeler.ui.util.PropertyUtil;
import org.eclipse.emf.ecore.EClass;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
@@ -75,8 +75,16 @@ public class DataItemsDetailComposite extends DefaultDetailComposite {
return null;
}
BPMNDiagram bpmnDiagram = ((BPMN2Editor)getDiagramEditor()).getBpmnDiagram();
- if (bpmnDiagram.getPlane().getBpmnElement() != object)
- return null;
+ BaseElement bpmnElement = bpmnDiagram.getPlane().getBpmnElement();
+ if (bpmnElement != object) {
+ // This Process is embedded in a Participant, and is not the top-level diagram
+ // only display variables table for the selected Process, not all Processes
+ if (propertySection!=null) {
+ EObject bo = BusinessObjectUtil.getBusinessObjectForSelection(propertySection.getSelection());
+ if (bo!=object)
+ return null;
+ }
+ }
return super.bindList(object, feature, listItemClass);
}
}
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/diagrams/DataItemsPropertySection.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/diagrams/DataItemsPropertySection.java
index 03ccf52e..77a84564 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/diagrams/DataItemsPropertySection.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/diagrams/DataItemsPropertySection.java
@@ -13,8 +13,11 @@ package org.eclipse.bpmn2.modeler.ui.property.diagrams;
import org.eclipse.bpmn2.modeler.core.merrimac.clad.AbstractDetailComposite;
import org.eclipse.bpmn2.modeler.core.merrimac.clad.DefaultPropertySection;
import org.eclipse.bpmn2.modeler.core.utils.ModelUtil;
+import org.eclipse.bpmn2.modeler.core.utils.ModelUtil.Bpmn2DiagramType;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.bpmn2.Process;
public class DataItemsPropertySection extends DefaultPropertySection {
@@ -27,8 +30,18 @@ public class DataItemsPropertySection extends DefaultPropertySection {
}
@Override
+ public boolean appliesTo(IWorkbenchPart part, ISelection selection) {
+ if (super.appliesTo(part, selection)) {
+ return getBusinessObjectForSelection(selection) != null;
+ }
+ return false;
+ }
+
+ @Override
protected EObject getBusinessObjectForSelection(ISelection selection) {
EObject be = super.getBusinessObjectForSelection(selection);
- return ModelUtil.getDefinitions(be);
+ if (be instanceof Process || ModelUtil.getDiagramType(be)==Bpmn2DiagramType.PROCESS)
+ return ModelUtil.getDefinitions(be);
+ return null;
}
}
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/diagrams/DefinitionsPropertyComposite.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/diagrams/DefinitionsPropertyComposite.java
index 9101adcb..14bda82f 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/diagrams/DefinitionsPropertyComposite.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/diagrams/DefinitionsPropertyComposite.java
@@ -27,6 +27,7 @@ import org.eclipse.bpmn2.modeler.core.merrimac.clad.DefaultDetailComposite;
import org.eclipse.bpmn2.modeler.core.merrimac.clad.DefaultListComposite;
import org.eclipse.bpmn2.modeler.core.merrimac.clad.ListCompositeColumnProvider;
import org.eclipse.bpmn2.modeler.core.merrimac.clad.ListCompositeContentProvider;
+import org.eclipse.bpmn2.modeler.core.merrimac.clad.PropertiesCompositeFactory;
import org.eclipse.bpmn2.modeler.core.merrimac.clad.TableColumn;
import org.eclipse.bpmn2.modeler.core.merrimac.dialogs.ObjectEditor;
import org.eclipse.bpmn2.modeler.core.merrimac.dialogs.TextAndButtonObjectEditor;
@@ -87,7 +88,6 @@ public class DefinitionsPropertyComposite extends DefaultDetailComposite {
"relationships", //$NON-NLS-1$
"rootElements#PartnerEntity", //$NON-NLS-1$
"rootElements#PartnerRole", //$NON-NLS-1$
- // TODO: how do we handle this?
// "rootElements#EndPoint", //$NON-NLS-1$
"rootElements#Resource", //$NON-NLS-1$
"rootElements#DataStore", //$NON-NLS-1$
@@ -480,7 +480,6 @@ public class DefinitionsPropertyComposite extends DefaultDetailComposite {
}
}
- // TODO: finish this
public class EndPointListComposite extends DefaultListComposite {
public EndPointListComposite(AbstractBpmn2PropertySection section) {
@@ -492,66 +491,100 @@ public class DefinitionsPropertyComposite extends DefaultDetailComposite {
return Bpmn2Package.eINSTANCE.getEndPoint();
}
- protected int createColumnProvider(EObject object, EStructuralFeature feature) {
- if (columnProvider==null) {
- columnProvider = new ListCompositeColumnProvider(this);
-
- TargetRuntime rt = getTargetRuntime();
- for (ModelExtensionDescriptor md : rt.getModelExtensions()) {
- if ("EndPoint".equals(md.getType())) {
-
- for (Property p : md.getProperties()) {
- final String name = p.name;
- TableColumn tableColumn = new TableColumn(object,(EStructuralFeature)null) {
- @Override
- public String getHeaderText() {
- return ModelUtil.toDisplayName(name);
- }
-
- @Override
- public String getText(Object element) {
- if (element instanceof EndPoint) {
- EndPoint ep = (EndPoint) element;
- EStructuralFeature feature = ModelUtil.getAnyAttribute(ep, name);
- Object v = ep.eGet(feature);
- if (v!=null)
- return v.toString();
- }
- return ""; //$NON-NLS-1$
- }
+// protected int createColumnProvider(EObject object, EStructuralFeature feature) {
+// if (columnProvider==null) {
+// columnProvider = new ListCompositeColumnProvider(this);
+//
+// TargetRuntime rt = getTargetRuntime();
+// for (ModelExtensionDescriptor md : rt.getModelExtensions()) {
+// if ("EndPoint".equals(md.getType())) {
+//
+// for (Property p : md.getProperties()) {
+// final String name = p.name;
+// TableColumn tableColumn = new TableColumn(object,(EStructuralFeature)null) {
+// @Override
+// public String getHeaderText() {
+// return ModelUtil.toDisplayName(name);
+// }
+//
+// @Override
+// public String getText(Object element) {
+// if (element instanceof EndPoint) {
+// EndPoint ep = (EndPoint) element;
+// EStructuralFeature feature = ModelUtil.getAnyAttribute(ep, name);
+// Object v = ep.eGet(feature);
+// if (v!=null)
+// return v.toString();
+// }
+// return ""; //$NON-NLS-1$
+// }
+//
+// @Override
+// public CellEditor createCellEditor (Composite parent) {
+// CellEditor ce = null;
+// return ce;
+// }
+// };
+// columnProvider.add(tableColumn);
+// }
+// }
+// }
+// }
+// return columnProvider.getColumns().size();
+// }
+//
+// @Override
+// public AbstractDetailComposite createDetailComposite(Class eClass, Composite parent, int style) {
+// AbstractDetailComposite composite = new DefaultDetailComposite(parent, style) {
+//
+// protected boolean isModelObjectEnabled(EClass eclass, EStructuralFeature feature) {
+// return true;
+// }
+//
+// @Override
+// public AbstractPropertiesProvider getPropertiesProvider(EObject object) {
+// if (propertiesProvider==null) {
+// propertiesProvider = new AbstractPropertiesProvider(object) {
+// String[] properties = null;
+//
+// @Override
+// public String[] getProperties() {
+// if (properties==null) {
+// TargetRuntime rt = getTargetRuntime();
+// for (ModelExtensionDescriptor md : rt.getModelExtensions()) {
+// if ("EndPoint".equals(md.getType())) {
+// properties = new String[md.getProperties().size()];
+// int i=0;
+// for (Property p : md.getProperties()) {
+// properties[i++] = p.name;
+// }
+// }
+// }
+// }
+//
+// return properties;
+// }
+// };
+// }
+// return propertiesProvider;
+// }
+//
+// };
+//
+// return composite;
+// }
- @Override
- public CellEditor createCellEditor (Composite parent) {
- CellEditor ce = null;
- // TODO: create a dialog cell editor for NS prefix
- return ce;
- }
- };
- columnProvider.add(tableColumn);
- }
- }
- }
- }
- return columnProvider.getColumns().size();
- }
-
@Override
protected EObject addListItem(EObject object, EStructuralFeature feature) {
EObject ep = super.addListItem(object, feature);
- TargetRuntime rt = getTargetRuntime();
- for (ModelExtensionDescriptor md : rt.getModelExtensions()) {
- if ("EndPoint".equals(md.getType())) {
- md.populateObject(ep, true);
- }
- }
+// TargetRuntime rt = getTargetRuntime();
+// for (ModelExtensionDescriptor md : rt.getModelExtensions()) {
+// if ("EndPoint".equals(md.getType())) {
+// md.populateObject(ep, true);
+// }
+// }
return ep;
}
-
- @Override
- protected EObject editListItem(EObject object, EStructuralFeature feature) {
- return super.editListItem(object, feature);
- }
-
}
}
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/diagrams/ParticipantDetailComposite.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/diagrams/ParticipantDetailComposite.java
index c0736336..e27f228d 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/diagrams/ParticipantDetailComposite.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/diagrams/ParticipantDetailComposite.java
@@ -24,6 +24,7 @@ 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.IntObjectEditor;
import org.eclipse.bpmn2.modeler.core.utils.ErrorUtils;
+import org.eclipse.bpmn2.modeler.ui.property.data.InterfacePropertySection.ProvidedInterfaceListComposite;
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EReference;
import org.eclipse.emf.ecore.EStructuralFeature;
@@ -38,6 +39,8 @@ import org.eclipse.swt.widgets.Composite;
*/
public class ParticipantDetailComposite extends DefaultDetailComposite {
+ protected ProvidedInterfaceListComposite providedInterfacesTable;
+
public ParticipantDetailComposite(Composite parent, int style) {
super(parent, style);
}
@@ -57,7 +60,6 @@ public class ParticipantDetailComposite extends DefaultDetailComposite {
"processRef", //$NON-NLS-1$
"participantMultiplicity", //$NON-NLS-1$
"interfaceRefs", //$NON-NLS-1$
- // TODO: finish this
// "endPointRefs", //$NON-NLS-1$
};
@@ -70,6 +72,12 @@ public class ParticipantDetailComposite extends DefaultDetailComposite {
return propertiesProvider;
}
+ @Override
+ public void cleanBindings() {
+ super.cleanBindings();
+ providedInterfacesTable = null;
+ }
+
protected void bindReference(Composite parent, EObject object, EReference reference) {
if (isModelObjectEnabled(object.eClass(), reference)) {
if (parent==null)
@@ -97,6 +105,10 @@ public class ParticipantDetailComposite extends DefaultDetailComposite {
minEditor.updateText();
}
+ else if ("interfaceRefs".equals(reference.getName())) {
+ providedInterfacesTable = new ProvidedInterfaceListComposite(this);
+ providedInterfacesTable.bindList(object, getFeature(object, "interfaceRefs")); //$NON-NLS-1$
+ }
else {
super.bindReference(parent, object, reference);
}
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/diagrams/ProcessDiagramPropertySection.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/diagrams/ProcessDiagramPropertySection.java
index 10d856c8..b1288da6 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/diagrams/ProcessDiagramPropertySection.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/property/diagrams/ProcessDiagramPropertySection.java
@@ -55,9 +55,10 @@ public class ProcessDiagramPropertySection extends DefaultPropertySection {
@Override
public boolean appliesTo(IWorkbenchPart part, ISelection selection) {
- if (super.appliesTo(part, selection))
- return true;
- EObject bo = getBusinessObjectForSelection(selection);
- return bo!=null;
+ if (super.appliesTo(part, selection)) {
+ EObject bo = getBusinessObjectForSelection(selection);
+ return bo!=null;
+ }
+ return false;
}
}

Back to the top