diff options
author | Bob Brodt | 2014-02-05 19:38:27 +0000 |
---|---|---|
committer | Bob Brodt | 2014-02-05 19:38:27 +0000 |
commit | 4a8d06e1cbf88d666a430e2c914a7100522f7b80 (patch) | |
tree | d0dd738e800aa2e816a5c945adf085630a1040c5 | |
parent | 3d953efb6f62a9c2dba23c822ee784bf9b40dc4d (diff) | |
download | org.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.
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; } } |