Merge branch 'develop' into X-multipage
Conflicts
diff --git a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/adapters/InsertionAdapter.java b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/adapters/InsertionAdapter.java
index a93d49d..27b4294 100644
--- a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/adapters/InsertionAdapter.java
+++ b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/adapters/InsertionAdapter.java
@@ -224,6 +224,7 @@
allAdapters.add((InsertionAdapter)adapter);
}
}
+ value.eAdapters().removeAll(allAdapters);
for (InsertionAdapter adapter : allAdapters)
adapter.execute();
}
diff --git a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/ReadonlyTextObjectEditor.java b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/ReadonlyTextObjectEditor.java
index 271774f..b31947d 100644
--- a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/ReadonlyTextObjectEditor.java
+++ b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/dialogs/ReadonlyTextObjectEditor.java
@@ -4,6 +4,7 @@
import org.eclipse.emf.ecore.EObject;
import org.eclipse.emf.ecore.EStructuralFeature;
import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.window.Window;
public class ReadonlyTextObjectEditor extends TextAndButtonObjectEditor {
@@ -16,8 +17,10 @@
protected void buttonClicked() {
Object value = object.eGet(feature);
if (value == null || value instanceof EObject) {
- ObjectEditingDialog dialog = new FeatureEditingDialog(getDiagramEditor(), object, feature, (EObject)value);
- dialog.open();
+ FeatureEditingDialog dialog = new FeatureEditingDialog(getDiagramEditor(), object, feature, (EObject)value);
+ if (dialog.open()==Window.OK){
+ updateObject(dialog.getNewObject());
+ }
}
else {
String msg = "Can not display "+feature.getName()+" for "+object.eClass().getName();
diff --git a/org.eclipse.bpmn2.modeler.runtime.example/src/org/eclipse/bpmn2/modeler/runtime/example/SampleModel/SampleModelPackage.java b/org.eclipse.bpmn2.modeler.runtime.example/src/org/eclipse/bpmn2/modeler/runtime/example/SampleModel/SampleModelPackage.java
index ab79328..197e009 100644
--- a/org.eclipse.bpmn2.modeler.runtime.example/src/org/eclipse/bpmn2/modeler/runtime/example/SampleModel/SampleModelPackage.java
+++ b/org.eclipse.bpmn2.modeler.runtime.example/src/org/eclipse/bpmn2/modeler/runtime/example/SampleModel/SampleModelPackage.java
@@ -80,7 +80,7 @@
int DOCUMENT_ROOT__MIXED = Bpmn2Package.DOCUMENT_ROOT__MIXED;
/**
- * The feature id for the '<em><b>XMLNS Prefix Map</b></em>' map.
+ * The feature id for the '<em><b>XMLNS Prefix Map</b></em>' mapDiagramToViewer.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
@@ -89,7 +89,7 @@
int DOCUMENT_ROOT__XMLNS_PREFIX_MAP = Bpmn2Package.DOCUMENT_ROOT__XMLNS_PREFIX_MAP;
/**
- * The feature id for the '<em><b>XSI Schema Location</b></em>' map.
+ * The feature id for the '<em><b>XSI Schema Location</b></em>' mapDiagramToViewer.
* <!-- begin-user-doc -->
* <!-- end-user-doc -->
* @generated
diff --git a/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/model/ModelPackage.java b/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/model/ModelPackage.java
index c7af3e6..6032094 100644
--- a/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/model/ModelPackage.java
+++ b/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/model/ModelPackage.java
@@ -1,2190 +1,2190 @@
-/**
- * <copyright>
- * </copyright>
- *
- * $Id$
- */
-package org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model;
-
-import org.eclipse.bpmn2.Bpmn2Package;
-import org.eclipse.emf.ecore.EAttribute;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EDataType;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.EReference;
-
-/**
- * <!-- begin-user-doc -->
- * The <b>Package</b> for the model.
- * It contains accessors for the meta objects to represent
- * <ul>
- * <li>each class,</li>
- * <li>each feature of each class,</li>
- * <li>each enum,</li>
- * <li>and each data type</li>
- * </ul>
- * <!-- end-user-doc -->
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.ModelFactory
- * @model kind="package"
- * @generated
- */
-public interface ModelPackage extends EPackage {
- /**
- * The package name.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- String eNAME = "model";
-
- /**
- * The package namespace URI.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- String eNS_URI = "http://www.jboss.org/drools";
-
- /**
- * The package namespace name.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- String eNS_PREFIX = "tns";
-
- /**
- * The singleton instance of the package.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- ModelPackage eINSTANCE = org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl.init();
-
- /**
- * The meta object id for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.DocumentRootImpl <em>Document Root</em>}' class.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.DocumentRootImpl
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getDocumentRoot()
- * @generated
- */
- int DOCUMENT_ROOT = 0;
-
- /**
- * The feature id for the '<em><b>Mixed</b></em>' attribute list.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__MIXED = Bpmn2Package.DOCUMENT_ROOT__MIXED;
-
- /**
- * The feature id for the '<em><b>XMLNS Prefix Map</b></em>' map.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__XMLNS_PREFIX_MAP = Bpmn2Package.DOCUMENT_ROOT__XMLNS_PREFIX_MAP;
-
- /**
- * The feature id for the '<em><b>XSI Schema Location</b></em>' map.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__XSI_SCHEMA_LOCATION = Bpmn2Package.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION;
-
- /**
- * The feature id for the '<em><b>Activity</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__ACTIVITY = Bpmn2Package.DOCUMENT_ROOT__ACTIVITY;
-
- /**
- * The feature id for the '<em><b>Ad Hoc Sub Process</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__AD_HOC_SUB_PROCESS = Bpmn2Package.DOCUMENT_ROOT__AD_HOC_SUB_PROCESS;
-
- /**
- * The feature id for the '<em><b>Flow Element</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__FLOW_ELEMENT = Bpmn2Package.DOCUMENT_ROOT__FLOW_ELEMENT;
-
- /**
- * The feature id for the '<em><b>Artifact</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__ARTIFACT = Bpmn2Package.DOCUMENT_ROOT__ARTIFACT;
-
- /**
- * The feature id for the '<em><b>Assignment</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__ASSIGNMENT = Bpmn2Package.DOCUMENT_ROOT__ASSIGNMENT;
-
- /**
- * The feature id for the '<em><b>Association</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__ASSOCIATION = Bpmn2Package.DOCUMENT_ROOT__ASSOCIATION;
-
- /**
- * The feature id for the '<em><b>Auditing</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__AUDITING = Bpmn2Package.DOCUMENT_ROOT__AUDITING;
-
- /**
- * The feature id for the '<em><b>Base Element</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__BASE_ELEMENT = Bpmn2Package.DOCUMENT_ROOT__BASE_ELEMENT;
-
- /**
- * The feature id for the '<em><b>Base Element With Mixed Content</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__BASE_ELEMENT_WITH_MIXED_CONTENT = Bpmn2Package.DOCUMENT_ROOT__BASE_ELEMENT_WITH_MIXED_CONTENT;
-
- /**
- * The feature id for the '<em><b>Boundary Event</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__BOUNDARY_EVENT = Bpmn2Package.DOCUMENT_ROOT__BOUNDARY_EVENT;
-
- /**
- * The feature id for the '<em><b>Business Rule Task</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__BUSINESS_RULE_TASK = Bpmn2Package.DOCUMENT_ROOT__BUSINESS_RULE_TASK;
-
- /**
- * The feature id for the '<em><b>Callable Element</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__CALLABLE_ELEMENT = Bpmn2Package.DOCUMENT_ROOT__CALLABLE_ELEMENT;
-
- /**
- * The feature id for the '<em><b>Call Activity</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__CALL_ACTIVITY = Bpmn2Package.DOCUMENT_ROOT__CALL_ACTIVITY;
-
- /**
- * The feature id for the '<em><b>Call Choreography</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__CALL_CHOREOGRAPHY = Bpmn2Package.DOCUMENT_ROOT__CALL_CHOREOGRAPHY;
-
- /**
- * The feature id for the '<em><b>Call Conversation</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__CALL_CONVERSATION = Bpmn2Package.DOCUMENT_ROOT__CALL_CONVERSATION;
-
- /**
- * The feature id for the '<em><b>Conversation Node</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__CONVERSATION_NODE = Bpmn2Package.DOCUMENT_ROOT__CONVERSATION_NODE;
-
- /**
- * The feature id for the '<em><b>Cancel Event Definition</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__CANCEL_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__CANCEL_EVENT_DEFINITION;
-
- /**
- * The feature id for the '<em><b>Event Definition</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__EVENT_DEFINITION;
-
- /**
- * The feature id for the '<em><b>Root Element</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__ROOT_ELEMENT = Bpmn2Package.DOCUMENT_ROOT__ROOT_ELEMENT;
-
- /**
- * The feature id for the '<em><b>Catch Event</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__CATCH_EVENT = Bpmn2Package.DOCUMENT_ROOT__CATCH_EVENT;
-
- /**
- * The feature id for the '<em><b>Category</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__CATEGORY = Bpmn2Package.DOCUMENT_ROOT__CATEGORY;
-
- /**
- * The feature id for the '<em><b>Category Value</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__CATEGORY_VALUE = Bpmn2Package.DOCUMENT_ROOT__CATEGORY_VALUE;
-
- /**
- * The feature id for the '<em><b>Choreography</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__CHOREOGRAPHY = Bpmn2Package.DOCUMENT_ROOT__CHOREOGRAPHY;
-
- /**
- * The feature id for the '<em><b>Collaboration</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__COLLABORATION = Bpmn2Package.DOCUMENT_ROOT__COLLABORATION;
-
- /**
- * The feature id for the '<em><b>Choreography Activity</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__CHOREOGRAPHY_ACTIVITY = Bpmn2Package.DOCUMENT_ROOT__CHOREOGRAPHY_ACTIVITY;
-
- /**
- * The feature id for the '<em><b>Choreography Task</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__CHOREOGRAPHY_TASK = Bpmn2Package.DOCUMENT_ROOT__CHOREOGRAPHY_TASK;
-
- /**
- * The feature id for the '<em><b>Compensate Event Definition</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__COMPENSATE_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__COMPENSATE_EVENT_DEFINITION;
-
- /**
- * The feature id for the '<em><b>Complex Behavior Definition</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__COMPLEX_BEHAVIOR_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__COMPLEX_BEHAVIOR_DEFINITION;
-
- /**
- * The feature id for the '<em><b>Complex Gateway</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__COMPLEX_GATEWAY = Bpmn2Package.DOCUMENT_ROOT__COMPLEX_GATEWAY;
-
- /**
- * The feature id for the '<em><b>Conditional Event Definition</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__CONDITIONAL_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__CONDITIONAL_EVENT_DEFINITION;
-
- /**
- * The feature id for the '<em><b>Conversation</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__CONVERSATION = Bpmn2Package.DOCUMENT_ROOT__CONVERSATION;
-
- /**
- * The feature id for the '<em><b>Conversation Association</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__CONVERSATION_ASSOCIATION = Bpmn2Package.DOCUMENT_ROOT__CONVERSATION_ASSOCIATION;
-
- /**
- * The feature id for the '<em><b>Conversation Link</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__CONVERSATION_LINK = Bpmn2Package.DOCUMENT_ROOT__CONVERSATION_LINK;
-
- /**
- * The feature id for the '<em><b>Correlation Key</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__CORRELATION_KEY = Bpmn2Package.DOCUMENT_ROOT__CORRELATION_KEY;
-
- /**
- * The feature id for the '<em><b>Correlation Property</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__CORRELATION_PROPERTY = Bpmn2Package.DOCUMENT_ROOT__CORRELATION_PROPERTY;
-
- /**
- * The feature id for the '<em><b>Correlation Property Binding</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__CORRELATION_PROPERTY_BINDING = Bpmn2Package.DOCUMENT_ROOT__CORRELATION_PROPERTY_BINDING;
-
- /**
- * The feature id for the '<em><b>Correlation Property Retrieval Expression</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__CORRELATION_PROPERTY_RETRIEVAL_EXPRESSION = Bpmn2Package.DOCUMENT_ROOT__CORRELATION_PROPERTY_RETRIEVAL_EXPRESSION;
-
- /**
- * The feature id for the '<em><b>Correlation Subscription</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__CORRELATION_SUBSCRIPTION = Bpmn2Package.DOCUMENT_ROOT__CORRELATION_SUBSCRIPTION;
-
- /**
- * The feature id for the '<em><b>Data Association</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__DATA_ASSOCIATION = Bpmn2Package.DOCUMENT_ROOT__DATA_ASSOCIATION;
-
- /**
- * The feature id for the '<em><b>Data Input</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__DATA_INPUT = Bpmn2Package.DOCUMENT_ROOT__DATA_INPUT;
-
- /**
- * The feature id for the '<em><b>Data Input Association</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__DATA_INPUT_ASSOCIATION = Bpmn2Package.DOCUMENT_ROOT__DATA_INPUT_ASSOCIATION;
-
- /**
- * The feature id for the '<em><b>Data Object</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__DATA_OBJECT = Bpmn2Package.DOCUMENT_ROOT__DATA_OBJECT;
-
- /**
- * The feature id for the '<em><b>Data Object Reference</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__DATA_OBJECT_REFERENCE = Bpmn2Package.DOCUMENT_ROOT__DATA_OBJECT_REFERENCE;
-
- /**
- * The feature id for the '<em><b>Data Output</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__DATA_OUTPUT = Bpmn2Package.DOCUMENT_ROOT__DATA_OUTPUT;
-
- /**
- * The feature id for the '<em><b>Data Output Association</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__DATA_OUTPUT_ASSOCIATION = Bpmn2Package.DOCUMENT_ROOT__DATA_OUTPUT_ASSOCIATION;
-
- /**
- * The feature id for the '<em><b>Data State</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__DATA_STATE = Bpmn2Package.DOCUMENT_ROOT__DATA_STATE;
-
- /**
- * The feature id for the '<em><b>Data Store</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__DATA_STORE = Bpmn2Package.DOCUMENT_ROOT__DATA_STORE;
-
- /**
- * The feature id for the '<em><b>Data Store Reference</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__DATA_STORE_REFERENCE = Bpmn2Package.DOCUMENT_ROOT__DATA_STORE_REFERENCE;
-
- /**
- * The feature id for the '<em><b>Definitions</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__DEFINITIONS = Bpmn2Package.DOCUMENT_ROOT__DEFINITIONS;
-
- /**
- * The feature id for the '<em><b>Documentation</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__DOCUMENTATION = Bpmn2Package.DOCUMENT_ROOT__DOCUMENTATION;
-
- /**
- * The feature id for the '<em><b>End Event</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__END_EVENT = Bpmn2Package.DOCUMENT_ROOT__END_EVENT;
-
- /**
- * The feature id for the '<em><b>End Point</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__END_POINT = Bpmn2Package.DOCUMENT_ROOT__END_POINT;
-
- /**
- * The feature id for the '<em><b>Error</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__ERROR = Bpmn2Package.DOCUMENT_ROOT__ERROR;
-
- /**
- * The feature id for the '<em><b>Error Event Definition</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__ERROR_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__ERROR_EVENT_DEFINITION;
-
- /**
- * The feature id for the '<em><b>Escalation</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__ESCALATION = Bpmn2Package.DOCUMENT_ROOT__ESCALATION;
-
- /**
- * The feature id for the '<em><b>Escalation Event Definition</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__ESCALATION_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__ESCALATION_EVENT_DEFINITION;
-
- /**
- * The feature id for the '<em><b>Event</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__EVENT = Bpmn2Package.DOCUMENT_ROOT__EVENT;
-
- /**
- * The feature id for the '<em><b>Event Based Gateway</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__EVENT_BASED_GATEWAY = Bpmn2Package.DOCUMENT_ROOT__EVENT_BASED_GATEWAY;
-
- /**
- * The feature id for the '<em><b>Exclusive Gateway</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__EXCLUSIVE_GATEWAY = Bpmn2Package.DOCUMENT_ROOT__EXCLUSIVE_GATEWAY;
-
- /**
- * The feature id for the '<em><b>Expression</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__EXPRESSION = Bpmn2Package.DOCUMENT_ROOT__EXPRESSION;
-
- /**
- * The feature id for the '<em><b>Extension</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__EXTENSION = Bpmn2Package.DOCUMENT_ROOT__EXTENSION;
-
- /**
- * The feature id for the '<em><b>Extension Elements</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__EXTENSION_ELEMENTS = Bpmn2Package.DOCUMENT_ROOT__EXTENSION_ELEMENTS;
-
- /**
- * The feature id for the '<em><b>Flow Node</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__FLOW_NODE = Bpmn2Package.DOCUMENT_ROOT__FLOW_NODE;
-
- /**
- * The feature id for the '<em><b>Formal Expression</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__FORMAL_EXPRESSION = Bpmn2Package.DOCUMENT_ROOT__FORMAL_EXPRESSION;
-
- /**
- * The feature id for the '<em><b>Gateway</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__GATEWAY = Bpmn2Package.DOCUMENT_ROOT__GATEWAY;
-
- /**
- * The feature id for the '<em><b>Global Business Rule Task</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__GLOBAL_BUSINESS_RULE_TASK = Bpmn2Package.DOCUMENT_ROOT__GLOBAL_BUSINESS_RULE_TASK;
-
- /**
- * The feature id for the '<em><b>Global Choreography Task</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__GLOBAL_CHOREOGRAPHY_TASK = Bpmn2Package.DOCUMENT_ROOT__GLOBAL_CHOREOGRAPHY_TASK;
-
- /**
- * The feature id for the '<em><b>Global Conversation</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__GLOBAL_CONVERSATION = Bpmn2Package.DOCUMENT_ROOT__GLOBAL_CONVERSATION;
-
- /**
- * The feature id for the '<em><b>Global Manual Task</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__GLOBAL_MANUAL_TASK = Bpmn2Package.DOCUMENT_ROOT__GLOBAL_MANUAL_TASK;
-
- /**
- * The feature id for the '<em><b>Global Script Task</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__GLOBAL_SCRIPT_TASK = Bpmn2Package.DOCUMENT_ROOT__GLOBAL_SCRIPT_TASK;
-
- /**
- * The feature id for the '<em><b>Global Task</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__GLOBAL_TASK = Bpmn2Package.DOCUMENT_ROOT__GLOBAL_TASK;
-
- /**
- * The feature id for the '<em><b>Global User Task</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__GLOBAL_USER_TASK = Bpmn2Package.DOCUMENT_ROOT__GLOBAL_USER_TASK;
-
- /**
- * The feature id for the '<em><b>Group</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__GROUP = Bpmn2Package.DOCUMENT_ROOT__GROUP;
-
- /**
- * The feature id for the '<em><b>Human Performer</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__HUMAN_PERFORMER = Bpmn2Package.DOCUMENT_ROOT__HUMAN_PERFORMER;
-
- /**
- * The feature id for the '<em><b>Performer</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__PERFORMER = Bpmn2Package.DOCUMENT_ROOT__PERFORMER;
-
- /**
- * The feature id for the '<em><b>Resource Role</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__RESOURCE_ROLE = Bpmn2Package.DOCUMENT_ROOT__RESOURCE_ROLE;
-
- /**
- * The feature id for the '<em><b>Implicit Throw Event</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__IMPLICIT_THROW_EVENT = Bpmn2Package.DOCUMENT_ROOT__IMPLICIT_THROW_EVENT;
-
- /**
- * The feature id for the '<em><b>Import</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__IMPORT = Bpmn2Package.DOCUMENT_ROOT__IMPORT;
-
- /**
- * The feature id for the '<em><b>Inclusive Gateway</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__INCLUSIVE_GATEWAY = Bpmn2Package.DOCUMENT_ROOT__INCLUSIVE_GATEWAY;
-
- /**
- * The feature id for the '<em><b>Input Set</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__INPUT_SET = Bpmn2Package.DOCUMENT_ROOT__INPUT_SET;
-
- /**
- * The feature id for the '<em><b>Interface</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__INTERFACE = Bpmn2Package.DOCUMENT_ROOT__INTERFACE;
-
- /**
- * The feature id for the '<em><b>Intermediate Catch Event</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__INTERMEDIATE_CATCH_EVENT = Bpmn2Package.DOCUMENT_ROOT__INTERMEDIATE_CATCH_EVENT;
-
- /**
- * The feature id for the '<em><b>Intermediate Throw Event</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__INTERMEDIATE_THROW_EVENT = Bpmn2Package.DOCUMENT_ROOT__INTERMEDIATE_THROW_EVENT;
-
- /**
- * The feature id for the '<em><b>Io Binding</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__IO_BINDING = Bpmn2Package.DOCUMENT_ROOT__IO_BINDING;
-
- /**
- * The feature id for the '<em><b>Io Specification</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__IO_SPECIFICATION = Bpmn2Package.DOCUMENT_ROOT__IO_SPECIFICATION;
-
- /**
- * The feature id for the '<em><b>Item Definition</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__ITEM_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__ITEM_DEFINITION;
-
- /**
- * The feature id for the '<em><b>Lane</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__LANE = Bpmn2Package.DOCUMENT_ROOT__LANE;
-
- /**
- * The feature id for the '<em><b>Lane Set</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__LANE_SET = Bpmn2Package.DOCUMENT_ROOT__LANE_SET;
-
- /**
- * The feature id for the '<em><b>Link Event Definition</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__LINK_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__LINK_EVENT_DEFINITION;
-
- /**
- * The feature id for the '<em><b>Loop Characteristics</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__LOOP_CHARACTERISTICS = Bpmn2Package.DOCUMENT_ROOT__LOOP_CHARACTERISTICS;
-
- /**
- * The feature id for the '<em><b>Manual Task</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__MANUAL_TASK = Bpmn2Package.DOCUMENT_ROOT__MANUAL_TASK;
-
- /**
- * The feature id for the '<em><b>Message</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__MESSAGE = Bpmn2Package.DOCUMENT_ROOT__MESSAGE;
-
- /**
- * The feature id for the '<em><b>Message Event Definition</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__MESSAGE_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__MESSAGE_EVENT_DEFINITION;
-
- /**
- * The feature id for the '<em><b>Message Flow</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__MESSAGE_FLOW = Bpmn2Package.DOCUMENT_ROOT__MESSAGE_FLOW;
-
- /**
- * The feature id for the '<em><b>Message Flow Association</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__MESSAGE_FLOW_ASSOCIATION = Bpmn2Package.DOCUMENT_ROOT__MESSAGE_FLOW_ASSOCIATION;
-
- /**
- * The feature id for the '<em><b>Monitoring</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__MONITORING = Bpmn2Package.DOCUMENT_ROOT__MONITORING;
-
- /**
- * The feature id for the '<em><b>Multi Instance Loop Characteristics</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__MULTI_INSTANCE_LOOP_CHARACTERISTICS = Bpmn2Package.DOCUMENT_ROOT__MULTI_INSTANCE_LOOP_CHARACTERISTICS;
-
- /**
- * The feature id for the '<em><b>Operation</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__OPERATION = Bpmn2Package.DOCUMENT_ROOT__OPERATION;
-
- /**
- * The feature id for the '<em><b>Output Set</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__OUTPUT_SET = Bpmn2Package.DOCUMENT_ROOT__OUTPUT_SET;
-
- /**
- * The feature id for the '<em><b>Parallel Gateway</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__PARALLEL_GATEWAY = Bpmn2Package.DOCUMENT_ROOT__PARALLEL_GATEWAY;
-
- /**
- * The feature id for the '<em><b>Participant</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__PARTICIPANT = Bpmn2Package.DOCUMENT_ROOT__PARTICIPANT;
-
- /**
- * The feature id for the '<em><b>Participant Association</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__PARTICIPANT_ASSOCIATION = Bpmn2Package.DOCUMENT_ROOT__PARTICIPANT_ASSOCIATION;
-
- /**
- * The feature id for the '<em><b>Participant Multiplicity</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__PARTICIPANT_MULTIPLICITY = Bpmn2Package.DOCUMENT_ROOT__PARTICIPANT_MULTIPLICITY;
-
- /**
- * The feature id for the '<em><b>Partner Entity</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__PARTNER_ENTITY = Bpmn2Package.DOCUMENT_ROOT__PARTNER_ENTITY;
-
- /**
- * The feature id for the '<em><b>Partner Role</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__PARTNER_ROLE = Bpmn2Package.DOCUMENT_ROOT__PARTNER_ROLE;
-
- /**
- * The feature id for the '<em><b>Potential Owner</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__POTENTIAL_OWNER = Bpmn2Package.DOCUMENT_ROOT__POTENTIAL_OWNER;
-
- /**
- * The feature id for the '<em><b>Process</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__PROCESS = Bpmn2Package.DOCUMENT_ROOT__PROCESS;
-
- /**
- * The feature id for the '<em><b>Property</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__PROPERTY = Bpmn2Package.DOCUMENT_ROOT__PROPERTY;
-
- /**
- * The feature id for the '<em><b>Receive Task</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__RECEIVE_TASK = Bpmn2Package.DOCUMENT_ROOT__RECEIVE_TASK;
-
- /**
- * The feature id for the '<em><b>Relationship</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__RELATIONSHIP = Bpmn2Package.DOCUMENT_ROOT__RELATIONSHIP;
-
- /**
- * The feature id for the '<em><b>Rendering</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__RENDERING = Bpmn2Package.DOCUMENT_ROOT__RENDERING;
-
- /**
- * The feature id for the '<em><b>Resource</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__RESOURCE = Bpmn2Package.DOCUMENT_ROOT__RESOURCE;
-
- /**
- * The feature id for the '<em><b>Resource Assignment Expression</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__RESOURCE_ASSIGNMENT_EXPRESSION = Bpmn2Package.DOCUMENT_ROOT__RESOURCE_ASSIGNMENT_EXPRESSION;
-
- /**
- * The feature id for the '<em><b>Resource Parameter</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__RESOURCE_PARAMETER = Bpmn2Package.DOCUMENT_ROOT__RESOURCE_PARAMETER;
-
- /**
- * The feature id for the '<em><b>Resource Parameter Binding</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__RESOURCE_PARAMETER_BINDING = Bpmn2Package.DOCUMENT_ROOT__RESOURCE_PARAMETER_BINDING;
-
- /**
- * The feature id for the '<em><b>Script</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__SCRIPT = Bpmn2Package.DOCUMENT_ROOT__SCRIPT;
-
- /**
- * The feature id for the '<em><b>Script Task</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__SCRIPT_TASK = Bpmn2Package.DOCUMENT_ROOT__SCRIPT_TASK;
-
- /**
- * The feature id for the '<em><b>Send Task</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__SEND_TASK = Bpmn2Package.DOCUMENT_ROOT__SEND_TASK;
-
- /**
- * The feature id for the '<em><b>Sequence Flow</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__SEQUENCE_FLOW = Bpmn2Package.DOCUMENT_ROOT__SEQUENCE_FLOW;
-
- /**
- * The feature id for the '<em><b>Service Task</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__SERVICE_TASK = Bpmn2Package.DOCUMENT_ROOT__SERVICE_TASK;
-
- /**
- * The feature id for the '<em><b>Signal</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__SIGNAL = Bpmn2Package.DOCUMENT_ROOT__SIGNAL;
-
- /**
- * The feature id for the '<em><b>Signal Event Definition</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__SIGNAL_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__SIGNAL_EVENT_DEFINITION;
-
- /**
- * The feature id for the '<em><b>Standard Loop Characteristics</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__STANDARD_LOOP_CHARACTERISTICS = Bpmn2Package.DOCUMENT_ROOT__STANDARD_LOOP_CHARACTERISTICS;
-
- /**
- * The feature id for the '<em><b>Start Event</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__START_EVENT = Bpmn2Package.DOCUMENT_ROOT__START_EVENT;
-
- /**
- * The feature id for the '<em><b>Sub Choreography</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__SUB_CHOREOGRAPHY = Bpmn2Package.DOCUMENT_ROOT__SUB_CHOREOGRAPHY;
-
- /**
- * The feature id for the '<em><b>Sub Conversation</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__SUB_CONVERSATION = Bpmn2Package.DOCUMENT_ROOT__SUB_CONVERSATION;
-
- /**
- * The feature id for the '<em><b>Sub Process</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__SUB_PROCESS = Bpmn2Package.DOCUMENT_ROOT__SUB_PROCESS;
-
- /**
- * The feature id for the '<em><b>Task</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__TASK = Bpmn2Package.DOCUMENT_ROOT__TASK;
-
- /**
- * The feature id for the '<em><b>Terminate Event Definition</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__TERMINATE_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__TERMINATE_EVENT_DEFINITION;
-
- /**
- * The feature id for the '<em><b>Text</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__TEXT = Bpmn2Package.DOCUMENT_ROOT__TEXT;
-
- /**
- * The feature id for the '<em><b>Text Annotation</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__TEXT_ANNOTATION = Bpmn2Package.DOCUMENT_ROOT__TEXT_ANNOTATION;
-
- /**
- * The feature id for the '<em><b>Throw Event</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__THROW_EVENT = Bpmn2Package.DOCUMENT_ROOT__THROW_EVENT;
-
- /**
- * The feature id for the '<em><b>Timer Event Definition</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__TIMER_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__TIMER_EVENT_DEFINITION;
-
- /**
- * The feature id for the '<em><b>Transaction</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__TRANSACTION = Bpmn2Package.DOCUMENT_ROOT__TRANSACTION;
-
- /**
- * The feature id for the '<em><b>User Task</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__USER_TASK = Bpmn2Package.DOCUMENT_ROOT__USER_TASK;
-
- /**
- * The feature id for the '<em><b>Global</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__GLOBAL = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 0;
-
- /**
- * The feature id for the '<em><b>Import Type</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__IMPORT_TYPE = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 1;
-
- /**
- * The feature id for the '<em><b>On Entry Script</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__ON_ENTRY_SCRIPT = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 2;
-
- /**
- * The feature id for the '<em><b>On Exit Script</b></em>' containment reference.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__ON_EXIT_SCRIPT = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 3;
-
- /**
- * The feature id for the '<em><b>Package Name</b></em>' attribute.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__PACKAGE_NAME = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 4;
-
- /**
- * The feature id for the '<em><b>Priority</b></em>' attribute.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__PRIORITY = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 5;
-
- /**
- * The feature id for the '<em><b>Rule Flow Group</b></em>' attribute.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__RULE_FLOW_GROUP = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 6;
-
- /**
- * The feature id for the '<em><b>Task Name</b></em>' attribute.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__TASK_NAME = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 7;
-
- /**
- * The feature id for the '<em><b>Version</b></em>' attribute.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__VERSION = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 8;
-
- /**
- * The feature id for the '<em><b>Wait For Completion</b></em>' attribute.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__WAIT_FOR_COMPLETION = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 9;
-
- /**
- * The feature id for the '<em><b>Independent</b></em>' attribute.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT__INDEPENDENT = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 10;
-
- /**
- * The number of structural features of the '<em>Document Root</em>' class.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int DOCUMENT_ROOT_FEATURE_COUNT = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 11;
-
- /**
- * The meta object id for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.GlobalTypeImpl <em>Global Type</em>}' class.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.GlobalTypeImpl
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getGlobalType()
- * @generated
- */
- int GLOBAL_TYPE = 1;
-
- /**
- * The feature id for the '<em><b>Identifier</b></em>' attribute.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int GLOBAL_TYPE__IDENTIFIER = 0;
-
- /**
- * The feature id for the '<em><b>Type</b></em>' attribute.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int GLOBAL_TYPE__TYPE = 1;
-
- /**
- * The number of structural features of the '<em>Global Type</em>' class.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int GLOBAL_TYPE_FEATURE_COUNT = 2;
-
- /**
- * The meta object id for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ImportTypeImpl <em>Import Type</em>}' class.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ImportTypeImpl
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getImportType()
- * @generated
- */
- int IMPORT_TYPE = 2;
-
- /**
- * The feature id for the '<em><b>Name</b></em>' attribute.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int IMPORT_TYPE__NAME = 0;
-
- /**
- * The number of structural features of the '<em>Import Type</em>' class.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int IMPORT_TYPE_FEATURE_COUNT = 1;
-
- /**
- * The meta object id for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.OnEntryScriptTypeImpl <em>On Entry Script Type</em>}' class.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.OnEntryScriptTypeImpl
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getOnEntryScriptType()
- * @generated
- */
- int ON_ENTRY_SCRIPT_TYPE = 3;
-
- /**
- * The feature id for the '<em><b>Script</b></em>' attribute.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int ON_ENTRY_SCRIPT_TYPE__SCRIPT = 0;
-
- /**
- * The feature id for the '<em><b>Script Format</b></em>' attribute.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int ON_ENTRY_SCRIPT_TYPE__SCRIPT_FORMAT = 1;
-
- /**
- * The number of structural features of the '<em>On Entry Script Type</em>' class.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int ON_ENTRY_SCRIPT_TYPE_FEATURE_COUNT = 2;
-
- /**
- * The meta object id for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.OnExitScriptTypeImpl <em>On Exit Script Type</em>}' class.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.OnExitScriptTypeImpl
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getOnExitScriptType()
- * @generated
- */
- int ON_EXIT_SCRIPT_TYPE = 4;
-
- /**
- * The feature id for the '<em><b>Script</b></em>' attribute.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int ON_EXIT_SCRIPT_TYPE__SCRIPT = 0;
-
- /**
- * The feature id for the '<em><b>Script Format</b></em>' attribute.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int ON_EXIT_SCRIPT_TYPE__SCRIPT_FORMAT = 1;
-
- /**
- * The number of structural features of the '<em>On Exit Script Type</em>' class.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- * @ordered
- */
- int ON_EXIT_SCRIPT_TYPE_FEATURE_COUNT = 2;
-
- /**
- * The meta object id for the '<em>Package Name Type</em>' data type.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @see java.lang.String
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getPackageNameType()
- * @generated
- */
- int PACKAGE_NAME_TYPE = 5;
-
- /**
- * The meta object id for the '<em>Priority Type</em>' data type.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @see java.math.BigInteger
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getPriorityType()
- * @generated
- */
- int PRIORITY_TYPE = 6;
-
- /**
- * The meta object id for the '<em>Rule Flow Group Type</em>' data type.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @see java.lang.String
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getRuleFlowGroupType()
- * @generated
- */
- int RULE_FLOW_GROUP_TYPE = 7;
-
- /**
- * The meta object id for the '<em>Task Name Type</em>' data type.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @see java.lang.String
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getTaskNameType()
- * @generated
- */
- int TASK_NAME_TYPE = 8;
-
- /**
- * The meta object id for the '<em>Version Type</em>' data type.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @see java.math.BigInteger
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getVersionType()
- * @generated
- */
- int VERSION_TYPE = 9;
-
-
- /**
- * Returns the meta object for class '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot <em>Document Root</em>}'.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the meta object for class '<em>Document Root</em>'.
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot
- * @generated
- */
- EClass getDocumentRoot();
-
- /**
- * Returns the meta object for the containment reference '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getGlobal <em>Global</em>}'.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the meta object for the containment reference '<em>Global</em>'.
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getGlobal()
- * @see #getDocumentRoot()
- * @generated
- */
- EReference getDocumentRoot_Global();
-
- /**
- * Returns the meta object for the containment reference '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getImportType <em>Import Type</em>}'.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the meta object for the containment reference '<em>Import Type</em>'.
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getImportType()
- * @see #getDocumentRoot()
- * @generated
- */
- EReference getDocumentRoot_ImportType();
-
- /**
- * Returns the meta object for the containment reference '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getOnEntryScript <em>On Entry Script</em>}'.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the meta object for the containment reference '<em>On Entry Script</em>'.
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getOnEntryScript()
- * @see #getDocumentRoot()
- * @generated
- */
- EReference getDocumentRoot_OnEntryScript();
-
- /**
- * Returns the meta object for the containment reference '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getOnExitScript <em>On Exit Script</em>}'.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the meta object for the containment reference '<em>On Exit Script</em>'.
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getOnExitScript()
- * @see #getDocumentRoot()
- * @generated
- */
- EReference getDocumentRoot_OnExitScript();
-
- /**
- * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getPackageName <em>Package Name</em>}'.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the meta object for the attribute '<em>Package Name</em>'.
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getPackageName()
- * @see #getDocumentRoot()
- * @generated
- */
- EAttribute getDocumentRoot_PackageName();
-
- /**
- * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getPriority <em>Priority</em>}'.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the meta object for the attribute '<em>Priority</em>'.
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getPriority()
- * @see #getDocumentRoot()
- * @generated
- */
- EAttribute getDocumentRoot_Priority();
-
- /**
- * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getRuleFlowGroup <em>Rule Flow Group</em>}'.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the meta object for the attribute '<em>Rule Flow Group</em>'.
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getRuleFlowGroup()
- * @see #getDocumentRoot()
- * @generated
- */
- EAttribute getDocumentRoot_RuleFlowGroup();
-
- /**
- * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getTaskName <em>Task Name</em>}'.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the meta object for the attribute '<em>Task Name</em>'.
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getTaskName()
- * @see #getDocumentRoot()
- * @generated
- */
- EAttribute getDocumentRoot_TaskName();
-
- /**
- * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getVersion <em>Version</em>}'.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the meta object for the attribute '<em>Version</em>'.
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getVersion()
- * @see #getDocumentRoot()
- * @generated
- */
- EAttribute getDocumentRoot_Version();
-
- /**
- * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#isWaitForCompletion <em>Wait For Completion</em>}'.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the meta object for the attribute '<em>Wait For Completion</em>'.
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#isWaitForCompletion()
- * @see #getDocumentRoot()
- * @generated
- */
- EAttribute getDocumentRoot_WaitForCompletion();
-
- /**
- * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#isIndependent <em>Independent</em>}'.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the meta object for the attribute '<em>Independent</em>'.
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#isIndependent()
- * @see #getDocumentRoot()
- * @generated
- */
- EAttribute getDocumentRoot_Independent();
-
- /**
- * Returns the meta object for class '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.GlobalType <em>Global Type</em>}'.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the meta object for class '<em>Global Type</em>'.
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.GlobalType
- * @generated
- */
- EClass getGlobalType();
-
- /**
- * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.GlobalType#getIdentifier <em>Identifier</em>}'.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the meta object for the attribute '<em>Identifier</em>'.
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.GlobalType#getIdentifier()
- * @see #getGlobalType()
- * @generated
- */
- EAttribute getGlobalType_Identifier();
-
- /**
- * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.GlobalType#getType <em>Type</em>}'.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the meta object for the attribute '<em>Type</em>'.
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.GlobalType#getType()
- * @see #getGlobalType()
- * @generated
- */
- EAttribute getGlobalType_Type();
-
- /**
- * Returns the meta object for class '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.ImportType <em>Import Type</em>}'.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the meta object for class '<em>Import Type</em>'.
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.ImportType
- * @generated
- */
- EClass getImportType();
-
- /**
- * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.ImportType#getName <em>Name</em>}'.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the meta object for the attribute '<em>Name</em>'.
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.ImportType#getName()
- * @see #getImportType()
- * @generated
- */
- EAttribute getImportType_Name();
-
- /**
- * Returns the meta object for class '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnEntryScriptType <em>On Entry Script Type</em>}'.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the meta object for class '<em>On Entry Script Type</em>'.
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnEntryScriptType
- * @generated
- */
- EClass getOnEntryScriptType();
-
- /**
- * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnEntryScriptType#getScript <em>Script</em>}'.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the meta object for the attribute '<em>Script</em>'.
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnEntryScriptType#getScript()
- * @see #getOnEntryScriptType()
- * @generated
- */
- EAttribute getOnEntryScriptType_Script();
-
- /**
- * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnEntryScriptType#getScriptFormat <em>Script Format</em>}'.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the meta object for the attribute '<em>Script Format</em>'.
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnEntryScriptType#getScriptFormat()
- * @see #getOnEntryScriptType()
- * @generated
- */
- EAttribute getOnEntryScriptType_ScriptFormat();
-
- /**
- * Returns the meta object for class '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnExitScriptType <em>On Exit Script Type</em>}'.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the meta object for class '<em>On Exit Script Type</em>'.
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnExitScriptType
- * @generated
- */
- EClass getOnExitScriptType();
-
- /**
- * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnExitScriptType#getScript <em>Script</em>}'.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the meta object for the attribute '<em>Script</em>'.
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnExitScriptType#getScript()
- * @see #getOnExitScriptType()
- * @generated
- */
- EAttribute getOnExitScriptType_Script();
-
- /**
- * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnExitScriptType#getScriptFormat <em>Script Format</em>}'.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the meta object for the attribute '<em>Script Format</em>'.
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnExitScriptType#getScriptFormat()
- * @see #getOnExitScriptType()
- * @generated
- */
- EAttribute getOnExitScriptType_ScriptFormat();
-
- /**
- * Returns the meta object for data type '{@link java.lang.String <em>Package Name Type</em>}'.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the meta object for data type '<em>Package Name Type</em>'.
- * @see java.lang.String
- * @model instanceClass="java.lang.String"
- * extendedMetaData="name='packageName_._type' baseType='http://www.eclipse.org/emf/2003/XMLType#string'"
- * @generated
- */
- EDataType getPackageNameType();
-
- /**
- * Returns the meta object for data type '{@link java.math.BigInteger <em>Priority Type</em>}'.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the meta object for data type '<em>Priority Type</em>'.
- * @see java.math.BigInteger
- * @model instanceClass="java.math.BigInteger"
- * extendedMetaData="name='priority_._type' baseType='http://www.eclipse.org/emf/2003/XMLType#integer' minInclusive='1'"
- * @generated
- */
- EDataType getPriorityType();
-
- /**
- * Returns the meta object for data type '{@link java.lang.String <em>Rule Flow Group Type</em>}'.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the meta object for data type '<em>Rule Flow Group Type</em>'.
- * @see java.lang.String
- * @model instanceClass="java.lang.String"
- * extendedMetaData="name='ruleFlowGroup_._type' baseType='http://www.eclipse.org/emf/2003/XMLType#string'"
- * @generated
- */
- EDataType getRuleFlowGroupType();
-
- /**
- * Returns the meta object for data type '{@link java.lang.String <em>Task Name Type</em>}'.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the meta object for data type '<em>Task Name Type</em>'.
- * @see java.lang.String
- * @model instanceClass="java.lang.String"
- * extendedMetaData="name='taskName_._type' baseType='http://www.eclipse.org/emf/2003/XMLType#string'"
- * @generated
- */
- EDataType getTaskNameType();
-
- /**
- * Returns the meta object for data type '{@link java.math.BigInteger <em>Version Type</em>}'.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the meta object for data type '<em>Version Type</em>'.
- * @see java.math.BigInteger
- * @model instanceClass="java.math.BigInteger"
- * extendedMetaData="name='version_._type' baseType='http://www.eclipse.org/emf/2003/XMLType#integer' minInclusive='0'"
- * @generated
- */
- EDataType getVersionType();
-
- /**
- * Returns the factory that creates the instances of the model.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @return the factory that creates the instances of the model.
- * @generated
- */
- ModelFactory getModelFactory();
-
- /**
- * <!-- begin-user-doc -->
- * Defines literals for the meta objects that represent
- * <ul>
- * <li>each class,</li>
- * <li>each feature of each class,</li>
- * <li>each enum,</li>
- * <li>and each data type</li>
- * </ul>
- * <!-- end-user-doc -->
- * @generated
- */
- interface Literals {
- /**
- * The meta object literal for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.DocumentRootImpl <em>Document Root</em>}' class.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.DocumentRootImpl
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getDocumentRoot()
- * @generated
- */
- EClass DOCUMENT_ROOT = eINSTANCE.getDocumentRoot();
-
- /**
- * The meta object literal for the '<em><b>Global</b></em>' containment reference feature.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- EReference DOCUMENT_ROOT__GLOBAL = eINSTANCE.getDocumentRoot_Global();
-
- /**
- * The meta object literal for the '<em><b>Import Type</b></em>' containment reference feature.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- EReference DOCUMENT_ROOT__IMPORT_TYPE = eINSTANCE.getDocumentRoot_ImportType();
-
- /**
- * The meta object literal for the '<em><b>On Entry Script</b></em>' containment reference feature.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- EReference DOCUMENT_ROOT__ON_ENTRY_SCRIPT = eINSTANCE.getDocumentRoot_OnEntryScript();
-
- /**
- * The meta object literal for the '<em><b>On Exit Script</b></em>' containment reference feature.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- EReference DOCUMENT_ROOT__ON_EXIT_SCRIPT = eINSTANCE.getDocumentRoot_OnExitScript();
-
- /**
- * The meta object literal for the '<em><b>Package Name</b></em>' attribute feature.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- EAttribute DOCUMENT_ROOT__PACKAGE_NAME = eINSTANCE.getDocumentRoot_PackageName();
-
- /**
- * The meta object literal for the '<em><b>Priority</b></em>' attribute feature.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- EAttribute DOCUMENT_ROOT__PRIORITY = eINSTANCE.getDocumentRoot_Priority();
-
- /**
- * The meta object literal for the '<em><b>Rule Flow Group</b></em>' attribute feature.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- EAttribute DOCUMENT_ROOT__RULE_FLOW_GROUP = eINSTANCE.getDocumentRoot_RuleFlowGroup();
-
- /**
- * The meta object literal for the '<em><b>Task Name</b></em>' attribute feature.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- EAttribute DOCUMENT_ROOT__TASK_NAME = eINSTANCE.getDocumentRoot_TaskName();
-
- /**
- * The meta object literal for the '<em><b>Version</b></em>' attribute feature.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- EAttribute DOCUMENT_ROOT__VERSION = eINSTANCE.getDocumentRoot_Version();
-
- /**
- * The meta object literal for the '<em><b>Wait For Completion</b></em>' attribute feature.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- EAttribute DOCUMENT_ROOT__WAIT_FOR_COMPLETION = eINSTANCE.getDocumentRoot_WaitForCompletion();
-
- /**
- * The meta object literal for the '<em><b>Independent</b></em>' attribute feature.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- EAttribute DOCUMENT_ROOT__INDEPENDENT = eINSTANCE.getDocumentRoot_Independent();
-
- /**
- * The meta object literal for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.GlobalTypeImpl <em>Global Type</em>}' class.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.GlobalTypeImpl
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getGlobalType()
- * @generated
- */
- EClass GLOBAL_TYPE = eINSTANCE.getGlobalType();
-
- /**
- * The meta object literal for the '<em><b>Identifier</b></em>' attribute feature.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- EAttribute GLOBAL_TYPE__IDENTIFIER = eINSTANCE.getGlobalType_Identifier();
-
- /**
- * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- EAttribute GLOBAL_TYPE__TYPE = eINSTANCE.getGlobalType_Type();
-
- /**
- * The meta object literal for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ImportTypeImpl <em>Import Type</em>}' class.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ImportTypeImpl
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getImportType()
- * @generated
- */
- EClass IMPORT_TYPE = eINSTANCE.getImportType();
-
- /**
- * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- EAttribute IMPORT_TYPE__NAME = eINSTANCE.getImportType_Name();
-
- /**
- * The meta object literal for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.OnEntryScriptTypeImpl <em>On Entry Script Type</em>}' class.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.OnEntryScriptTypeImpl
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getOnEntryScriptType()
- * @generated
- */
- EClass ON_ENTRY_SCRIPT_TYPE = eINSTANCE.getOnEntryScriptType();
-
- /**
- * The meta object literal for the '<em><b>Script</b></em>' attribute feature.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- EAttribute ON_ENTRY_SCRIPT_TYPE__SCRIPT = eINSTANCE.getOnEntryScriptType_Script();
-
- /**
- * The meta object literal for the '<em><b>Script Format</b></em>' attribute feature.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- EAttribute ON_ENTRY_SCRIPT_TYPE__SCRIPT_FORMAT = eINSTANCE.getOnEntryScriptType_ScriptFormat();
-
- /**
- * The meta object literal for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.OnExitScriptTypeImpl <em>On Exit Script Type</em>}' class.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.OnExitScriptTypeImpl
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getOnExitScriptType()
- * @generated
- */
- EClass ON_EXIT_SCRIPT_TYPE = eINSTANCE.getOnExitScriptType();
-
- /**
- * The meta object literal for the '<em><b>Script</b></em>' attribute feature.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- EAttribute ON_EXIT_SCRIPT_TYPE__SCRIPT = eINSTANCE.getOnExitScriptType_Script();
-
- /**
- * The meta object literal for the '<em><b>Script Format</b></em>' attribute feature.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @generated
- */
- EAttribute ON_EXIT_SCRIPT_TYPE__SCRIPT_FORMAT = eINSTANCE.getOnExitScriptType_ScriptFormat();
-
- /**
- * The meta object literal for the '<em>Package Name Type</em>' data type.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @see java.lang.String
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getPackageNameType()
- * @generated
- */
- EDataType PACKAGE_NAME_TYPE = eINSTANCE.getPackageNameType();
-
- /**
- * The meta object literal for the '<em>Priority Type</em>' data type.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @see java.math.BigInteger
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getPriorityType()
- * @generated
- */
- EDataType PRIORITY_TYPE = eINSTANCE.getPriorityType();
-
- /**
- * The meta object literal for the '<em>Rule Flow Group Type</em>' data type.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @see java.lang.String
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getRuleFlowGroupType()
- * @generated
- */
- EDataType RULE_FLOW_GROUP_TYPE = eINSTANCE.getRuleFlowGroupType();
-
- /**
- * The meta object literal for the '<em>Task Name Type</em>' data type.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @see java.lang.String
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getTaskNameType()
- * @generated
- */
- EDataType TASK_NAME_TYPE = eINSTANCE.getTaskNameType();
-
- /**
- * The meta object literal for the '<em>Version Type</em>' data type.
- * <!-- begin-user-doc -->
- * <!-- end-user-doc -->
- * @see java.math.BigInteger
- * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getVersionType()
- * @generated
- */
- EDataType VERSION_TYPE = eINSTANCE.getVersionType();
-
- }
-
-} //ModelPackage
+/**
+ * <copyright>
+ * </copyright>
+ *
+ * $Id$
+ */
+package org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model;
+
+import org.eclipse.bpmn2.Bpmn2Package;
+import org.eclipse.emf.ecore.EAttribute;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EDataType;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EReference;
+
+/**
+ * <!-- begin-user-doc -->
+ * The <b>Package</b> for the model.
+ * It contains accessors for the meta objects to represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.ModelFactory
+ * @model kind="package"
+ * @generated
+ */
+public interface ModelPackage extends EPackage {
+ /**
+ * The package name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNAME = "model";
+
+ /**
+ * The package namespace URI.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_URI = "http://www.jboss.org/drools";
+
+ /**
+ * The package namespace name.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ String eNS_PREFIX = "tns";
+
+ /**
+ * The singleton instance of the package.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ ModelPackage eINSTANCE = org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl.init();
+
+ /**
+ * The meta object id for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.DocumentRootImpl <em>Document Root</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.DocumentRootImpl
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getDocumentRoot()
+ * @generated
+ */
+ int DOCUMENT_ROOT = 0;
+
+ /**
+ * The feature id for the '<em><b>Mixed</b></em>' attribute list.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__MIXED = Bpmn2Package.DOCUMENT_ROOT__MIXED;
+
+ /**
+ * The feature id for the '<em><b>XMLNS Prefix Map</b></em>' mapDiagramToViewer.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__XMLNS_PREFIX_MAP = Bpmn2Package.DOCUMENT_ROOT__XMLNS_PREFIX_MAP;
+
+ /**
+ * The feature id for the '<em><b>XSI Schema Location</b></em>' mapDiagramToViewer.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__XSI_SCHEMA_LOCATION = Bpmn2Package.DOCUMENT_ROOT__XSI_SCHEMA_LOCATION;
+
+ /**
+ * The feature id for the '<em><b>Activity</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__ACTIVITY = Bpmn2Package.DOCUMENT_ROOT__ACTIVITY;
+
+ /**
+ * The feature id for the '<em><b>Ad Hoc Sub Process</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__AD_HOC_SUB_PROCESS = Bpmn2Package.DOCUMENT_ROOT__AD_HOC_SUB_PROCESS;
+
+ /**
+ * The feature id for the '<em><b>Flow Element</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__FLOW_ELEMENT = Bpmn2Package.DOCUMENT_ROOT__FLOW_ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Artifact</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__ARTIFACT = Bpmn2Package.DOCUMENT_ROOT__ARTIFACT;
+
+ /**
+ * The feature id for the '<em><b>Assignment</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__ASSIGNMENT = Bpmn2Package.DOCUMENT_ROOT__ASSIGNMENT;
+
+ /**
+ * The feature id for the '<em><b>Association</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__ASSOCIATION = Bpmn2Package.DOCUMENT_ROOT__ASSOCIATION;
+
+ /**
+ * The feature id for the '<em><b>Auditing</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__AUDITING = Bpmn2Package.DOCUMENT_ROOT__AUDITING;
+
+ /**
+ * The feature id for the '<em><b>Base Element</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__BASE_ELEMENT = Bpmn2Package.DOCUMENT_ROOT__BASE_ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Base Element With Mixed Content</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__BASE_ELEMENT_WITH_MIXED_CONTENT = Bpmn2Package.DOCUMENT_ROOT__BASE_ELEMENT_WITH_MIXED_CONTENT;
+
+ /**
+ * The feature id for the '<em><b>Boundary Event</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__BOUNDARY_EVENT = Bpmn2Package.DOCUMENT_ROOT__BOUNDARY_EVENT;
+
+ /**
+ * The feature id for the '<em><b>Business Rule Task</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__BUSINESS_RULE_TASK = Bpmn2Package.DOCUMENT_ROOT__BUSINESS_RULE_TASK;
+
+ /**
+ * The feature id for the '<em><b>Callable Element</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__CALLABLE_ELEMENT = Bpmn2Package.DOCUMENT_ROOT__CALLABLE_ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Call Activity</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__CALL_ACTIVITY = Bpmn2Package.DOCUMENT_ROOT__CALL_ACTIVITY;
+
+ /**
+ * The feature id for the '<em><b>Call Choreography</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__CALL_CHOREOGRAPHY = Bpmn2Package.DOCUMENT_ROOT__CALL_CHOREOGRAPHY;
+
+ /**
+ * The feature id for the '<em><b>Call Conversation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__CALL_CONVERSATION = Bpmn2Package.DOCUMENT_ROOT__CALL_CONVERSATION;
+
+ /**
+ * The feature id for the '<em><b>Conversation Node</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__CONVERSATION_NODE = Bpmn2Package.DOCUMENT_ROOT__CONVERSATION_NODE;
+
+ /**
+ * The feature id for the '<em><b>Cancel Event Definition</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__CANCEL_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__CANCEL_EVENT_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Event Definition</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__EVENT_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Root Element</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__ROOT_ELEMENT = Bpmn2Package.DOCUMENT_ROOT__ROOT_ELEMENT;
+
+ /**
+ * The feature id for the '<em><b>Catch Event</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__CATCH_EVENT = Bpmn2Package.DOCUMENT_ROOT__CATCH_EVENT;
+
+ /**
+ * The feature id for the '<em><b>Category</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__CATEGORY = Bpmn2Package.DOCUMENT_ROOT__CATEGORY;
+
+ /**
+ * The feature id for the '<em><b>Category Value</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__CATEGORY_VALUE = Bpmn2Package.DOCUMENT_ROOT__CATEGORY_VALUE;
+
+ /**
+ * The feature id for the '<em><b>Choreography</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__CHOREOGRAPHY = Bpmn2Package.DOCUMENT_ROOT__CHOREOGRAPHY;
+
+ /**
+ * The feature id for the '<em><b>Collaboration</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__COLLABORATION = Bpmn2Package.DOCUMENT_ROOT__COLLABORATION;
+
+ /**
+ * The feature id for the '<em><b>Choreography Activity</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__CHOREOGRAPHY_ACTIVITY = Bpmn2Package.DOCUMENT_ROOT__CHOREOGRAPHY_ACTIVITY;
+
+ /**
+ * The feature id for the '<em><b>Choreography Task</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__CHOREOGRAPHY_TASK = Bpmn2Package.DOCUMENT_ROOT__CHOREOGRAPHY_TASK;
+
+ /**
+ * The feature id for the '<em><b>Compensate Event Definition</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__COMPENSATE_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__COMPENSATE_EVENT_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Complex Behavior Definition</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__COMPLEX_BEHAVIOR_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__COMPLEX_BEHAVIOR_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Complex Gateway</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__COMPLEX_GATEWAY = Bpmn2Package.DOCUMENT_ROOT__COMPLEX_GATEWAY;
+
+ /**
+ * The feature id for the '<em><b>Conditional Event Definition</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__CONDITIONAL_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__CONDITIONAL_EVENT_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Conversation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__CONVERSATION = Bpmn2Package.DOCUMENT_ROOT__CONVERSATION;
+
+ /**
+ * The feature id for the '<em><b>Conversation Association</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__CONVERSATION_ASSOCIATION = Bpmn2Package.DOCUMENT_ROOT__CONVERSATION_ASSOCIATION;
+
+ /**
+ * The feature id for the '<em><b>Conversation Link</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__CONVERSATION_LINK = Bpmn2Package.DOCUMENT_ROOT__CONVERSATION_LINK;
+
+ /**
+ * The feature id for the '<em><b>Correlation Key</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__CORRELATION_KEY = Bpmn2Package.DOCUMENT_ROOT__CORRELATION_KEY;
+
+ /**
+ * The feature id for the '<em><b>Correlation Property</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__CORRELATION_PROPERTY = Bpmn2Package.DOCUMENT_ROOT__CORRELATION_PROPERTY;
+
+ /**
+ * The feature id for the '<em><b>Correlation Property Binding</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__CORRELATION_PROPERTY_BINDING = Bpmn2Package.DOCUMENT_ROOT__CORRELATION_PROPERTY_BINDING;
+
+ /**
+ * The feature id for the '<em><b>Correlation Property Retrieval Expression</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__CORRELATION_PROPERTY_RETRIEVAL_EXPRESSION = Bpmn2Package.DOCUMENT_ROOT__CORRELATION_PROPERTY_RETRIEVAL_EXPRESSION;
+
+ /**
+ * The feature id for the '<em><b>Correlation Subscription</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__CORRELATION_SUBSCRIPTION = Bpmn2Package.DOCUMENT_ROOT__CORRELATION_SUBSCRIPTION;
+
+ /**
+ * The feature id for the '<em><b>Data Association</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__DATA_ASSOCIATION = Bpmn2Package.DOCUMENT_ROOT__DATA_ASSOCIATION;
+
+ /**
+ * The feature id for the '<em><b>Data Input</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__DATA_INPUT = Bpmn2Package.DOCUMENT_ROOT__DATA_INPUT;
+
+ /**
+ * The feature id for the '<em><b>Data Input Association</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__DATA_INPUT_ASSOCIATION = Bpmn2Package.DOCUMENT_ROOT__DATA_INPUT_ASSOCIATION;
+
+ /**
+ * The feature id for the '<em><b>Data Object</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__DATA_OBJECT = Bpmn2Package.DOCUMENT_ROOT__DATA_OBJECT;
+
+ /**
+ * The feature id for the '<em><b>Data Object Reference</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__DATA_OBJECT_REFERENCE = Bpmn2Package.DOCUMENT_ROOT__DATA_OBJECT_REFERENCE;
+
+ /**
+ * The feature id for the '<em><b>Data Output</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__DATA_OUTPUT = Bpmn2Package.DOCUMENT_ROOT__DATA_OUTPUT;
+
+ /**
+ * The feature id for the '<em><b>Data Output Association</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__DATA_OUTPUT_ASSOCIATION = Bpmn2Package.DOCUMENT_ROOT__DATA_OUTPUT_ASSOCIATION;
+
+ /**
+ * The feature id for the '<em><b>Data State</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__DATA_STATE = Bpmn2Package.DOCUMENT_ROOT__DATA_STATE;
+
+ /**
+ * The feature id for the '<em><b>Data Store</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__DATA_STORE = Bpmn2Package.DOCUMENT_ROOT__DATA_STORE;
+
+ /**
+ * The feature id for the '<em><b>Data Store Reference</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__DATA_STORE_REFERENCE = Bpmn2Package.DOCUMENT_ROOT__DATA_STORE_REFERENCE;
+
+ /**
+ * The feature id for the '<em><b>Definitions</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__DEFINITIONS = Bpmn2Package.DOCUMENT_ROOT__DEFINITIONS;
+
+ /**
+ * The feature id for the '<em><b>Documentation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__DOCUMENTATION = Bpmn2Package.DOCUMENT_ROOT__DOCUMENTATION;
+
+ /**
+ * The feature id for the '<em><b>End Event</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__END_EVENT = Bpmn2Package.DOCUMENT_ROOT__END_EVENT;
+
+ /**
+ * The feature id for the '<em><b>End Point</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__END_POINT = Bpmn2Package.DOCUMENT_ROOT__END_POINT;
+
+ /**
+ * The feature id for the '<em><b>Error</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__ERROR = Bpmn2Package.DOCUMENT_ROOT__ERROR;
+
+ /**
+ * The feature id for the '<em><b>Error Event Definition</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__ERROR_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__ERROR_EVENT_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Escalation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__ESCALATION = Bpmn2Package.DOCUMENT_ROOT__ESCALATION;
+
+ /**
+ * The feature id for the '<em><b>Escalation Event Definition</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__ESCALATION_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__ESCALATION_EVENT_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Event</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__EVENT = Bpmn2Package.DOCUMENT_ROOT__EVENT;
+
+ /**
+ * The feature id for the '<em><b>Event Based Gateway</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__EVENT_BASED_GATEWAY = Bpmn2Package.DOCUMENT_ROOT__EVENT_BASED_GATEWAY;
+
+ /**
+ * The feature id for the '<em><b>Exclusive Gateway</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__EXCLUSIVE_GATEWAY = Bpmn2Package.DOCUMENT_ROOT__EXCLUSIVE_GATEWAY;
+
+ /**
+ * The feature id for the '<em><b>Expression</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__EXPRESSION = Bpmn2Package.DOCUMENT_ROOT__EXPRESSION;
+
+ /**
+ * The feature id for the '<em><b>Extension</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__EXTENSION = Bpmn2Package.DOCUMENT_ROOT__EXTENSION;
+
+ /**
+ * The feature id for the '<em><b>Extension Elements</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__EXTENSION_ELEMENTS = Bpmn2Package.DOCUMENT_ROOT__EXTENSION_ELEMENTS;
+
+ /**
+ * The feature id for the '<em><b>Flow Node</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__FLOW_NODE = Bpmn2Package.DOCUMENT_ROOT__FLOW_NODE;
+
+ /**
+ * The feature id for the '<em><b>Formal Expression</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__FORMAL_EXPRESSION = Bpmn2Package.DOCUMENT_ROOT__FORMAL_EXPRESSION;
+
+ /**
+ * The feature id for the '<em><b>Gateway</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__GATEWAY = Bpmn2Package.DOCUMENT_ROOT__GATEWAY;
+
+ /**
+ * The feature id for the '<em><b>Global Business Rule Task</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__GLOBAL_BUSINESS_RULE_TASK = Bpmn2Package.DOCUMENT_ROOT__GLOBAL_BUSINESS_RULE_TASK;
+
+ /**
+ * The feature id for the '<em><b>Global Choreography Task</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__GLOBAL_CHOREOGRAPHY_TASK = Bpmn2Package.DOCUMENT_ROOT__GLOBAL_CHOREOGRAPHY_TASK;
+
+ /**
+ * The feature id for the '<em><b>Global Conversation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__GLOBAL_CONVERSATION = Bpmn2Package.DOCUMENT_ROOT__GLOBAL_CONVERSATION;
+
+ /**
+ * The feature id for the '<em><b>Global Manual Task</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__GLOBAL_MANUAL_TASK = Bpmn2Package.DOCUMENT_ROOT__GLOBAL_MANUAL_TASK;
+
+ /**
+ * The feature id for the '<em><b>Global Script Task</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__GLOBAL_SCRIPT_TASK = Bpmn2Package.DOCUMENT_ROOT__GLOBAL_SCRIPT_TASK;
+
+ /**
+ * The feature id for the '<em><b>Global Task</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__GLOBAL_TASK = Bpmn2Package.DOCUMENT_ROOT__GLOBAL_TASK;
+
+ /**
+ * The feature id for the '<em><b>Global User Task</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__GLOBAL_USER_TASK = Bpmn2Package.DOCUMENT_ROOT__GLOBAL_USER_TASK;
+
+ /**
+ * The feature id for the '<em><b>Group</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__GROUP = Bpmn2Package.DOCUMENT_ROOT__GROUP;
+
+ /**
+ * The feature id for the '<em><b>Human Performer</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__HUMAN_PERFORMER = Bpmn2Package.DOCUMENT_ROOT__HUMAN_PERFORMER;
+
+ /**
+ * The feature id for the '<em><b>Performer</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__PERFORMER = Bpmn2Package.DOCUMENT_ROOT__PERFORMER;
+
+ /**
+ * The feature id for the '<em><b>Resource Role</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__RESOURCE_ROLE = Bpmn2Package.DOCUMENT_ROOT__RESOURCE_ROLE;
+
+ /**
+ * The feature id for the '<em><b>Implicit Throw Event</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__IMPLICIT_THROW_EVENT = Bpmn2Package.DOCUMENT_ROOT__IMPLICIT_THROW_EVENT;
+
+ /**
+ * The feature id for the '<em><b>Import</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__IMPORT = Bpmn2Package.DOCUMENT_ROOT__IMPORT;
+
+ /**
+ * The feature id for the '<em><b>Inclusive Gateway</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__INCLUSIVE_GATEWAY = Bpmn2Package.DOCUMENT_ROOT__INCLUSIVE_GATEWAY;
+
+ /**
+ * The feature id for the '<em><b>Input Set</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__INPUT_SET = Bpmn2Package.DOCUMENT_ROOT__INPUT_SET;
+
+ /**
+ * The feature id for the '<em><b>Interface</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__INTERFACE = Bpmn2Package.DOCUMENT_ROOT__INTERFACE;
+
+ /**
+ * The feature id for the '<em><b>Intermediate Catch Event</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__INTERMEDIATE_CATCH_EVENT = Bpmn2Package.DOCUMENT_ROOT__INTERMEDIATE_CATCH_EVENT;
+
+ /**
+ * The feature id for the '<em><b>Intermediate Throw Event</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__INTERMEDIATE_THROW_EVENT = Bpmn2Package.DOCUMENT_ROOT__INTERMEDIATE_THROW_EVENT;
+
+ /**
+ * The feature id for the '<em><b>Io Binding</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__IO_BINDING = Bpmn2Package.DOCUMENT_ROOT__IO_BINDING;
+
+ /**
+ * The feature id for the '<em><b>Io Specification</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__IO_SPECIFICATION = Bpmn2Package.DOCUMENT_ROOT__IO_SPECIFICATION;
+
+ /**
+ * The feature id for the '<em><b>Item Definition</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__ITEM_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__ITEM_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Lane</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__LANE = Bpmn2Package.DOCUMENT_ROOT__LANE;
+
+ /**
+ * The feature id for the '<em><b>Lane Set</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__LANE_SET = Bpmn2Package.DOCUMENT_ROOT__LANE_SET;
+
+ /**
+ * The feature id for the '<em><b>Link Event Definition</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__LINK_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__LINK_EVENT_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Loop Characteristics</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__LOOP_CHARACTERISTICS = Bpmn2Package.DOCUMENT_ROOT__LOOP_CHARACTERISTICS;
+
+ /**
+ * The feature id for the '<em><b>Manual Task</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__MANUAL_TASK = Bpmn2Package.DOCUMENT_ROOT__MANUAL_TASK;
+
+ /**
+ * The feature id for the '<em><b>Message</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__MESSAGE = Bpmn2Package.DOCUMENT_ROOT__MESSAGE;
+
+ /**
+ * The feature id for the '<em><b>Message Event Definition</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__MESSAGE_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__MESSAGE_EVENT_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Message Flow</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__MESSAGE_FLOW = Bpmn2Package.DOCUMENT_ROOT__MESSAGE_FLOW;
+
+ /**
+ * The feature id for the '<em><b>Message Flow Association</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__MESSAGE_FLOW_ASSOCIATION = Bpmn2Package.DOCUMENT_ROOT__MESSAGE_FLOW_ASSOCIATION;
+
+ /**
+ * The feature id for the '<em><b>Monitoring</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__MONITORING = Bpmn2Package.DOCUMENT_ROOT__MONITORING;
+
+ /**
+ * The feature id for the '<em><b>Multi Instance Loop Characteristics</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__MULTI_INSTANCE_LOOP_CHARACTERISTICS = Bpmn2Package.DOCUMENT_ROOT__MULTI_INSTANCE_LOOP_CHARACTERISTICS;
+
+ /**
+ * The feature id for the '<em><b>Operation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__OPERATION = Bpmn2Package.DOCUMENT_ROOT__OPERATION;
+
+ /**
+ * The feature id for the '<em><b>Output Set</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__OUTPUT_SET = Bpmn2Package.DOCUMENT_ROOT__OUTPUT_SET;
+
+ /**
+ * The feature id for the '<em><b>Parallel Gateway</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__PARALLEL_GATEWAY = Bpmn2Package.DOCUMENT_ROOT__PARALLEL_GATEWAY;
+
+ /**
+ * The feature id for the '<em><b>Participant</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__PARTICIPANT = Bpmn2Package.DOCUMENT_ROOT__PARTICIPANT;
+
+ /**
+ * The feature id for the '<em><b>Participant Association</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__PARTICIPANT_ASSOCIATION = Bpmn2Package.DOCUMENT_ROOT__PARTICIPANT_ASSOCIATION;
+
+ /**
+ * The feature id for the '<em><b>Participant Multiplicity</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__PARTICIPANT_MULTIPLICITY = Bpmn2Package.DOCUMENT_ROOT__PARTICIPANT_MULTIPLICITY;
+
+ /**
+ * The feature id for the '<em><b>Partner Entity</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__PARTNER_ENTITY = Bpmn2Package.DOCUMENT_ROOT__PARTNER_ENTITY;
+
+ /**
+ * The feature id for the '<em><b>Partner Role</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__PARTNER_ROLE = Bpmn2Package.DOCUMENT_ROOT__PARTNER_ROLE;
+
+ /**
+ * The feature id for the '<em><b>Potential Owner</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__POTENTIAL_OWNER = Bpmn2Package.DOCUMENT_ROOT__POTENTIAL_OWNER;
+
+ /**
+ * The feature id for the '<em><b>Process</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__PROCESS = Bpmn2Package.DOCUMENT_ROOT__PROCESS;
+
+ /**
+ * The feature id for the '<em><b>Property</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__PROPERTY = Bpmn2Package.DOCUMENT_ROOT__PROPERTY;
+
+ /**
+ * The feature id for the '<em><b>Receive Task</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__RECEIVE_TASK = Bpmn2Package.DOCUMENT_ROOT__RECEIVE_TASK;
+
+ /**
+ * The feature id for the '<em><b>Relationship</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__RELATIONSHIP = Bpmn2Package.DOCUMENT_ROOT__RELATIONSHIP;
+
+ /**
+ * The feature id for the '<em><b>Rendering</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__RENDERING = Bpmn2Package.DOCUMENT_ROOT__RENDERING;
+
+ /**
+ * The feature id for the '<em><b>Resource</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__RESOURCE = Bpmn2Package.DOCUMENT_ROOT__RESOURCE;
+
+ /**
+ * The feature id for the '<em><b>Resource Assignment Expression</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__RESOURCE_ASSIGNMENT_EXPRESSION = Bpmn2Package.DOCUMENT_ROOT__RESOURCE_ASSIGNMENT_EXPRESSION;
+
+ /**
+ * The feature id for the '<em><b>Resource Parameter</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__RESOURCE_PARAMETER = Bpmn2Package.DOCUMENT_ROOT__RESOURCE_PARAMETER;
+
+ /**
+ * The feature id for the '<em><b>Resource Parameter Binding</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__RESOURCE_PARAMETER_BINDING = Bpmn2Package.DOCUMENT_ROOT__RESOURCE_PARAMETER_BINDING;
+
+ /**
+ * The feature id for the '<em><b>Script</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__SCRIPT = Bpmn2Package.DOCUMENT_ROOT__SCRIPT;
+
+ /**
+ * The feature id for the '<em><b>Script Task</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__SCRIPT_TASK = Bpmn2Package.DOCUMENT_ROOT__SCRIPT_TASK;
+
+ /**
+ * The feature id for the '<em><b>Send Task</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__SEND_TASK = Bpmn2Package.DOCUMENT_ROOT__SEND_TASK;
+
+ /**
+ * The feature id for the '<em><b>Sequence Flow</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__SEQUENCE_FLOW = Bpmn2Package.DOCUMENT_ROOT__SEQUENCE_FLOW;
+
+ /**
+ * The feature id for the '<em><b>Service Task</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__SERVICE_TASK = Bpmn2Package.DOCUMENT_ROOT__SERVICE_TASK;
+
+ /**
+ * The feature id for the '<em><b>Signal</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__SIGNAL = Bpmn2Package.DOCUMENT_ROOT__SIGNAL;
+
+ /**
+ * The feature id for the '<em><b>Signal Event Definition</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__SIGNAL_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__SIGNAL_EVENT_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Standard Loop Characteristics</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__STANDARD_LOOP_CHARACTERISTICS = Bpmn2Package.DOCUMENT_ROOT__STANDARD_LOOP_CHARACTERISTICS;
+
+ /**
+ * The feature id for the '<em><b>Start Event</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__START_EVENT = Bpmn2Package.DOCUMENT_ROOT__START_EVENT;
+
+ /**
+ * The feature id for the '<em><b>Sub Choreography</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__SUB_CHOREOGRAPHY = Bpmn2Package.DOCUMENT_ROOT__SUB_CHOREOGRAPHY;
+
+ /**
+ * The feature id for the '<em><b>Sub Conversation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__SUB_CONVERSATION = Bpmn2Package.DOCUMENT_ROOT__SUB_CONVERSATION;
+
+ /**
+ * The feature id for the '<em><b>Sub Process</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__SUB_PROCESS = Bpmn2Package.DOCUMENT_ROOT__SUB_PROCESS;
+
+ /**
+ * The feature id for the '<em><b>Task</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__TASK = Bpmn2Package.DOCUMENT_ROOT__TASK;
+
+ /**
+ * The feature id for the '<em><b>Terminate Event Definition</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__TERMINATE_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__TERMINATE_EVENT_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Text</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__TEXT = Bpmn2Package.DOCUMENT_ROOT__TEXT;
+
+ /**
+ * The feature id for the '<em><b>Text Annotation</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__TEXT_ANNOTATION = Bpmn2Package.DOCUMENT_ROOT__TEXT_ANNOTATION;
+
+ /**
+ * The feature id for the '<em><b>Throw Event</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__THROW_EVENT = Bpmn2Package.DOCUMENT_ROOT__THROW_EVENT;
+
+ /**
+ * The feature id for the '<em><b>Timer Event Definition</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__TIMER_EVENT_DEFINITION = Bpmn2Package.DOCUMENT_ROOT__TIMER_EVENT_DEFINITION;
+
+ /**
+ * The feature id for the '<em><b>Transaction</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__TRANSACTION = Bpmn2Package.DOCUMENT_ROOT__TRANSACTION;
+
+ /**
+ * The feature id for the '<em><b>User Task</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__USER_TASK = Bpmn2Package.DOCUMENT_ROOT__USER_TASK;
+
+ /**
+ * The feature id for the '<em><b>Global</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__GLOBAL = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 0;
+
+ /**
+ * The feature id for the '<em><b>Import Type</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__IMPORT_TYPE = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 1;
+
+ /**
+ * The feature id for the '<em><b>On Entry Script</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__ON_ENTRY_SCRIPT = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 2;
+
+ /**
+ * The feature id for the '<em><b>On Exit Script</b></em>' containment reference.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__ON_EXIT_SCRIPT = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 3;
+
+ /**
+ * The feature id for the '<em><b>Package Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__PACKAGE_NAME = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 4;
+
+ /**
+ * The feature id for the '<em><b>Priority</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__PRIORITY = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 5;
+
+ /**
+ * The feature id for the '<em><b>Rule Flow Group</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__RULE_FLOW_GROUP = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 6;
+
+ /**
+ * The feature id for the '<em><b>Task Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__TASK_NAME = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 7;
+
+ /**
+ * The feature id for the '<em><b>Version</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__VERSION = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 8;
+
+ /**
+ * The feature id for the '<em><b>Wait For Completion</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__WAIT_FOR_COMPLETION = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 9;
+
+ /**
+ * The feature id for the '<em><b>Independent</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT__INDEPENDENT = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 10;
+
+ /**
+ * The number of structural features of the '<em>Document Root</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int DOCUMENT_ROOT_FEATURE_COUNT = Bpmn2Package.DOCUMENT_ROOT_FEATURE_COUNT + 11;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.GlobalTypeImpl <em>Global Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.GlobalTypeImpl
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getGlobalType()
+ * @generated
+ */
+ int GLOBAL_TYPE = 1;
+
+ /**
+ * The feature id for the '<em><b>Identifier</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GLOBAL_TYPE__IDENTIFIER = 0;
+
+ /**
+ * The feature id for the '<em><b>Type</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GLOBAL_TYPE__TYPE = 1;
+
+ /**
+ * The number of structural features of the '<em>Global Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int GLOBAL_TYPE_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ImportTypeImpl <em>Import Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ImportTypeImpl
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getImportType()
+ * @generated
+ */
+ int IMPORT_TYPE = 2;
+
+ /**
+ * The feature id for the '<em><b>Name</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IMPORT_TYPE__NAME = 0;
+
+ /**
+ * The number of structural features of the '<em>Import Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int IMPORT_TYPE_FEATURE_COUNT = 1;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.OnEntryScriptTypeImpl <em>On Entry Script Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.OnEntryScriptTypeImpl
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getOnEntryScriptType()
+ * @generated
+ */
+ int ON_ENTRY_SCRIPT_TYPE = 3;
+
+ /**
+ * The feature id for the '<em><b>Script</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ON_ENTRY_SCRIPT_TYPE__SCRIPT = 0;
+
+ /**
+ * The feature id for the '<em><b>Script Format</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ON_ENTRY_SCRIPT_TYPE__SCRIPT_FORMAT = 1;
+
+ /**
+ * The number of structural features of the '<em>On Entry Script Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ON_ENTRY_SCRIPT_TYPE_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.OnExitScriptTypeImpl <em>On Exit Script Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.OnExitScriptTypeImpl
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getOnExitScriptType()
+ * @generated
+ */
+ int ON_EXIT_SCRIPT_TYPE = 4;
+
+ /**
+ * The feature id for the '<em><b>Script</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ON_EXIT_SCRIPT_TYPE__SCRIPT = 0;
+
+ /**
+ * The feature id for the '<em><b>Script Format</b></em>' attribute.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ON_EXIT_SCRIPT_TYPE__SCRIPT_FORMAT = 1;
+
+ /**
+ * The number of structural features of the '<em>On Exit Script Type</em>' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ * @ordered
+ */
+ int ON_EXIT_SCRIPT_TYPE_FEATURE_COUNT = 2;
+
+ /**
+ * The meta object id for the '<em>Package Name Type</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getPackageNameType()
+ * @generated
+ */
+ int PACKAGE_NAME_TYPE = 5;
+
+ /**
+ * The meta object id for the '<em>Priority Type</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.math.BigInteger
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getPriorityType()
+ * @generated
+ */
+ int PRIORITY_TYPE = 6;
+
+ /**
+ * The meta object id for the '<em>Rule Flow Group Type</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getRuleFlowGroupType()
+ * @generated
+ */
+ int RULE_FLOW_GROUP_TYPE = 7;
+
+ /**
+ * The meta object id for the '<em>Task Name Type</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getTaskNameType()
+ * @generated
+ */
+ int TASK_NAME_TYPE = 8;
+
+ /**
+ * The meta object id for the '<em>Version Type</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.math.BigInteger
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getVersionType()
+ * @generated
+ */
+ int VERSION_TYPE = 9;
+
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot <em>Document Root</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Document Root</em>'.
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot
+ * @generated
+ */
+ EClass getDocumentRoot();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getGlobal <em>Global</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Global</em>'.
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getGlobal()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ EReference getDocumentRoot_Global();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getImportType <em>Import Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>Import Type</em>'.
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getImportType()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ EReference getDocumentRoot_ImportType();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getOnEntryScript <em>On Entry Script</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>On Entry Script</em>'.
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getOnEntryScript()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ EReference getDocumentRoot_OnEntryScript();
+
+ /**
+ * Returns the meta object for the containment reference '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getOnExitScript <em>On Exit Script</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the containment reference '<em>On Exit Script</em>'.
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getOnExitScript()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ EReference getDocumentRoot_OnExitScript();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getPackageName <em>Package Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Package Name</em>'.
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getPackageName()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ EAttribute getDocumentRoot_PackageName();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getPriority <em>Priority</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Priority</em>'.
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getPriority()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ EAttribute getDocumentRoot_Priority();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getRuleFlowGroup <em>Rule Flow Group</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Rule Flow Group</em>'.
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getRuleFlowGroup()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ EAttribute getDocumentRoot_RuleFlowGroup();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getTaskName <em>Task Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Task Name</em>'.
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getTaskName()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ EAttribute getDocumentRoot_TaskName();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getVersion <em>Version</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Version</em>'.
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#getVersion()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ EAttribute getDocumentRoot_Version();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#isWaitForCompletion <em>Wait For Completion</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Wait For Completion</em>'.
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#isWaitForCompletion()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ EAttribute getDocumentRoot_WaitForCompletion();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#isIndependent <em>Independent</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Independent</em>'.
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.DocumentRoot#isIndependent()
+ * @see #getDocumentRoot()
+ * @generated
+ */
+ EAttribute getDocumentRoot_Independent();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.GlobalType <em>Global Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Global Type</em>'.
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.GlobalType
+ * @generated
+ */
+ EClass getGlobalType();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.GlobalType#getIdentifier <em>Identifier</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Identifier</em>'.
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.GlobalType#getIdentifier()
+ * @see #getGlobalType()
+ * @generated
+ */
+ EAttribute getGlobalType_Identifier();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.GlobalType#getType <em>Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Type</em>'.
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.GlobalType#getType()
+ * @see #getGlobalType()
+ * @generated
+ */
+ EAttribute getGlobalType_Type();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.ImportType <em>Import Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>Import Type</em>'.
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.ImportType
+ * @generated
+ */
+ EClass getImportType();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.ImportType#getName <em>Name</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Name</em>'.
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.ImportType#getName()
+ * @see #getImportType()
+ * @generated
+ */
+ EAttribute getImportType_Name();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnEntryScriptType <em>On Entry Script Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>On Entry Script Type</em>'.
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnEntryScriptType
+ * @generated
+ */
+ EClass getOnEntryScriptType();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnEntryScriptType#getScript <em>Script</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Script</em>'.
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnEntryScriptType#getScript()
+ * @see #getOnEntryScriptType()
+ * @generated
+ */
+ EAttribute getOnEntryScriptType_Script();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnEntryScriptType#getScriptFormat <em>Script Format</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Script Format</em>'.
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnEntryScriptType#getScriptFormat()
+ * @see #getOnEntryScriptType()
+ * @generated
+ */
+ EAttribute getOnEntryScriptType_ScriptFormat();
+
+ /**
+ * Returns the meta object for class '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnExitScriptType <em>On Exit Script Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for class '<em>On Exit Script Type</em>'.
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnExitScriptType
+ * @generated
+ */
+ EClass getOnExitScriptType();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnExitScriptType#getScript <em>Script</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Script</em>'.
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnExitScriptType#getScript()
+ * @see #getOnExitScriptType()
+ * @generated
+ */
+ EAttribute getOnExitScriptType_Script();
+
+ /**
+ * Returns the meta object for the attribute '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnExitScriptType#getScriptFormat <em>Script Format</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for the attribute '<em>Script Format</em>'.
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.OnExitScriptType#getScriptFormat()
+ * @see #getOnExitScriptType()
+ * @generated
+ */
+ EAttribute getOnExitScriptType_ScriptFormat();
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.String <em>Package Name Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Package Name Type</em>'.
+ * @see java.lang.String
+ * @model instanceClass="java.lang.String"
+ * extendedMetaData="name='packageName_._type' baseType='http://www.eclipse.org/emf/2003/XMLType#string'"
+ * @generated
+ */
+ EDataType getPackageNameType();
+
+ /**
+ * Returns the meta object for data type '{@link java.math.BigInteger <em>Priority Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Priority Type</em>'.
+ * @see java.math.BigInteger
+ * @model instanceClass="java.math.BigInteger"
+ * extendedMetaData="name='priority_._type' baseType='http://www.eclipse.org/emf/2003/XMLType#integer' minInclusive='1'"
+ * @generated
+ */
+ EDataType getPriorityType();
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.String <em>Rule Flow Group Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Rule Flow Group Type</em>'.
+ * @see java.lang.String
+ * @model instanceClass="java.lang.String"
+ * extendedMetaData="name='ruleFlowGroup_._type' baseType='http://www.eclipse.org/emf/2003/XMLType#string'"
+ * @generated
+ */
+ EDataType getRuleFlowGroupType();
+
+ /**
+ * Returns the meta object for data type '{@link java.lang.String <em>Task Name Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Task Name Type</em>'.
+ * @see java.lang.String
+ * @model instanceClass="java.lang.String"
+ * extendedMetaData="name='taskName_._type' baseType='http://www.eclipse.org/emf/2003/XMLType#string'"
+ * @generated
+ */
+ EDataType getTaskNameType();
+
+ /**
+ * Returns the meta object for data type '{@link java.math.BigInteger <em>Version Type</em>}'.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the meta object for data type '<em>Version Type</em>'.
+ * @see java.math.BigInteger
+ * @model instanceClass="java.math.BigInteger"
+ * extendedMetaData="name='version_._type' baseType='http://www.eclipse.org/emf/2003/XMLType#integer' minInclusive='0'"
+ * @generated
+ */
+ EDataType getVersionType();
+
+ /**
+ * Returns the factory that creates the instances of the model.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @return the factory that creates the instances of the model.
+ * @generated
+ */
+ ModelFactory getModelFactory();
+
+ /**
+ * <!-- begin-user-doc -->
+ * Defines literals for the meta objects that represent
+ * <ul>
+ * <li>each class,</li>
+ * <li>each feature of each class,</li>
+ * <li>each enum,</li>
+ * <li>and each data type</li>
+ * </ul>
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ interface Literals {
+ /**
+ * The meta object literal for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.DocumentRootImpl <em>Document Root</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.DocumentRootImpl
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getDocumentRoot()
+ * @generated
+ */
+ EClass DOCUMENT_ROOT = eINSTANCE.getDocumentRoot();
+
+ /**
+ * The meta object literal for the '<em><b>Global</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DOCUMENT_ROOT__GLOBAL = eINSTANCE.getDocumentRoot_Global();
+
+ /**
+ * The meta object literal for the '<em><b>Import Type</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DOCUMENT_ROOT__IMPORT_TYPE = eINSTANCE.getDocumentRoot_ImportType();
+
+ /**
+ * The meta object literal for the '<em><b>On Entry Script</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DOCUMENT_ROOT__ON_ENTRY_SCRIPT = eINSTANCE.getDocumentRoot_OnEntryScript();
+
+ /**
+ * The meta object literal for the '<em><b>On Exit Script</b></em>' containment reference feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EReference DOCUMENT_ROOT__ON_EXIT_SCRIPT = eINSTANCE.getDocumentRoot_OnExitScript();
+
+ /**
+ * The meta object literal for the '<em><b>Package Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DOCUMENT_ROOT__PACKAGE_NAME = eINSTANCE.getDocumentRoot_PackageName();
+
+ /**
+ * The meta object literal for the '<em><b>Priority</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DOCUMENT_ROOT__PRIORITY = eINSTANCE.getDocumentRoot_Priority();
+
+ /**
+ * The meta object literal for the '<em><b>Rule Flow Group</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DOCUMENT_ROOT__RULE_FLOW_GROUP = eINSTANCE.getDocumentRoot_RuleFlowGroup();
+
+ /**
+ * The meta object literal for the '<em><b>Task Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DOCUMENT_ROOT__TASK_NAME = eINSTANCE.getDocumentRoot_TaskName();
+
+ /**
+ * The meta object literal for the '<em><b>Version</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DOCUMENT_ROOT__VERSION = eINSTANCE.getDocumentRoot_Version();
+
+ /**
+ * The meta object literal for the '<em><b>Wait For Completion</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DOCUMENT_ROOT__WAIT_FOR_COMPLETION = eINSTANCE.getDocumentRoot_WaitForCompletion();
+
+ /**
+ * The meta object literal for the '<em><b>Independent</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute DOCUMENT_ROOT__INDEPENDENT = eINSTANCE.getDocumentRoot_Independent();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.GlobalTypeImpl <em>Global Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.GlobalTypeImpl
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getGlobalType()
+ * @generated
+ */
+ EClass GLOBAL_TYPE = eINSTANCE.getGlobalType();
+
+ /**
+ * The meta object literal for the '<em><b>Identifier</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute GLOBAL_TYPE__IDENTIFIER = eINSTANCE.getGlobalType_Identifier();
+
+ /**
+ * The meta object literal for the '<em><b>Type</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute GLOBAL_TYPE__TYPE = eINSTANCE.getGlobalType_Type();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ImportTypeImpl <em>Import Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ImportTypeImpl
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getImportType()
+ * @generated
+ */
+ EClass IMPORT_TYPE = eINSTANCE.getImportType();
+
+ /**
+ * The meta object literal for the '<em><b>Name</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute IMPORT_TYPE__NAME = eINSTANCE.getImportType_Name();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.OnEntryScriptTypeImpl <em>On Entry Script Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.OnEntryScriptTypeImpl
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getOnEntryScriptType()
+ * @generated
+ */
+ EClass ON_ENTRY_SCRIPT_TYPE = eINSTANCE.getOnEntryScriptType();
+
+ /**
+ * The meta object literal for the '<em><b>Script</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ON_ENTRY_SCRIPT_TYPE__SCRIPT = eINSTANCE.getOnEntryScriptType_Script();
+
+ /**
+ * The meta object literal for the '<em><b>Script Format</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ON_ENTRY_SCRIPT_TYPE__SCRIPT_FORMAT = eINSTANCE.getOnEntryScriptType_ScriptFormat();
+
+ /**
+ * The meta object literal for the '{@link org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.OnExitScriptTypeImpl <em>On Exit Script Type</em>}' class.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.OnExitScriptTypeImpl
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getOnExitScriptType()
+ * @generated
+ */
+ EClass ON_EXIT_SCRIPT_TYPE = eINSTANCE.getOnExitScriptType();
+
+ /**
+ * The meta object literal for the '<em><b>Script</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ON_EXIT_SCRIPT_TYPE__SCRIPT = eINSTANCE.getOnExitScriptType_Script();
+
+ /**
+ * The meta object literal for the '<em><b>Script Format</b></em>' attribute feature.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @generated
+ */
+ EAttribute ON_EXIT_SCRIPT_TYPE__SCRIPT_FORMAT = eINSTANCE.getOnExitScriptType_ScriptFormat();
+
+ /**
+ * The meta object literal for the '<em>Package Name Type</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getPackageNameType()
+ * @generated
+ */
+ EDataType PACKAGE_NAME_TYPE = eINSTANCE.getPackageNameType();
+
+ /**
+ * The meta object literal for the '<em>Priority Type</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.math.BigInteger
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getPriorityType()
+ * @generated
+ */
+ EDataType PRIORITY_TYPE = eINSTANCE.getPriorityType();
+
+ /**
+ * The meta object literal for the '<em>Rule Flow Group Type</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getRuleFlowGroupType()
+ * @generated
+ */
+ EDataType RULE_FLOW_GROUP_TYPE = eINSTANCE.getRuleFlowGroupType();
+
+ /**
+ * The meta object literal for the '<em>Task Name Type</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.lang.String
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getTaskNameType()
+ * @generated
+ */
+ EDataType TASK_NAME_TYPE = eINSTANCE.getTaskNameType();
+
+ /**
+ * The meta object literal for the '<em>Version Type</em>' data type.
+ * <!-- begin-user-doc -->
+ * <!-- end-user-doc -->
+ * @see java.math.BigInteger
+ * @see org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.impl.ModelPackageImpl#getVersionType()
+ * @generated
+ */
+ EDataType VERSION_TYPE = eINSTANCE.getVersionType();
+
+ }
+
+} //ModelPackage
diff --git a/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/util/JbpmModelUtil.java b/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/util/JbpmModelUtil.java
index 3bc4656..299aa86 100644
--- a/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/util/JbpmModelUtil.java
+++ b/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/util/JbpmModelUtil.java
@@ -1,290 +1,290 @@
-package org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.util;
-
-import java.util.Hashtable;
-import java.util.List;
-import java.util.Map.Entry;
-
-import org.eclipse.bpmn2.Definitions;
-import org.eclipse.bpmn2.ItemDefinition;
-import org.eclipse.bpmn2.ItemKind;
-import org.eclipse.bpmn2.Process;
-import org.eclipse.bpmn2.modeler.core.model.Bpmn2ModelerFactory;
-import org.eclipse.bpmn2.modeler.core.utils.ImportUtil;
-import org.eclipse.bpmn2.modeler.core.utils.ModelUtil;
-import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.drools.process.core.datatype.DataType;
-import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.drools.process.core.datatype.DataTypeFactory;
-import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.drools.process.core.datatype.DataTypeRegistry;
-import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.drools.process.core.datatype.impl.type.EnumDataType;
-import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.drools.process.core.datatype.impl.type.UndefinedDataType;
-import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.GlobalType;
-import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.ImportType;
-import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.ModelFactory;
-import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.ModelPackage;
-import org.eclipse.bpmn2.modeler.ui.editor.BPMN2Editor;
-import org.eclipse.bpmn2.modeler.ui.property.dialogs.SchemaImportDialog;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.transaction.RecordingCommand;
-import org.eclipse.emf.transaction.TransactionalEditingDomain;
-import org.eclipse.jface.dialogs.MessageDialog;
-import org.eclipse.jface.window.Window;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.swt.widgets.Shell;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.dialogs.ListDialog;
-
-public class JbpmModelUtil {
-
- /**
- * Helper method to display a Java class import dialog and create a new ImportType. This method
- * will also create a corresponding ItemDefinition for the newly imported java type.
- *
- * @param object - a context EObject used to search for the Process in which the new
- * ImportType will be created.
- * @return an ImportType object if it was created, null if the user canceled the import dialog.
- */
- public static String showImportDialog(EObject object) {
- String className = null;
- Shell shell = ModelUtil.getEditor(object).getSite().getShell();
- SchemaImportDialog dialog = new SchemaImportDialog(shell, SchemaImportDialog.ALLOW_JAVA);
- if (dialog.open() == Window.OK) {
- Object result[] = dialog.getResult();
- if (result.length == 1 && result[0] instanceof Class) {
- className = ((Class)result[0]).getName();
- }
- }
- return className;
- }
-
- public static ImportType addImport(final String className, final EObject object) {
- if (className==null || className.isEmpty())
- return null;
-
- final Definitions definitions = ModelUtil.getDefinitions(object);
- if (definitions==null)
- return null;
-
- Process process = null;
- if (object instanceof Process)
- process = (Process)object;
- else {
- process = (Process) ModelUtil.findNearestAncestor(object, new Class[] { Process.class });
- if (process==null) {
- List<Process> processes = ModelUtil.getAllRootElements(definitions, Process.class);
- if (processes.size()>1) {
- // TODO: allow user to pick one?
- process = processes.get(0);
- }
- else if (processes.size()==1)
- process = processes.get(0);
- else {
- Shell shell = ModelUtil.getEditor(object).getSite().getShell();
- MessageDialog.openError(shell, "Error", "No processes defined!");
- }
- }
- }
-
- final Process fProcess = process;
- final ImportType newImport = (ImportType)ModelFactory.eINSTANCE.create(ModelPackage.eINSTANCE.getImportType());
- newImport.setName(className);
-
- TransactionalEditingDomain domain = ModelUtil.getEditor(object).getEditingDomain();
- domain.getCommandStack().execute(new RecordingCommand(domain) {
- @Override
- protected void doExecute() {
-
- ModelUtil.addExtensionAttributeValue(fProcess,
- ModelPackage.eINSTANCE.getDocumentRoot_ImportType(), newImport);
-
- if (object instanceof ItemDefinition) {
- // update the ItemDefinition passed to us...
- ItemDefinition oldItemDef = (ItemDefinition)object;
- String oldName = ModelUtil.getStringWrapperValue(oldItemDef.getStructureRef());
- // ...but only if the structureRef is empty
- if (oldName!=null && !oldName.isEmpty()) {
- // if not, duplicate the old one
- ItemDefinition newItemDef = Bpmn2ModelerFactory.create(ItemDefinition.class);
- newItemDef.setItemKind(ItemKind.PHYSICAL);
- EObject structureRef = ModelUtil.createStringWrapper(oldName);
- newItemDef.setStructureRef(structureRef);
- // and add it as a new one
- definitions.getRootElements().add(newItemDef);
- ModelUtil.setID(newItemDef);
- }
- // and now update the existing item's structureRef
- oldItemDef.setItemKind(ItemKind.PHYSICAL);
- EObject structureRef = ModelUtil.createStringWrapper(className);
- oldItemDef.setStructureRef(structureRef);
- }
- else {
- // create a new ItemDefinition
- ItemDefinition itemDef = Bpmn2ModelerFactory.create(ItemDefinition.class);
- itemDef.setItemKind(ItemKind.PHYSICAL);
- EObject structureRef = ModelUtil.createStringWrapper(className);
- itemDef.setStructureRef(structureRef);
- if (ImportUtil.findItemDefinition(definitions, itemDef)==null) {
-
- // create a reference to the ImportType as an extension element to the ItemDefinition?
-// ImportType ref = (ImportType)ModelFactory.eINSTANCE.create(ModelPackage.eINSTANCE.getImportType());
-// ((InternalEObject)ref).eSetProxyURI(EcoreUtil.getURI(newImport));
-// ModelUtil.addExtensionAttributeValue(itemDef, feature, ref);
- // Nope, don't need this! The ItemDefinition needs to stick around, otherwise the data types
- // for process variables and globals would disappear. Besides, jBPM allows data types
- // (a.k.a. ItemDefinitions) to be defined as sort of "forward references" without actual
- // knowledge of the physicial structure of the data type - these get resolved (somehow,
- // through FM maybe?) at runtime.
- // As a side note: if a type is unknown (i.e. there is no "import") then the structure
- // will be unknown in java scripts (FormalExpressions).
-
- // add the ItemDefinition to the root elements
- definitions.getRootElements().add(itemDef);
- ModelUtil.setID(itemDef);
- }
- }
- }
- });
- return newImport;
- }
-
- /**
- * This method compiles a list of all known "data types" (a.k.a. ItemDefinitions) that
- * are in scope for the given context element.
- *
- * There are 4 different places to look:
- * 1. the Data Type registry, which contains a list of all known "native" types, e.g. java
- * Strings, Integers, etc.
- * 2. the list of ImportType extension values in the Process ancestor nearest to the given
- * context object.
- * 3. the list of GlobalType extension values, also in the nearest Process ancestor
- * 4. the list of ItemDefinitions in the root elements.
- *
- * @param object - a context EObject used to search for ItemDefinitions, Globals and Imports
- * @return a map of Strings and Objects representing the various data types
- */
- public static Hashtable<String, Object> collectAllDataTypes(EObject object) {
-
- Hashtable<String,Object> choices = new Hashtable<String,Object>();
-
- // add all native types (as defined in the DataTypeRegistry)
- DataTypeRegistry.getFactory("dummy");
- for (Entry<String, DataTypeFactory> e : DataTypeRegistry.instance.entrySet()) {
- DataType dt = e.getValue().createDataType();
- if (dt instanceof EnumDataType || dt instanceof UndefinedDataType)
- continue;
- choices.put(dt.getStringType(),dt);
- }
-
- // add all imported data types
- EObject parent = object;
- while (parent!=null && !(parent instanceof org.eclipse.bpmn2.Process))
- parent = parent.eContainer();
-
- String s;
- List<ImportType> imports = ModelUtil.getAllExtensionAttributeValues(parent, ImportType.class);
- for (ImportType it : imports) {
- s = it.getName();
- if (s!=null && !s.isEmpty())
- choices.put(s, it);
- }
-
- // add all Global variable types
- List<GlobalType> globals = ModelUtil.getAllExtensionAttributeValues(parent, GlobalType.class);
- for (GlobalType gt : globals) {
- s = gt.getType();
- if (s!=null && !s.isEmpty())
- choices.put(s, gt);
- }
-
- // add all ItemDefinitions
- Definitions defs = ModelUtil.getDefinitions(object);
- List<ItemDefinition> itemDefs = ModelUtil.getAllRootElements(defs, ItemDefinition.class);
- for (ItemDefinition id : itemDefs) {
- s = ModelUtil.getStringWrapperValue(id.getStructureRef());
- if (s==null || s.isEmpty())
- s = id.getId();
- choices.put(s,id);
- }
-
- return choices;
- }
-
- /**
- * This method returns a string representation for a "data type". This is intended to
- * be used to interpret the various objects in the map returned by collectAllDataTypes().
- *
- * @param value - one of the Object values in the map returned by collectAllDataTypes().
- * @return a string representation of the data type
- */
- public static String getDataType(Object value) {
- String stringValue = null;
- if (value instanceof String) {
- stringValue = (String)value;
- }
- else if (value instanceof GlobalType) {
- stringValue = ((GlobalType)value).getType();
- }
- else if (value instanceof DataType) {
- stringValue = ((DataType)value).getStringType();
- }
- else if (value instanceof ImportType) {
- stringValue = ((ImportType)value).getName();
- }
- else if (value instanceof ItemDefinition) {
- stringValue = ModelUtil.getDisplayName((ItemDefinition)value);
- }
- return stringValue;
- }
-
- /**
- * This method returns an ItemDefinition object for a "data type". This is intended to
- * be used to interpret the various objects in the map returned by collectAllDataTypes().
- *
- * NOTE: This method will create an ItemDefinition if it does not already exist.
- *
- * @param businessObject - a context EObject used to search for ItemDefinitions, and to create
- * new ItemDefinitions if necessary.
- * @param value - one of the Object values in the map returned by collectAllDataTypes().
- * @return an ItemDefinition for the data type
- */
- public static ItemDefinition getDataType(EObject context, Object value) {
- ItemDefinition itemDef = null;
- if (value instanceof String) {
- itemDef = findOrCreateItemDefinition( context, (String)value );
- }
- else if (value instanceof GlobalType) {
- itemDef = findOrCreateItemDefinition( context, ((GlobalType)value).getType() );
- }
- else if (value instanceof DataType) {
- itemDef = findOrCreateItemDefinition( context, ((DataType)value).getStringType() );
- }
- else if (value instanceof ImportType) {
- itemDef = findOrCreateItemDefinition( context, ((ImportType)value).getName() );
- }
- else if (value instanceof ItemDefinition) {
- itemDef = (ItemDefinition)value;
- }
- return itemDef;
- }
-
- public static ItemDefinition findOrCreateItemDefinition(EObject context, String structureRef) {
- ItemDefinition itemDef = null;
- Definitions definitions = ModelUtil.getDefinitions(context);
- List<ItemDefinition> itemDefs = ModelUtil.getAllRootElements(definitions, ItemDefinition.class);
- for (ItemDefinition id : itemDefs) {
- String s = ModelUtil.getStringWrapperValue(id.getStructureRef());
- if (s!=null && s.equals(structureRef)) {
- itemDef = id;
- break;
- }
- }
- if (itemDef==null)
- {
- itemDef = Bpmn2ModelerFactory.create(ItemDefinition.class);
- itemDef.setStructureRef(ModelUtil.createStringWrapper(structureRef));
- itemDef.setItemKind(ItemKind.PHYSICAL);
- definitions.getRootElements().add(itemDef);
- ModelUtil.setID(itemDef);
- }
- return itemDef;
- }
-}
+package org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.util;
+
+import java.util.Hashtable;
+import java.util.List;
+import java.util.Map.Entry;
+
+import org.eclipse.bpmn2.Definitions;
+import org.eclipse.bpmn2.ItemDefinition;
+import org.eclipse.bpmn2.ItemKind;
+import org.eclipse.bpmn2.Process;
+import org.eclipse.bpmn2.modeler.core.model.Bpmn2ModelerFactory;
+import org.eclipse.bpmn2.modeler.core.utils.ImportUtil;
+import org.eclipse.bpmn2.modeler.core.utils.ModelUtil;
+import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.drools.process.core.datatype.DataType;
+import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.drools.process.core.datatype.DataTypeFactory;
+import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.drools.process.core.datatype.DataTypeRegistry;
+import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.drools.process.core.datatype.impl.type.EnumDataType;
+import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.drools.process.core.datatype.impl.type.UndefinedDataType;
+import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.GlobalType;
+import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.ImportType;
+import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.ModelFactory;
+import org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5.model.ModelPackage;
+import org.eclipse.bpmn2.modeler.ui.editor.BPMN2Editor;
+import org.eclipse.bpmn2.modeler.ui.property.dialogs.SchemaImportDialog;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.jface.dialogs.MessageDialog;
+import org.eclipse.jface.window.Window;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.swt.widgets.Shell;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.ListDialog;
+
+public class JbpmModelUtil {
+
+ /**
+ * Helper method to display a Java class import dialog and create a new ImportType. This method
+ * will also create a corresponding ItemDefinition for the newly imported java type.
+ *
+ * @param object - a context EObject used to search for the Process in which the new
+ * ImportType will be created.
+ * @return an ImportType object if it was created, null if the user canceled the import dialog.
+ */
+ public static String showImportDialog(EObject object) {
+ String className = null;
+ Shell shell = ModelUtil.getEditor(object).getSite().getShell();
+ SchemaImportDialog dialog = new SchemaImportDialog(shell, SchemaImportDialog.ALLOW_JAVA);
+ if (dialog.open() == Window.OK) {
+ Object result[] = dialog.getResult();
+ if (result.length == 1 && result[0] instanceof Class) {
+ className = ((Class)result[0]).getName();
+ }
+ }
+ return className;
+ }
+
+ public static ImportType addImport(final String className, final EObject object) {
+ if (className==null || className.isEmpty())
+ return null;
+
+ final Definitions definitions = ModelUtil.getDefinitions(object);
+ if (definitions==null)
+ return null;
+
+ Process process = null;
+ if (object instanceof Process)
+ process = (Process)object;
+ else {
+ process = (Process) ModelUtil.findNearestAncestor(object, new Class[] { Process.class });
+ if (process==null) {
+ List<Process> processes = ModelUtil.getAllRootElements(definitions, Process.class);
+ if (processes.size()>1) {
+ // TODO: allow user to pick one?
+ process = processes.get(0);
+ }
+ else if (processes.size()==1)
+ process = processes.get(0);
+ else {
+ Shell shell = ModelUtil.getEditor(object).getSite().getShell();
+ MessageDialog.openError(shell, "Error", "No processes defined!");
+ }
+ }
+ }
+
+ final Process fProcess = process;
+ final ImportType newImport = (ImportType)ModelFactory.eINSTANCE.create(ModelPackage.eINSTANCE.getImportType());
+ newImport.setName(className);
+
+ TransactionalEditingDomain domain = ModelUtil.getEditor(object).getEditingDomain();
+ domain.getCommandStack().execute(new RecordingCommand(domain) {
+ @Override
+ protected void doExecute() {
+
+ ModelUtil.addExtensionAttributeValue(fProcess,
+ ModelPackage.eINSTANCE.getDocumentRoot_ImportType(), newImport);
+
+ if (object instanceof ItemDefinition) {
+ // update the ItemDefinition passed to us...
+ ItemDefinition oldItemDef = (ItemDefinition)object;
+ String oldName = ModelUtil.getStringWrapperValue(oldItemDef.getStructureRef());
+ // ...but only if the structureRef is empty
+ if (oldName!=null && !oldName.isEmpty()) {
+ // if not, duplicate the old one
+ ItemDefinition newItemDef = Bpmn2ModelerFactory.create(ItemDefinition.class);
+ newItemDef.setItemKind(ItemKind.PHYSICAL);
+ EObject structureRef = ModelUtil.createStringWrapper(oldName);
+ newItemDef.setStructureRef(structureRef);
+ // and add it as a new one
+ definitions.getRootElements().add(newItemDef);
+ ModelUtil.setID(newItemDef);
+ }
+ // and now update the existing item's structureRef
+ oldItemDef.setItemKind(ItemKind.PHYSICAL);
+ EObject structureRef = ModelUtil.createStringWrapper(className);
+ oldItemDef.setStructureRef(structureRef);
+ }
+ else {
+ // create a new ItemDefinition
+ ItemDefinition itemDef = Bpmn2ModelerFactory.create(ItemDefinition.class);
+ itemDef.setItemKind(ItemKind.PHYSICAL);
+ EObject structureRef = ModelUtil.createStringWrapper(className);
+ itemDef.setStructureRef(structureRef);
+ if (ImportUtil.findItemDefinition(definitions, itemDef)==null) {
+
+ // create a reference to the ImportType as an extension element to the ItemDefinition?
+// ImportType ref = (ImportType)ModelFactory.eINSTANCE.create(ModelPackage.eINSTANCE.getImportType());
+// ((InternalEObject)ref).eSetProxyURI(EcoreUtil.getURI(newImport));
+// ModelUtil.addExtensionAttributeValue(itemDef, feature, ref);
+ // Nope, don't need this! The ItemDefinition needs to stick around, otherwise the data types
+ // for process variables and globals would disappear. Besides, jBPM allows data types
+ // (a.k.a. ItemDefinitions) to be defined as sort of "forward references" without actual
+ // knowledge of the physicial structure of the data type - these get resolved (somehow,
+ // through FM maybe?) at runtime.
+ // As a side note: if a type is unknown (i.e. there is no "import") then the structure
+ // will be unknown in java scripts (FormalExpressions).
+
+ // add the ItemDefinition to the root elements
+ definitions.getRootElements().add(itemDef);
+ ModelUtil.setID(itemDef);
+ }
+ }
+ }
+ });
+ return newImport;
+ }
+
+ /**
+ * This method compiles a list of all known "data types" (a.k.a. ItemDefinitions) that
+ * are in scope for the given context element.
+ *
+ * There are 4 different places to look:
+ * 1. the Data Type registry, which contains a list of all known "native" types, e.g. java
+ * Strings, Integers, etc.
+ * 2. the list of ImportType extension values in the Process ancestor nearest to the given
+ * context object.
+ * 3. the list of GlobalType extension values, also in the nearest Process ancestor
+ * 4. the list of ItemDefinitions in the root elements.
+ *
+ * @param object - a context EObject used to search for ItemDefinitions, Globals and Imports
+ * @return a mapDiagramToViewer of Strings and Objects representing the various data types
+ */
+ public static Hashtable<String, Object> collectAllDataTypes(EObject object) {
+
+ Hashtable<String,Object> choices = new Hashtable<String,Object>();
+
+ // add all native types (as defined in the DataTypeRegistry)
+ DataTypeRegistry.getFactory("dummy");
+ for (Entry<String, DataTypeFactory> e : DataTypeRegistry.instance.entrySet()) {
+ DataType dt = e.getValue().createDataType();
+ if (dt instanceof EnumDataType || dt instanceof UndefinedDataType)
+ continue;
+ choices.put(dt.getStringType(),dt);
+ }
+
+ // add all imported data types
+ EObject parent = object;
+ while (parent!=null && !(parent instanceof org.eclipse.bpmn2.Process))
+ parent = parent.eContainer();
+
+ String s;
+ List<ImportType> imports = ModelUtil.getAllExtensionAttributeValues(parent, ImportType.class);
+ for (ImportType it : imports) {
+ s = it.getName();
+ if (s!=null && !s.isEmpty())
+ choices.put(s, it);
+ }
+
+ // add all Global variable types
+ List<GlobalType> globals = ModelUtil.getAllExtensionAttributeValues(parent, GlobalType.class);
+ for (GlobalType gt : globals) {
+ s = gt.getType();
+ if (s!=null && !s.isEmpty())
+ choices.put(s, gt);
+ }
+
+ // add all ItemDefinitions
+ Definitions defs = ModelUtil.getDefinitions(object);
+ List<ItemDefinition> itemDefs = ModelUtil.getAllRootElements(defs, ItemDefinition.class);
+ for (ItemDefinition id : itemDefs) {
+ s = ModelUtil.getStringWrapperValue(id.getStructureRef());
+ if (s==null || s.isEmpty())
+ s = id.getId();
+ choices.put(s,id);
+ }
+
+ return choices;
+ }
+
+ /**
+ * This method returns a string representation for a "data type". This is intended to
+ * be used to interpret the various objects in the mapDiagramToViewer returned by collectAllDataTypes().
+ *
+ * @param value - one of the Object values in the mapDiagramToViewer returned by collectAllDataTypes().
+ * @return a string representation of the data type
+ */
+ public static String getDataType(Object value) {
+ String stringValue = null;
+ if (value instanceof String) {
+ stringValue = (String)value;
+ }
+ else if (value instanceof GlobalType) {
+ stringValue = ((GlobalType)value).getType();
+ }
+ else if (value instanceof DataType) {
+ stringValue = ((DataType)value).getStringType();
+ }
+ else if (value instanceof ImportType) {
+ stringValue = ((ImportType)value).getName();
+ }
+ else if (value instanceof ItemDefinition) {
+ stringValue = ModelUtil.getDisplayName((ItemDefinition)value);
+ }
+ return stringValue;
+ }
+
+ /**
+ * This method returns an ItemDefinition object for a "data type". This is intended to
+ * be used to interpret the various objects in the mapDiagramToViewer returned by collectAllDataTypes().
+ *
+ * NOTE: This method will create an ItemDefinition if it does not already exist.
+ *
+ * @param businessObject - a context EObject used to search for ItemDefinitions, and to create
+ * new ItemDefinitions if necessary.
+ * @param value - one of the Object values in the mapDiagramToViewer returned by collectAllDataTypes().
+ * @return an ItemDefinition for the data type
+ */
+ public static ItemDefinition getDataType(EObject context, Object value) {
+ ItemDefinition itemDef = null;
+ if (value instanceof String) {
+ itemDef = findOrCreateItemDefinition( context, (String)value );
+ }
+ else if (value instanceof GlobalType) {
+ itemDef = findOrCreateItemDefinition( context, ((GlobalType)value).getType() );
+ }
+ else if (value instanceof DataType) {
+ itemDef = findOrCreateItemDefinition( context, ((DataType)value).getStringType() );
+ }
+ else if (value instanceof ImportType) {
+ itemDef = findOrCreateItemDefinition( context, ((ImportType)value).getName() );
+ }
+ else if (value instanceof ItemDefinition) {
+ itemDef = (ItemDefinition)value;
+ }
+ return itemDef;
+ }
+
+ public static ItemDefinition findOrCreateItemDefinition(EObject context, String structureRef) {
+ ItemDefinition itemDef = null;
+ Definitions definitions = ModelUtil.getDefinitions(context);
+ List<ItemDefinition> itemDefs = ModelUtil.getAllRootElements(definitions, ItemDefinition.class);
+ for (ItemDefinition id : itemDefs) {
+ String s = ModelUtil.getStringWrapperValue(id.getStructureRef());
+ if (s!=null && s.equals(structureRef)) {
+ itemDef = id;
+ break;
+ }
+ }
+ if (itemDef==null)
+ {
+ itemDef = Bpmn2ModelerFactory.create(ItemDefinition.class);
+ itemDef.setStructureRef(ModelUtil.createStringWrapper(structureRef));
+ itemDef.setItemKind(ItemKind.PHYSICAL);
+ definitions.getRootElements().add(itemDef);
+ ModelUtil.setID(itemDef);
+ }
+ return itemDef;
+ }
+}
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/Bpmn2EditorItemProviderAdapterFactory.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/Bpmn2EditorItemProviderAdapterFactory.java
index d7abb09..ec62a62 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/Bpmn2EditorItemProviderAdapterFactory.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/Bpmn2EditorItemProviderAdapterFactory.java
@@ -1,608 +1,608 @@
-/*******************************************************************************
- * Copyright (c) 2011 Red Hat, Inc.
- * All rights reserved.
- * This program is made available under the terms of the
- * Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Red Hat, Inc. - initial API and implementation
- *
- * @author Bob Brodt
- ******************************************************************************/
-
-package org.eclipse.bpmn2.modeler.ui.adapters;
-
-import java.util.Hashtable;
-
-import org.eclipse.bpmn2.Activity;
-import org.eclipse.bpmn2.Bpmn2Package;
-import org.eclipse.bpmn2.CallActivity;
-import org.eclipse.bpmn2.CallChoreography;
-import org.eclipse.bpmn2.CallConversation;
-import org.eclipse.bpmn2.CompensateEventDefinition;
-import org.eclipse.bpmn2.CorrelationKey;
-import org.eclipse.bpmn2.CorrelationPropertyBinding;
-import org.eclipse.bpmn2.CorrelationPropertyRetrievalExpression;
-import org.eclipse.bpmn2.DataAssociation;
-import org.eclipse.bpmn2.DataInput;
-import org.eclipse.bpmn2.DataObjectReference;
-import org.eclipse.bpmn2.DataOutput;
-import org.eclipse.bpmn2.Error;
-import org.eclipse.bpmn2.ErrorEventDefinition;
-import org.eclipse.bpmn2.Escalation;
-import org.eclipse.bpmn2.EscalationEventDefinition;
-import org.eclipse.bpmn2.EventDefinition;
-import org.eclipse.bpmn2.FlowElement;
-import org.eclipse.bpmn2.FormalExpression;
-import org.eclipse.bpmn2.Import;
-import org.eclipse.bpmn2.Interface;
-import org.eclipse.bpmn2.ItemAwareElement;
-import org.eclipse.bpmn2.ItemDefinition;
-import org.eclipse.bpmn2.LinkEventDefinition;
-import org.eclipse.bpmn2.Message;
-import org.eclipse.bpmn2.MessageEventDefinition;
-import org.eclipse.bpmn2.MessageFlow;
-import org.eclipse.bpmn2.MultiInstanceLoopCharacteristics;
-import org.eclipse.bpmn2.Operation;
-import org.eclipse.bpmn2.Participant;
-import org.eclipse.bpmn2.Process;
-import org.eclipse.bpmn2.Property;
-import org.eclipse.bpmn2.ReceiveTask;
-import org.eclipse.bpmn2.ResourceAssignmentExpression;
-import org.eclipse.bpmn2.ResourceParameterBinding;
-import org.eclipse.bpmn2.ResourceRole;
-import org.eclipse.bpmn2.RootElement;
-import org.eclipse.bpmn2.ScriptTask;
-import org.eclipse.bpmn2.SendTask;
-import org.eclipse.bpmn2.SequenceFlow;
-import org.eclipse.bpmn2.ServiceTask;
-import org.eclipse.bpmn2.Signal;
-import org.eclipse.bpmn2.SignalEventDefinition;
-import org.eclipse.bpmn2.Task;
-import org.eclipse.bpmn2.modeler.core.adapters.AdapterRegistry;
-import org.eclipse.bpmn2.modeler.core.adapters.ExtendedPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.core.adapters.ObjectDescriptor;
-import org.eclipse.bpmn2.modeler.core.runtime.PropertyExtensionDescriptor;
-import org.eclipse.bpmn2.modeler.core.runtime.TargetRuntime;
-import org.eclipse.bpmn2.modeler.core.utils.ModelUtil;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.ActivityPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.CallActivityPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.CallChoreographyPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.CallConversationPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.CompensateEventDefinitionPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.CorrelationKeyPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.CorrelationPropertyBindingPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.CorrelationPropertyRetrievalExpressionPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.DataAssociationPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.DataInputPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.DataObjectReferencePropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.DataOutputPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.ErrorEventDefinitionPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.ErrorPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.EscalationEventDefinitionPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.EscalationPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.EventDefinitionPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.FlowElementPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.FormalExpressionPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.ImportPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.InterfacePropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.ItemAwareElementPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.ItemDefinitionPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.LinkEventDefinitionPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.MessageEventDefinitionPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.MessageFlowPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.MessagePropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.MultiInstanceLoopCharacteristicsPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.OperationPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.ParticipantPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.ProcessPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.PropertyPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.ReceiveTaskPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.ResourceAssignmentExpressionPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.ResourceParameterBindingPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.ResourceRolePropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.RootElementPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.ScriptTaskPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.SendTaskPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.SequenceFlowPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.ServiceTaskPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.SignalEventDefinitionPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.SignalPropertiesAdapter;
-import org.eclipse.bpmn2.modeler.ui.adapters.properties.TaskPropertiesAdapter;
-import org.eclipse.bpmn2.provider.Bpmn2ItemProviderAdapterFactory;
-import org.eclipse.bpmn2.util.Bpmn2Switch;
-import org.eclipse.emf.common.notify.Adapter;
-import org.eclipse.emf.common.notify.AdapterFactory;
-import org.eclipse.emf.common.notify.Notifier;
-import org.eclipse.emf.ecore.EClass;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.EPackage;
-import org.eclipse.emf.ecore.EStructuralFeature;
-import org.eclipse.emf.ecore.util.EcoreUtil;
-
-/**
- * This class adds a name-value map to the Bpmn2ItemProviderAdapterFactory.
- * This allows for additional customization of the UI.
- */
-public class Bpmn2EditorItemProviderAdapterFactory extends Bpmn2ItemProviderAdapterFactory {
-
- public Bpmn2EditorItemProviderAdapterFactory() {
- super();
- supportedTypes.add(ExtendedPropertiesAdapter.class);
- }
-
- @Override
- public Adapter adaptNew(Notifier object, Object type) {
- if (type == ExtendedPropertiesAdapter.class && object instanceof EObject) {
- Adapter adapter = bpmn2ModelSwitch.doSwitch((EObject) object);
- if (adapter!=null && !(object instanceof EClass)) {
- ((EObject)object).eAdapters().add(adapter);
- }
- return adapter;
- }
- return super.adaptNew(object, type);
- }
-
- @Override
- protected void associate(Adapter adapter, Notifier target) {
- if (adapter != null) {
- if (!target.eAdapters().contains(adapter))
- target.eAdapters().add(adapter);
- }
- }
-
- protected Bpmn2Switch<ExtendedPropertiesAdapter> bpmn2ModelSwitch = new Bpmn2ExtendedPropertiesSwitch(this);
-
- public class Bpmn2ExtendedPropertiesSwitch extends Bpmn2Switch<ExtendedPropertiesAdapter> {
-
- private AdapterFactory adapterFactory;
-
- public Bpmn2ExtendedPropertiesSwitch(AdapterFactory adapterFactory) {
- super();
- this.adapterFactory = adapterFactory;
- // This adapter can handle the <propertyExtension>s from foreign models also!
- for (TargetRuntime rt : TargetRuntime.getAllRuntimes()){
- for (PropertyExtensionDescriptor ped : rt.getPropertyExtensions()) {
- AdapterRegistry.INSTANCE.registerFactory(ped.getInstanceClass(), adapterFactory);
- }
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.bpmn2.util.Bpmn2Switch#defaultCase(org.eclipse.emf.ecore.EObject)
- *
- * The default case for this switch is to search the current target runtime plugin for
- * ExtendedPropertiesAdapters that can handle the given EObject.
- *
- * If the given EObject is actually an EClass, then a dummy EObject is constructed and cached
- * for use by the adapter. This could cause problems if the adapter is used for anything other
- * than providing simple static information (labels, etc.)
- *
- * For an example usage of this, see the org.eclipse.bpmn2.modeler.ui.util.PropertyUtil#getLabel(Object)
- * call in the List Composite, to fetch section titles and table column headers from the adapter:
- * @see org.eclipse.bpmn2.modeler.ui.property.AbstractListComposite#bindList(EObject,EStructuralFeature)
- *
- * If no adapter is found for the given EObject, a generic one is constructed and returned.
- */
- @Override
- public ExtendedPropertiesAdapter defaultCase(EObject object) {
- ExtendedPropertiesAdapter adapter = null;
- if (object instanceof EClass) {
- // this is an EClass: search the current target runtime for an adapter that
- // can handle this thing.
- adapter = getTargetRuntimeAdapter((EClass)object);
- if (adapter==null) {
- // if none is found, create a dummy EObject and cache it
- object = ModelUtil.getDummyObject((EClass)object);
- adapter = doSwitch(object);
- }
- }
- else
- adapter = getTargetRuntimeAdapter(object);
-
- if (adapter==null) {
- adapter = new ExtendedPropertiesAdapter(adapterFactory,object);
- adapter.setObjectDescriptor(new ObjectDescriptor(adapterFactory, object) {
- @Override
- public String getLabel(Object context) {
- EObject object = this.object;
- if (context instanceof EObject)
- object = (EObject)context;
- if (ModelUtil.isStringWrapper(object)) {
- return "Item Type";
- }
- return super.getLabel(context);
- }
-
- @Override
- public String getDisplayName(Object context) {
- EObject object = this.object;
- if (context instanceof EObject)
- object = (EObject)context;
- if (ModelUtil.isStringWrapper(object)) {
- return ModelUtil.getStringWrapperValue(object);
- }
- return super.getDisplayName(context);
- }
- });
- }
- return adapter;
- }
-
- private ExtendedPropertiesAdapter getTargetRuntimeAdapter(EClass eclass) {
- PropertyExtensionDescriptor ped = TargetRuntime.getCurrentRuntime().getPropertyExtension(eclass.getInstanceClass());
- if (ped==null && TargetRuntime.getCurrentRuntime() != TargetRuntime.getDefaultRuntime())
- ped = TargetRuntime.getDefaultRuntime().getPropertyExtension(eclass.getInstanceClass());
- if (ped!=null)
- return ped.getAdapter(adapterFactory,eclass);
- return null;
- }
-
- private ExtendedPropertiesAdapter getTargetRuntimeAdapter(EObject object) {
- PropertyExtensionDescriptor ped = TargetRuntime.getCurrentRuntime().getPropertyExtension(object.getClass());
- if (ped==null && TargetRuntime.getCurrentRuntime() != TargetRuntime.getDefaultRuntime())
- ped = TargetRuntime.getDefaultRuntime().getPropertyExtension(object.getClass());
- if (ped!=null)
- return ped.getAdapter(adapterFactory,object);
- return null;
- }
-
- @Override
- public ExtendedPropertiesAdapter caseScriptTask(ScriptTask object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new ScriptTaskPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseCallActivity(CallActivity object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new CallActivityPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseTask(Task object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new TaskPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseActivity(Activity object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new ActivityPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseSequenceFlow(SequenceFlow object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new SequenceFlowPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseFormalExpression(FormalExpression object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new FormalExpressionPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseItemDefinition(ItemDefinition object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new ItemDefinitionPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseItemAwareElement(ItemAwareElement object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new ItemAwareElementPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseResourceAssignmentExpression(ResourceAssignmentExpression object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new ResourceAssignmentExpressionPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseResourceRole(ResourceRole object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new ResourceRolePropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseDataAssociation(DataAssociation object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new DataAssociationPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseError(Error object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new ErrorPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseResourceParameterBinding(ResourceParameterBinding object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new ResourceParameterBindingPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseMessageFlow(MessageFlow object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new MessageFlowPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseMessage(Message object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new MessagePropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseInterface(Interface object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new InterfacePropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseOperation(Operation object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new OperationPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseReceiveTask(ReceiveTask object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new ReceiveTaskPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseSendTask(SendTask object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new SendTaskPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseCorrelationPropertyRetrievalExpression(CorrelationPropertyRetrievalExpression object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new CorrelationPropertyRetrievalExpressionPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseProperty(Property object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new PropertyPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseMultiInstanceLoopCharacteristics(MultiInstanceLoopCharacteristics object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new MultiInstanceLoopCharacteristicsPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseFlowElement(FlowElement object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new FlowElementPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseDataInput(DataInput object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new DataInputPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseDataOutput(DataOutput object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new DataOutputPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseServiceTask(ServiceTask object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new ServiceTaskPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseCompensateEventDefinition(CompensateEventDefinition object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new CompensateEventDefinitionPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseRootElement(RootElement object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new RootElementPropertiesAdapter(adapterFactory,object);
- }
-
-
- // TODO: add remaining BPMN2 elements
-
- @Override
- public ExtendedPropertiesAdapter caseDataObjectReference(DataObjectReference object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new DataObjectReferencePropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseEscalation(Escalation object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new EscalationPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseCallChoreography(CallChoreography object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new CallChoreographyPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseCallConversation(CallConversation object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new CallConversationPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseCorrelationKey(CorrelationKey object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new CorrelationKeyPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseCorrelationPropertyBinding(CorrelationPropertyBinding object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new CorrelationPropertyBindingPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseParticipant(Participant object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new ParticipantPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseSignal(Signal object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new SignalPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseImport(Import object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new ImportPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseProcess(Process object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new ProcessPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseEventDefinition(EventDefinition object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new EventDefinitionPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseMessageEventDefinition(MessageEventDefinition object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new MessageEventDefinitionPropertiesAdapter(adapterFactory,object);
- }
-///
-
- @Override
- public ExtendedPropertiesAdapter caseSignalEventDefinition(SignalEventDefinition object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new SignalEventDefinitionPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseEscalationEventDefinition(EscalationEventDefinition object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new EscalationEventDefinitionPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseErrorEventDefinition(ErrorEventDefinition object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new ErrorEventDefinitionPropertiesAdapter(adapterFactory,object);
- }
-
- @Override
- public ExtendedPropertiesAdapter caseLinkEventDefinition(LinkEventDefinition object) {
- ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
- if (adapter!=null)
- return adapter;
- return new LinkEventDefinitionPropertiesAdapter(adapterFactory,object);
- }
-
- };
-}
+/*******************************************************************************
+ * Copyright (c) 2011 Red Hat, Inc.
+ * All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ *
+ * @author Bob Brodt
+ ******************************************************************************/
+
+package org.eclipse.bpmn2.modeler.ui.adapters;
+
+import java.util.Hashtable;
+
+import org.eclipse.bpmn2.Activity;
+import org.eclipse.bpmn2.Bpmn2Package;
+import org.eclipse.bpmn2.CallActivity;
+import org.eclipse.bpmn2.CallChoreography;
+import org.eclipse.bpmn2.CallConversation;
+import org.eclipse.bpmn2.CompensateEventDefinition;
+import org.eclipse.bpmn2.CorrelationKey;
+import org.eclipse.bpmn2.CorrelationPropertyBinding;
+import org.eclipse.bpmn2.CorrelationPropertyRetrievalExpression;
+import org.eclipse.bpmn2.DataAssociation;
+import org.eclipse.bpmn2.DataInput;
+import org.eclipse.bpmn2.DataObjectReference;
+import org.eclipse.bpmn2.DataOutput;
+import org.eclipse.bpmn2.Error;
+import org.eclipse.bpmn2.ErrorEventDefinition;
+import org.eclipse.bpmn2.Escalation;
+import org.eclipse.bpmn2.EscalationEventDefinition;
+import org.eclipse.bpmn2.EventDefinition;
+import org.eclipse.bpmn2.FlowElement;
+import org.eclipse.bpmn2.FormalExpression;
+import org.eclipse.bpmn2.Import;
+import org.eclipse.bpmn2.Interface;
+import org.eclipse.bpmn2.ItemAwareElement;
+import org.eclipse.bpmn2.ItemDefinition;
+import org.eclipse.bpmn2.LinkEventDefinition;
+import org.eclipse.bpmn2.Message;
+import org.eclipse.bpmn2.MessageEventDefinition;
+import org.eclipse.bpmn2.MessageFlow;
+import org.eclipse.bpmn2.MultiInstanceLoopCharacteristics;
+import org.eclipse.bpmn2.Operation;
+import org.eclipse.bpmn2.Participant;
+import org.eclipse.bpmn2.Process;
+import org.eclipse.bpmn2.Property;
+import org.eclipse.bpmn2.ReceiveTask;
+import org.eclipse.bpmn2.ResourceAssignmentExpression;
+import org.eclipse.bpmn2.ResourceParameterBinding;
+import org.eclipse.bpmn2.ResourceRole;
+import org.eclipse.bpmn2.RootElement;
+import org.eclipse.bpmn2.ScriptTask;
+import org.eclipse.bpmn2.SendTask;
+import org.eclipse.bpmn2.SequenceFlow;
+import org.eclipse.bpmn2.ServiceTask;
+import org.eclipse.bpmn2.Signal;
+import org.eclipse.bpmn2.SignalEventDefinition;
+import org.eclipse.bpmn2.Task;
+import org.eclipse.bpmn2.modeler.core.adapters.AdapterRegistry;
+import org.eclipse.bpmn2.modeler.core.adapters.ExtendedPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.core.adapters.ObjectDescriptor;
+import org.eclipse.bpmn2.modeler.core.runtime.PropertyExtensionDescriptor;
+import org.eclipse.bpmn2.modeler.core.runtime.TargetRuntime;
+import org.eclipse.bpmn2.modeler.core.utils.ModelUtil;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.ActivityPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.CallActivityPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.CallChoreographyPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.CallConversationPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.CompensateEventDefinitionPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.CorrelationKeyPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.CorrelationPropertyBindingPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.CorrelationPropertyRetrievalExpressionPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.DataAssociationPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.DataInputPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.DataObjectReferencePropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.DataOutputPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.ErrorEventDefinitionPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.ErrorPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.EscalationEventDefinitionPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.EscalationPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.EventDefinitionPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.FlowElementPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.FormalExpressionPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.ImportPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.InterfacePropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.ItemAwareElementPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.ItemDefinitionPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.LinkEventDefinitionPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.MessageEventDefinitionPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.MessageFlowPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.MessagePropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.MultiInstanceLoopCharacteristicsPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.OperationPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.ParticipantPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.ProcessPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.PropertyPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.ReceiveTaskPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.ResourceAssignmentExpressionPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.ResourceParameterBindingPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.ResourceRolePropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.RootElementPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.ScriptTaskPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.SendTaskPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.SequenceFlowPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.ServiceTaskPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.SignalEventDefinitionPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.SignalPropertiesAdapter;
+import org.eclipse.bpmn2.modeler.ui.adapters.properties.TaskPropertiesAdapter;
+import org.eclipse.bpmn2.provider.Bpmn2ItemProviderAdapterFactory;
+import org.eclipse.bpmn2.util.Bpmn2Switch;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.AdapterFactory;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.ecore.EClass;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.EPackage;
+import org.eclipse.emf.ecore.EStructuralFeature;
+import org.eclipse.emf.ecore.util.EcoreUtil;
+
+/**
+ * This class adds a name-value mapDiagramToViewer to the Bpmn2ItemProviderAdapterFactory.
+ * This allows for additional customization of the UI.
+ */
+public class Bpmn2EditorItemProviderAdapterFactory extends Bpmn2ItemProviderAdapterFactory {
+
+ public Bpmn2EditorItemProviderAdapterFactory() {
+ super();
+ supportedTypes.add(ExtendedPropertiesAdapter.class);
+ }
+
+ @Override
+ public Adapter adaptNew(Notifier object, Object type) {
+ if (type == ExtendedPropertiesAdapter.class && object instanceof EObject) {
+ Adapter adapter = bpmn2ModelSwitch.doSwitch((EObject) object);
+ if (adapter!=null && !(object instanceof EClass)) {
+ ((EObject)object).eAdapters().add(adapter);
+ }
+ return adapter;
+ }
+ return super.adaptNew(object, type);
+ }
+
+ @Override
+ protected void associate(Adapter adapter, Notifier target) {
+ if (adapter != null) {
+ if (!target.eAdapters().contains(adapter))
+ target.eAdapters().add(adapter);
+ }
+ }
+
+ protected Bpmn2Switch<ExtendedPropertiesAdapter> bpmn2ModelSwitch = new Bpmn2ExtendedPropertiesSwitch(this);
+
+ public class Bpmn2ExtendedPropertiesSwitch extends Bpmn2Switch<ExtendedPropertiesAdapter> {
+
+ private AdapterFactory adapterFactory;
+
+ public Bpmn2ExtendedPropertiesSwitch(AdapterFactory adapterFactory) {
+ super();
+ this.adapterFactory = adapterFactory;
+ // This adapter can handle the <propertyExtension>s from foreign models also!
+ for (TargetRuntime rt : TargetRuntime.getAllRuntimes()){
+ for (PropertyExtensionDescriptor ped : rt.getPropertyExtensions()) {
+ AdapterRegistry.INSTANCE.registerFactory(ped.getInstanceClass(), adapterFactory);
+ }
+ }
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.bpmn2.util.Bpmn2Switch#defaultCase(org.eclipse.emf.ecore.EObject)
+ *
+ * The default case for this switch is to search the current target runtime plugin for
+ * ExtendedPropertiesAdapters that can handle the given EObject.
+ *
+ * If the given EObject is actually an EClass, then a dummy EObject is constructed and cached
+ * for use by the adapter. This could cause problems if the adapter is used for anything other
+ * than providing simple static information (labels, etc.)
+ *
+ * For an example usage of this, see the org.eclipse.bpmn2.modeler.ui.util.PropertyUtil#getLabel(Object)
+ * call in the List Composite, to fetch section titles and table column headers from the adapter:
+ * @see org.eclipse.bpmn2.modeler.ui.property.AbstractListComposite#bindList(EObject,EStructuralFeature)
+ *
+ * If no adapter is found for the given EObject, a generic one is constructed and returned.
+ */
+ @Override
+ public ExtendedPropertiesAdapter defaultCase(EObject object) {
+ ExtendedPropertiesAdapter adapter = null;
+ if (object instanceof EClass) {
+ // this is an EClass: search the current target runtime for an adapter that
+ // can handle this thing.
+ adapter = getTargetRuntimeAdapter((EClass)object);
+ if (adapter==null) {
+ // if none is found, create a dummy EObject and cache it
+ object = ModelUtil.getDummyObject((EClass)object);
+ adapter = doSwitch(object);
+ }
+ }
+ else
+ adapter = getTargetRuntimeAdapter(object);
+
+ if (adapter==null) {
+ adapter = new ExtendedPropertiesAdapter(adapterFactory,object);
+ adapter.setObjectDescriptor(new ObjectDescriptor(adapterFactory, object) {
+ @Override
+ public String getLabel(Object context) {
+ EObject object = this.object;
+ if (context instanceof EObject)
+ object = (EObject)context;
+ if (ModelUtil.isStringWrapper(object)) {
+ return "Item Type";
+ }
+ return super.getLabel(context);
+ }
+
+ @Override
+ public String getDisplayName(Object context) {
+ EObject object = this.object;
+ if (context instanceof EObject)
+ object = (EObject)context;
+ if (ModelUtil.isStringWrapper(object)) {
+ return ModelUtil.getStringWrapperValue(object);
+ }
+ return super.getDisplayName(context);
+ }
+ });
+ }
+ return adapter;
+ }
+
+ private ExtendedPropertiesAdapter getTargetRuntimeAdapter(EClass eclass) {
+ PropertyExtensionDescriptor ped = TargetRuntime.getCurrentRuntime().getPropertyExtension(eclass.getInstanceClass());
+ if (ped==null && TargetRuntime.getCurrentRuntime() != TargetRuntime.getDefaultRuntime())
+ ped = TargetRuntime.getDefaultRuntime().getPropertyExtension(eclass.getInstanceClass());
+ if (ped!=null)
+ return ped.getAdapter(adapterFactory,eclass);
+ return null;
+ }
+
+ private ExtendedPropertiesAdapter getTargetRuntimeAdapter(EObject object) {
+ PropertyExtensionDescriptor ped = TargetRuntime.getCurrentRuntime().getPropertyExtension(object.getClass());
+ if (ped==null && TargetRuntime.getCurrentRuntime() != TargetRuntime.getDefaultRuntime())
+ ped = TargetRuntime.getDefaultRuntime().getPropertyExtension(object.getClass());
+ if (ped!=null)
+ return ped.getAdapter(adapterFactory,object);
+ return null;
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseScriptTask(ScriptTask object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new ScriptTaskPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseCallActivity(CallActivity object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new CallActivityPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseTask(Task object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new TaskPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseActivity(Activity object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new ActivityPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseSequenceFlow(SequenceFlow object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new SequenceFlowPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseFormalExpression(FormalExpression object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new FormalExpressionPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseItemDefinition(ItemDefinition object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new ItemDefinitionPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseItemAwareElement(ItemAwareElement object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new ItemAwareElementPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseResourceAssignmentExpression(ResourceAssignmentExpression object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new ResourceAssignmentExpressionPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseResourceRole(ResourceRole object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new ResourceRolePropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseDataAssociation(DataAssociation object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new DataAssociationPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseError(Error object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new ErrorPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseResourceParameterBinding(ResourceParameterBinding object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new ResourceParameterBindingPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseMessageFlow(MessageFlow object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new MessageFlowPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseMessage(Message object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new MessagePropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseInterface(Interface object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new InterfacePropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseOperation(Operation object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new OperationPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseReceiveTask(ReceiveTask object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new ReceiveTaskPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseSendTask(SendTask object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new SendTaskPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseCorrelationPropertyRetrievalExpression(CorrelationPropertyRetrievalExpression object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new CorrelationPropertyRetrievalExpressionPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseProperty(Property object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new PropertyPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseMultiInstanceLoopCharacteristics(MultiInstanceLoopCharacteristics object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new MultiInstanceLoopCharacteristicsPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseFlowElement(FlowElement object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new FlowElementPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseDataInput(DataInput object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new DataInputPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseDataOutput(DataOutput object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new DataOutputPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseServiceTask(ServiceTask object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new ServiceTaskPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseCompensateEventDefinition(CompensateEventDefinition object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new CompensateEventDefinitionPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseRootElement(RootElement object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new RootElementPropertiesAdapter(adapterFactory,object);
+ }
+
+
+ // TODO: add remaining BPMN2 elements
+
+ @Override
+ public ExtendedPropertiesAdapter caseDataObjectReference(DataObjectReference object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new DataObjectReferencePropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseEscalation(Escalation object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new EscalationPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseCallChoreography(CallChoreography object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new CallChoreographyPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseCallConversation(CallConversation object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new CallConversationPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseCorrelationKey(CorrelationKey object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new CorrelationKeyPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseCorrelationPropertyBinding(CorrelationPropertyBinding object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new CorrelationPropertyBindingPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseParticipant(Participant object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new ParticipantPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseSignal(Signal object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new SignalPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseImport(Import object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new ImportPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseProcess(Process object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new ProcessPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseEventDefinition(EventDefinition object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new EventDefinitionPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseMessageEventDefinition(MessageEventDefinition object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new MessageEventDefinitionPropertiesAdapter(adapterFactory,object);
+ }
+///
+
+ @Override
+ public ExtendedPropertiesAdapter caseSignalEventDefinition(SignalEventDefinition object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new SignalEventDefinitionPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseEscalationEventDefinition(EscalationEventDefinition object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new EscalationEventDefinitionPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseErrorEventDefinition(ErrorEventDefinition object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new ErrorEventDefinitionPropertiesAdapter(adapterFactory,object);
+ }
+
+ @Override
+ public ExtendedPropertiesAdapter caseLinkEventDefinition(LinkEventDefinition object) {
+ ExtendedPropertiesAdapter adapter = getTargetRuntimeAdapter(object);
+ if (adapter!=null)
+ return adapter;
+ return new LinkEventDefinitionPropertiesAdapter(adapterFactory,object);
+ }
+
+ };
+}
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/properties/ParticipantPropertiesAdapter.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/properties/ParticipantPropertiesAdapter.java
index 5bff89f..0f5970e 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/properties/ParticipantPropertiesAdapter.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/adapters/properties/ParticipantPropertiesAdapter.java
@@ -23,8 +23,13 @@
import org.eclipse.bpmn2.ParticipantMultiplicity;
import org.eclipse.bpmn2.Process;
import org.eclipse.bpmn2.RootElement;
+import org.eclipse.bpmn2.di.BPMNDiagram;
+import org.eclipse.bpmn2.di.BPMNPlane;
+import org.eclipse.bpmn2.di.BpmnDiFactory;
+import org.eclipse.bpmn2.di.BpmnDiPackage;
import org.eclipse.bpmn2.modeler.core.adapters.ExtendedPropertiesAdapter;
import org.eclipse.bpmn2.modeler.core.adapters.FeatureDescriptor;
+import org.eclipse.bpmn2.modeler.core.adapters.InsertionAdapter;
import org.eclipse.bpmn2.modeler.core.adapters.ObjectDescriptor;
import org.eclipse.bpmn2.modeler.core.utils.ModelUtil;
import org.eclipse.emf.common.notify.AdapterFactory;
@@ -55,13 +60,14 @@
@Override
public Participant createObject(Resource resource, Object context) {
Participant participant = super.createObject(resource, context);
- participant.eSetDeliver(false);
Definitions definitions = null;
if (resource!=null)
definitions = (Definitions) resource.getContents().get(0).eContents().get(0);
- else
+ else {
definitions = ModelUtil.getDefinitions(participant);
+ resource = definitions.eResource();
+ }
// create a Process for this Participant
Process process = (Process) ModelUtil.createObject(resource, Bpmn2Package.eINSTANCE.getProcess());
@@ -69,7 +75,6 @@
// NOTE: this is needed because it fires the InsertionAdapter, which adds the new Process
// to Definitions.rootElements, otherwise the Process would be a dangling object
- process.eSetDeliver(false);
process.setName(participant.getName()+" Process");
// add the Participant to the first Choreography or Collaboration we find.
@@ -82,10 +87,19 @@
break;
}
}
-
- process.eSetDeliver(true);
- participant.eSetDeliver(true);
+
+ BPMNDiagram bpmnDiagram = BpmnDiFactory.eINSTANCE.createBPMNDiagram();
+ ModelUtil.setID(bpmnDiagram, resource);
+ bpmnDiagram.setName(process.getName());
+ definitions.getDiagrams().add(bpmnDiagram);
+
+ BPMNPlane plane = BpmnDiFactory.eINSTANCE.createBPMNPlane();
+ ModelUtil.setID(plane, resource);
+ plane.setBpmnElement(process);
+
+ bpmnDiagram.setPlane(plane);
+
return participant;
}
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 95fbe4e..abde762 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
@@ -1,679 +1,777 @@
-/*******************************************************************************
- * Copyright (c) 2011 Red Hat, Inc.
- * All rights reserved.
- * This program is made available under the terms of the
- * Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Red Hat, Inc. - initial API and implementation
- *
- * @author Innar Made
- ******************************************************************************/
-package org.eclipse.bpmn2.modeler.ui.editor;
-
-import java.io.IOException;
-import java.util.ArrayList;
-
-import org.eclipse.bpmn2.BaseElement;
-import org.eclipse.bpmn2.di.BPMNDiagram;
-import org.eclipse.bpmn2.modeler.core.Bpmn2TabbedPropertySheetPage;
-import org.eclipse.bpmn2.modeler.core.ModelHandler;
-import org.eclipse.bpmn2.modeler.core.ModelHandlerLocator;
-import org.eclipse.bpmn2.modeler.core.ProxyURIConverterImplExtension;
-import org.eclipse.bpmn2.modeler.core.di.DIImport;
-import org.eclipse.bpmn2.modeler.core.model.Bpmn2ModelerResourceImpl;
-import org.eclipse.bpmn2.modeler.core.preferences.Bpmn2Preferences;
-import org.eclipse.bpmn2.modeler.core.runtime.TargetRuntime;
-import org.eclipse.bpmn2.modeler.core.utils.BusinessObjectUtil;
-import org.eclipse.bpmn2.modeler.core.utils.DiagramEditorAdapter;
-import org.eclipse.bpmn2.modeler.core.utils.ErrorUtils;
-import org.eclipse.bpmn2.modeler.core.utils.ModelUtil;
-import org.eclipse.bpmn2.modeler.core.utils.ModelUtil.Bpmn2DiagramType;
-import org.eclipse.bpmn2.modeler.core.utils.StyleUtil;
-import org.eclipse.bpmn2.modeler.ui.Activator;
-import org.eclipse.bpmn2.modeler.ui.wizards.BPMN2DiagramCreator;
-import org.eclipse.bpmn2.modeler.ui.wizards.Bpmn2DiagramEditorInput;
-import org.eclipse.bpmn2.util.Bpmn2ResourceImpl;
-import org.eclipse.core.resources.IFile;
-import org.eclipse.core.resources.IFolder;
-import org.eclipse.core.resources.IProject;
-import org.eclipse.core.resources.IResource;
-import org.eclipse.core.resources.ResourcesPlugin;
-import org.eclipse.core.runtime.CoreException;
-import org.eclipse.core.runtime.IPath;
-import org.eclipse.core.runtime.IStatus;
-import org.eclipse.core.runtime.Path;
-import org.eclipse.core.runtime.Status;
-import org.eclipse.emf.common.command.BasicCommandStack;
-import org.eclipse.emf.common.util.BasicDiagnostic;
-import org.eclipse.emf.common.util.TreeIterator;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.EObject;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.ecore.resource.ResourceSet;
-import org.eclipse.emf.transaction.RecordingCommand;
-import org.eclipse.emf.transaction.TransactionalEditingDomain.Lifecycle;
-import org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl;
-import org.eclipse.emf.workspace.util.WorkspaceSynchronizer;
-import org.eclipse.graphiti.features.IFeatureProvider;
-import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm;
-import org.eclipse.graphiti.mm.pictograms.Diagram;
-import org.eclipse.graphiti.mm.pictograms.PictogramElement;
-import org.eclipse.graphiti.services.Graphiti;
-import org.eclipse.graphiti.services.IPeService;
-import org.eclipse.graphiti.ui.editor.DefaultUpdateBehavior;
-import org.eclipse.graphiti.ui.editor.DiagramEditor;
-import org.eclipse.graphiti.ui.editor.DiagramEditorInput;
-import org.eclipse.graphiti.ui.internal.editor.GFPaletteRoot;
-import org.eclipse.jface.util.IPropertyChangeListener;
-import org.eclipse.jface.util.PropertyChangeEvent;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.swt.widgets.Display;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorReference;
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.IFileEditorInput;
-import org.eclipse.ui.IPartListener2;
-import org.eclipse.ui.IWorkbench;
-import org.eclipse.ui.IWorkbenchListener;
-import org.eclipse.ui.IWorkbenchPage;
-import org.eclipse.ui.IWorkbenchPart;
-import org.eclipse.ui.IWorkbenchPartReference;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.PlatformUI;
-import org.eclipse.ui.dialogs.SaveAsDialog;
-import org.eclipse.ui.ide.ResourceUtil;
-import org.eclipse.ui.part.FileEditorInput;
-import org.eclipse.ui.views.properties.IPropertySheetPage;
-import org.eclipse.ui.views.properties.tabbed.ITabDescriptorProvider;
-import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
-
-/**
- *
- */
-@SuppressWarnings("restriction")
-public class BPMN2Editor extends DiagramEditor implements IPropertyChangeListener {
-
- public static final String EDITOR_ID = "org.eclipse.bpmn2.modeler.ui.bpmn2editor";
- public static final String CONTRIBUTOR_ID = "org.eclipse.bpmn2.modeler.ui.PropertyContributor";
-
- private ModelHandler modelHandler;
- private URI modelUri;
- private URI diagramUri;
-
- private IFile modelFile;
- private IFile diagramFile;
-
- private IWorkbenchListener workbenchListener;
- private IPartListener2 selectionListener;
- private boolean workbenchShutdown = false;
- private static BPMN2Editor activeEditor;
- private static ITabDescriptorProvider tabDescriptorProvider;
-
- private BPMN2EditingDomainListener editingDomainListener;
-
- private Bpmn2Preferences preferences;
- private TargetRuntime targetRuntime;
-
- protected DiagramEditorAdapter editorAdapter;
-
- public static BPMN2Editor getActiveEditor() {
- return activeEditor;
- }
-
- private void setActiveEditor(BPMN2Editor editor) {
- activeEditor = editor;
- if (activeEditor!=null) {
- Bpmn2Preferences.setActiveProject(activeEditor.modelFile.getProject());
- TargetRuntime.setCurrentRuntime( activeEditor.getTargetRuntime() );
- }
- }
-
- protected DiagramEditorAdapter getEditorAdapter() {
- return editorAdapter;
- }
-
- @Override
- public void init(IEditorSite site, IEditorInput input) throws PartInitException {
- try {
- Bpmn2DiagramType diagramType = Bpmn2DiagramType.NONE;
- String targetNamespace = null;
- if (input instanceof IFileEditorInput) {
- modelFile = ((IFileEditorInput) input).getFile();
- loadPreferences(modelFile.getProject());
-
- input = createNewDiagramEditorInput(diagramType, targetNamespace);
-
- } else if (input instanceof DiagramEditorInput) {
- getModelPathFromInput((DiagramEditorInput) input);
- loadPreferences(modelFile.getProject());
- if (input instanceof Bpmn2DiagramEditorInput) {
- diagramType = ((Bpmn2DiagramEditorInput)input).getInitialDiagramType();
- targetNamespace = ((Bpmn2DiagramEditorInput)input).getTargetNamespace();
- }
- // This was incorrectly constructed input, we ditch the old one and make a new and clean one instead
- // This code path comes in from the New File Wizard
- input = createNewDiagramEditorInput(diagramType, targetNamespace);
- }
- } catch (CoreException e) {
- Activator.showErrorWithLogging(e);
- }
-
- // add a listener so we get notified if the workbench is shutting down.
- // in this case we don't want to delete the temp file!
- addWorkbenchListener();
- setActiveEditor(this);
-
- // allow the runtime extension to construct custom tasks and whatever else it needs
- // custom tasks should be added to the current target runtime's custom tasks list
- // where they will be picked up by the toolpalette refresh.
- getTargetRuntime().getRuntimeExtension().initialize();
-
- super.init(site, input);
- addSelectionListener();
- }
-
- @Override
- protected DefaultUpdateBehavior createUpdateBehavior() {
- return new BPMN2EditorUpdateBehavior(this);
- }
-
- public Bpmn2Preferences getPreferences() {
- if (preferences==null) {
- assert(modelFile!=null);
- IProject project = modelFile.getProject();
- loadPreferences(project);
- }
- return preferences;
- }
-
- private void loadPreferences(IProject project) {
- preferences = Bpmn2Preferences.getInstance(project);
- preferences.load();
- preferences.getGlobalPreferences().addPropertyChangeListener(this);
- }
-
- /**
- * ID for tabbed property sheets.
- *
- * @return the contributor id
- */
- @Override
- public String getContributorId() {
- return CONTRIBUTOR_ID;
- }
-
- public TargetRuntime getTargetRuntime(ITabDescriptorProvider tdp) {
- tabDescriptorProvider = tdp;
- return getTargetRuntime();
- }
-
- public TargetRuntime getTargetRuntime() {
- if (targetRuntime==null)
- targetRuntime = getPreferences().getRuntime(modelFile);
- return targetRuntime;
- }
-
- private void getModelPathFromInput(DiagramEditorInput input) {
- URI uri = input.getUri();
- String uriString = uri.trimFragment().toPlatformString(true);
- modelFile = BPMN2DiagramCreator.getModelFile(new Path(uriString));
- }
-
- /**
- * Beware, creates a new input and changes this editor!
- */
- private Bpmn2DiagramEditorInput createNewDiagramEditorInput(Bpmn2DiagramType diagramType, String targetNamespace)
- throws CoreException {
- IPath fullPath = modelFile.getFullPath();
- modelUri = URI.createPlatformResourceURI(fullPath.toString(), true);
-
- IFolder folder = BPMN2DiagramCreator.getTempFolder(fullPath);
- diagramFile = BPMN2DiagramCreator.getTempFile(fullPath,folder);
-
- // Create new temporary diagram file
- BPMN2DiagramCreator creator = new BPMN2DiagramCreator();
- creator.setDiagramFile(diagramFile);
-
- Bpmn2DiagramEditorInput input = creator.createDiagram(diagramType,targetNamespace,this);
- diagramUri = creator.getUri();
-
- return input;
- }
-
- private void saveModelFile() {
- modelHandler.save();
- ((BasicCommandStack) getEditingDomain().getCommandStack()).saveIsDone();
- updateDirtyState();
- }
-
- @Override
- protected void setInput(IEditorInput input) {
- super.setInput(input);
-
- // Hook a transaction exception handler so we can get diagnostics about EMF validation errors.
- getEditingDomainListener();
-
- BasicCommandStack basicCommandStack = (BasicCommandStack) getEditingDomain().getCommandStack();
-
- if (input instanceof DiagramEditorInput) {
- ResourceSet resourceSet = getEditingDomain().getResourceSet();
- getTargetRuntime().setResourceSet(resourceSet);
-
- Bpmn2ResourceImpl bpmnResource = (Bpmn2ResourceImpl) resourceSet.createResource(modelUri,
- Bpmn2ModelerResourceImpl.BPMN2_CONTENT_TYPE_ID);
-
- resourceSet.setURIConverter(new ProxyURIConverterImplExtension());
- resourceSet.eAdapters().add(editorAdapter = new DiagramEditorAdapter(this));
-
- modelHandler = ModelHandlerLocator.createModelHandler(modelUri, bpmnResource);
- ModelHandlerLocator.put(diagramUri, modelHandler);
-
- try {
- if (modelFile.exists()) {
- bpmnResource.load(null);
- } else {
- saveModelFile();
- }
- } catch (IOException e) {
- Status status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e);
- ErrorUtils.showErrorWithLogging(status);
- }
- basicCommandStack.execute(new RecordingCommand(getEditingDomain()) {
-
- @Override
- protected void doExecute() {
- importDiagram();
- }
- });
- }
- basicCommandStack.saveIsDone();
- basicCommandStack.flush();
- }
-
- private void importDiagram() {
- // make sure this guy is active, otherwise it's not selectable
- Diagram diagram = getDiagramTypeProvider().getDiagram();
- IFeatureProvider featureProvider = getDiagramTypeProvider().getFeatureProvider();
- diagram.setActive(true);
- Bpmn2DiagramEditorInput input = (Bpmn2DiagramEditorInput) getEditorInput();
- Bpmn2DiagramType diagramType = input.getInitialDiagramType();
- String targetNamespace = input.getTargetNamespace();
-
- if (diagramType != Bpmn2DiagramType.NONE) {
- BPMNDiagram bpmnDiagram = modelHandler.createDiagramType(diagramType, targetNamespace);
- featureProvider.link(diagram, bpmnDiagram);
- saveModelFile();
- }
-
- DIImport di = new DIImport();
- di.setDiagram(diagram);
- di.setDomain(getEditingDomain());
- di.setModelHandler(modelHandler);
- di.setFeatureProvider(featureProvider);
- di.generateFromDI();
-
- // this needs to happen AFTER the diagram has been imported because we need
- // to be able to determine the diagram type from the file's contents in order
- // to build the right tool palette for the target runtime and model enablements.
- GFPaletteRoot pr = (GFPaletteRoot)getPaletteRoot();
- pr.updatePaletteEntries();
- }
-
- @Override
- protected PictogramElement[] getPictogramElementsForSelection() {
- // filter out invisible elements when setting selection
- PictogramElement[] pictogramElements = super.getPictogramElementsForSelection();
- if (pictogramElements==null)
- return null;
- ArrayList<PictogramElement> visibleList = new ArrayList<PictogramElement>();
- for (PictogramElement pe : pictogramElements) {
- if (pe.isVisible())
- visibleList.add(pe);
- }
- return visibleList.toArray(new PictogramElement[visibleList.size()]);
- }
-
- private void addWorkbenchListener() {
- if (workbenchListener==null) {
- workbenchListener = new IWorkbenchListener() {
- @Override
- public boolean preShutdown(IWorkbench workbench, boolean forced) {
- workbenchShutdown = true;
- return true;
- }
-
- @Override
- public void postShutdown(IWorkbench workbench) {
- }
-
- };
- PlatformUI.getWorkbench().addWorkbenchListener(workbenchListener);
- }
- }
-
- private void removeWorkbenchListener()
- {
- if (workbenchListener!=null) {
- PlatformUI.getWorkbench().removeWorkbenchListener(workbenchListener);
- workbenchListener = null;
- }
- }
-
- private void addSelectionListener() {
- if (selectionListener == null) {
- IWorkbenchPage page = getSite().getPage();
- selectionListener = new IPartListener2() {
- public void partActivated(IWorkbenchPartReference partRef) {
- }
-
- @Override
- public void partBroughtToTop(IWorkbenchPartReference partRef) {
- IWorkbenchPart part = partRef.getPart(false);
- if (part instanceof BPMN2MultiPageEditor) {
- BPMN2MultiPageEditor mpe = (BPMN2MultiPageEditor)part;
- setActiveEditor(mpe.designEditor);
- }
- }
-
- @Override
- public void partClosed(IWorkbenchPartReference partRef) {
- }
-
- @Override
- public void partDeactivated(IWorkbenchPartReference partRef) {
- }
-
- @Override
- public void partOpened(IWorkbenchPartReference partRef) {
- }
-
- @Override
- public void partHidden(IWorkbenchPartReference partRef) {
- }
-
- @Override
- public void partVisible(IWorkbenchPartReference partRef) {
- }
-
- @Override
- public void partInputChanged(IWorkbenchPartReference partRef) {
- }
- };
- page.addPartListener(selectionListener);
- }
- }
-
- private void removeSelectionListener()
- {
- if (selectionListener!=null) {
- getSite().getPage().removePartListener(selectionListener);
- selectionListener = null;
- }
- }
-
- public void setEditorTitle(final String title) {
- Display display = getSite().getShell().getDisplay();
- display.asyncExec(new Runnable() {
- public void run() {
- setPartName(title);
- }
- });
- }
-
- public BPMN2EditingDomainListener getEditingDomainListener() {
- if (editingDomainListener==null) {
- TransactionalEditingDomainImpl editingDomain = (TransactionalEditingDomainImpl)getEditingDomain();
- if (editingDomain==null) {
- return null;
- }
- editingDomainListener = new BPMN2EditingDomainListener(this);
-
- Lifecycle domainLifeCycle = (Lifecycle) editingDomain.getAdapter(Lifecycle.class);
- domainLifeCycle.addTransactionalEditingDomainListener(editingDomainListener);
- }
- return editingDomainListener;
- }
-
- public BasicDiagnostic getDiagnostics() {
- return getEditingDomainListener().getDiagnostics();
- }
-
- @Override
- public Object getAdapter(Class required) {
- if (required==ITabDescriptorProvider.class) {
- if (tabDescriptorProvider==null) {
- IWorkbenchPage page = getEditorSite().getPage();
- String viewID = "org.eclipse.ui.views.PropertySheet";
- try {
- page.showView(viewID, null, IWorkbenchPage.VIEW_CREATE);
- page.showView(viewID, null, IWorkbenchPage.VIEW_ACTIVATE);
- }
- catch (Exception e) {}
- }
- return tabDescriptorProvider;
- }
- if (required==TargetRuntime.class)
- return getTargetRuntime();
- if (required==Bpmn2Preferences.class)
- return getPreferences();
- if (required == IPropertySheetPage.class) {
- return new Bpmn2TabbedPropertySheetPage(this);
- }
- return super.getAdapter(required);
- }
-
- @Override
- public void dispose() {
- // clear ID mapping tables if no more instances of editor are active
- int instances = 0;
- IWorkbenchPage[] pages = getEditorSite().getWorkbenchWindow().getPages();
- for (IWorkbenchPage p : pages) {
- IEditorReference[] refs = p.getEditorReferences();
- instances += refs.length;
- }
- ModelUtil.clearIDs(modelHandler.getResource(), instances==0);
- getPreferences().getGlobalPreferences().removePropertyChangeListener(this);
-
- getResourceSet().eAdapters().remove(getEditorAdapter());
- removeSelectionListener();
- if (instances==0)
- setActiveEditor(null);
-
- super.dispose();
- ModelHandlerLocator.remove(modelUri);
- // get rid of temp files and folders, but NOT if the workbench is being shut down.
- // when the workbench is restarted, we need to have those temp files around!
- if (!workbenchShutdown)
- BPMN2DiagramCreator.dispose(diagramFile);
- removeWorkbenchListener();
- getPreferences().dispose();
- }
-
- public IFile getModelFile() {
- return modelFile;
- }
-
- public IFile getDiagramFile() {
- return diagramFile;
- }
-
- public ModelHandler getModelHandler() {
- return modelHandler;
- }
-
- @Override
- public boolean isSaveAsAllowed() {
- return true;
- }
-
- @Override
- public void doSaveAs() {
- IFile oldFile = getModelFile();
- SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell());
- saveAsDialog.setOriginalFile(oldFile);
- saveAsDialog.create();
- if (saveAsDialog.open() == SaveAsDialog.CANCEL) {
- return;
- }
- IPath newFilePath = saveAsDialog.getResult();
- if (newFilePath == null){
- return;
- }
-
- IFile newFile = ResourcesPlugin.getWorkspace().getRoot().getFile(newFilePath);
- IWorkbenchPage page = getSite().getPage();
-
- try {
- // Save the current(old) file
- doSave(null);
- // if new file exists, close its editor (if open) and delete the existing file
- if (newFile.exists()) {
- IEditorPart editorPart = ResourceUtil.findEditor(page, newFile);
- if (editorPart!=null)
- page.closeEditor(editorPart, false);
- newFile.delete(true, null);
- }
- // make a copy
- oldFile.copy(newFilePath, true, null);
- } catch (CoreException e) {
- showErrorDialogWithLogging(e);
- return;
- }
-
- // open new editor
- try {
- page.openEditor(new FileEditorInput(newFile), BPMN2Editor.EDITOR_ID);
- } catch (PartInitException e1) {
- showErrorDialogWithLogging(e1);
- return;
- }
-
- // and close the old editor
- IEditorPart editorPart = ResourceUtil.findEditor(page, oldFile);
- if (editorPart!=null)
- page.closeEditor(editorPart, false);
-
- try {
- newFile.refreshLocal(IResource.DEPTH_ZERO,null);
- } catch (CoreException e) {
- showErrorDialogWithLogging(e);
- return;
- }
- }
-
- public void closeEditor() {
- Display display = getSite().getShell().getDisplay();
- display.asyncExec(new Runnable() {
- public void run() {
- boolean closed = getSite().getPage().closeEditor(BPMN2Editor.this, false);
- if (!closed){
- // If close editor fails, try again with explicit editorpart
- // of the old file
- IFile oldFile = ResourcesPlugin.getWorkspace().getRoot().getFile(modelFile.getFullPath());
- IEditorPart editorPart = ResourceUtil.findEditor(getSite().getPage(), oldFile);
- closed = getSite().getPage().closeEditor(editorPart, false);
- }
- }
- });
- }
-
- // Show error dialog and log the error
- private void showErrorDialogWithLogging(Exception e) {
- Status status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e);
- ErrorUtils.showErrorWithLogging(status);
- }
-
- ////////////////////////////////////////////////////////////////////////////////
- // WorkspaceSynchronizer handlers called from delegate
- ////////////////////////////////////////////////////////////////////////////////
-
- public boolean handleResourceChanged(Resource resource) {
- return true;
- }
-
- public boolean handleResourceDeleted(Resource resource) {
- closeEditor();
- return true;
- }
-
- public boolean handleResourceMoved(Resource resource, URI newURI) {
- URI oldURI = resource.getURI();
- resource.setURI(newURI);
-
- IFile file = WorkspaceSynchronizer.getUnderlyingFile(resource);
- if (modelUri.equals(oldURI)) {
- ModelHandlerLocator.remove(modelUri);
- modelUri = newURI;
- modelFile = file;
- if (preferences!=null) {
- preferences.getGlobalPreferences().removePropertyChangeListener(this);
- preferences.dispose();
- preferences = null;
- }
- targetRuntime = null;
- modelHandler = ModelHandlerLocator.createModelHandler(modelUri, (Bpmn2ResourceImpl)resource);
- ModelHandlerLocator.put(diagramUri, modelHandler);
-
- setEditorTitle(file.getFullPath().removeFileExtension().lastSegment());
- }
- else if (diagramUri.equals(oldURI)) {
- ModelHandlerLocator.remove(diagramUri);
- diagramUri = newURI;
- ModelHandlerLocator.put(diagramUri, modelHandler);
- diagramFile = file;
- }
-
- return true;
- }
-
- ////////////////////////////////////////////////////////////////////////////////
- // Other handlers
- ////////////////////////////////////////////////////////////////////////////////
-
- @Override
- public void selectionChanged(IWorkbenchPart part, ISelection selection) {
- // Graphiti understands multipage editors
- super.selectionChanged(part,selection); // Graphiti's DiagramEditorInternal
- // but apparently GEF doesn't
- updateActions(getSelectionActions()); // usually done in GEF's GraphicalEditor
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
- */
- @Override
- public void propertyChange(PropertyChangeEvent event) {
- if (event.getProperty().endsWith(Bpmn2Preferences.PREF_SHAPE_STYLE)) {
- getEditingDomain().getCommandStack().execute(new RecordingCommand(getEditingDomain()) {
- @Override
- protected void doExecute() {
- IPeService peService = Graphiti.getPeService();
- TreeIterator<EObject> iter = getDiagramTypeProvider().getDiagram().eAllContents();
- while (iter.hasNext()) {
- EObject o = iter.next();
- if (o instanceof PictogramElement) {
- PictogramElement pe = (PictogramElement)o;
- BaseElement be = BusinessObjectUtil.getFirstElementOfType(pe, BaseElement.class);
- if (be!=null) {
- TreeIterator<EObject> childIter = pe.eAllContents();
- while (childIter.hasNext()) {
- o = childIter.next();
- if (o instanceof GraphicsAlgorithm) {
- GraphicsAlgorithm ga = (GraphicsAlgorithm)o;
- if (peService.getPropertyValue(ga, Bpmn2Preferences.PREF_SHAPE_STYLE)!=null) {
- StyleUtil.applyStyle(ga, be);
- }
- }
-
- }
- }
- }
- }
- }
- });
- }
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2011 Red Hat, Inc.
+ * All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ *
+ * @author Innar Made
+ ******************************************************************************/
+package org.eclipse.bpmn2.modeler.ui.editor;
+
+import java.io.IOException;
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Set;
+
+import org.eclipse.bpmn2.BaseElement;
+import org.eclipse.bpmn2.di.BPMNDiagram;
+import org.eclipse.bpmn2.di.BPMNPlane;
+import org.eclipse.bpmn2.modeler.core.Bpmn2TabbedPropertySheetPage;
+import org.eclipse.bpmn2.modeler.core.ModelHandler;
+import org.eclipse.bpmn2.modeler.core.ModelHandlerLocator;
+import org.eclipse.bpmn2.modeler.core.ProxyURIConverterImplExtension;
+import org.eclipse.bpmn2.modeler.core.di.DIImport;
+import org.eclipse.bpmn2.modeler.core.model.Bpmn2ModelerResourceImpl;
+import org.eclipse.bpmn2.modeler.core.preferences.Bpmn2Preferences;
+import org.eclipse.bpmn2.modeler.core.runtime.TargetRuntime;
+import org.eclipse.bpmn2.modeler.core.utils.BusinessObjectUtil;
+import org.eclipse.bpmn2.modeler.core.utils.DiagramEditorAdapter;
+import org.eclipse.bpmn2.modeler.core.utils.ErrorUtils;
+import org.eclipse.bpmn2.modeler.core.utils.ModelUtil;
+import org.eclipse.bpmn2.modeler.core.utils.ModelUtil.Bpmn2DiagramType;
+import org.eclipse.bpmn2.modeler.core.utils.StyleUtil;
+import org.eclipse.bpmn2.modeler.ui.Activator;
+import org.eclipse.bpmn2.modeler.ui.wizards.BPMN2DiagramCreator;
+import org.eclipse.bpmn2.modeler.ui.wizards.Bpmn2DiagramEditorInput;
+import org.eclipse.bpmn2.util.Bpmn2ResourceImpl;
+import org.eclipse.core.resources.IFile;
+import org.eclipse.core.resources.IFolder;
+import org.eclipse.core.resources.IProject;
+import org.eclipse.core.resources.IResource;
+import org.eclipse.core.resources.ResourcesPlugin;
+import org.eclipse.core.runtime.CoreException;
+import org.eclipse.core.runtime.IPath;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.core.runtime.IStatus;
+import org.eclipse.core.runtime.Path;
+import org.eclipse.core.runtime.Status;
+import org.eclipse.emf.common.command.BasicCommandStack;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.command.CommandStack;
+import org.eclipse.emf.common.notify.Adapter;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.common.notify.Notifier;
+import org.eclipse.emf.common.util.BasicDiagnostic;
+import org.eclipse.emf.common.util.TreeIterator;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.ecore.resource.ResourceSet;
+import org.eclipse.emf.transaction.NotificationFilter;
+import org.eclipse.emf.transaction.RecordingCommand;
+import org.eclipse.emf.transaction.ResourceSetChangeEvent;
+import org.eclipse.emf.transaction.ResourceSetListener;
+import org.eclipse.emf.transaction.RollbackException;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.emf.transaction.TransactionalEditingDomain.Lifecycle;
+import org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl;
+import org.eclipse.emf.workspace.util.WorkspaceSynchronizer;
+import org.eclipse.gef.GraphicalViewer;
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm;
+import org.eclipse.graphiti.mm.pictograms.Diagram;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.services.IPeService;
+import org.eclipse.graphiti.ui.editor.DefaultMarkerBehavior;
+import org.eclipse.graphiti.ui.editor.DefaultPaletteBehavior;
+import org.eclipse.graphiti.ui.editor.DefaultPersistencyBehavior;
+import org.eclipse.graphiti.ui.editor.DefaultRefreshBehavior;
+import org.eclipse.graphiti.ui.editor.DefaultUpdateBehavior;
+import org.eclipse.graphiti.ui.editor.DiagramEditor;
+import org.eclipse.graphiti.ui.editor.DiagramEditorInput;
+import org.eclipse.graphiti.ui.internal.editor.GFPaletteRoot;
+import org.eclipse.jface.operation.IRunnableWithProgress;
+import org.eclipse.jface.util.IPropertyChangeListener;
+import org.eclipse.jface.util.PropertyChangeEvent;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.swt.widgets.Composite;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorReference;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IFileEditorInput;
+import org.eclipse.ui.IPartListener2;
+import org.eclipse.ui.IWorkbench;
+import org.eclipse.ui.IWorkbenchListener;
+import org.eclipse.ui.IWorkbenchPage;
+import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchPartReference;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.PlatformUI;
+import org.eclipse.ui.dialogs.SaveAsDialog;
+import org.eclipse.ui.ide.ResourceUtil;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.views.properties.IPropertySheetPage;
+import org.eclipse.ui.views.properties.tabbed.ITabDescriptorProvider;
+import org.eclipse.ui.views.properties.tabbed.TabbedPropertySheetPage;
+
+/**
+ *
+ */
+@SuppressWarnings("restriction")
+public class BPMN2Editor extends DiagramEditor implements IPropertyChangeListener {
+
+ public static final String EDITOR_ID = "org.eclipse.bpmn2.modeler.ui.bpmn2editor";
+ public static final String CONTRIBUTOR_ID = "org.eclipse.bpmn2.modeler.ui.PropertyContributor";
+
+ private ModelHandler modelHandler;
+ private URI modelUri;
+ private URI diagramUri;
+
+ private IFile modelFile;
+ private IFile diagramFile;
+ private BPMNDiagram bpmnDiagram;
+
+ private IWorkbenchListener workbenchListener;
+ private IPartListener2 selectionListener;
+ private boolean workbenchShutdown = false;
+ private static BPMN2Editor activeEditor;
+ private static ITabDescriptorProvider tabDescriptorProvider;
+
+ private BPMN2EditingDomainListener editingDomainListener;
+
+ private Bpmn2Preferences preferences;
+ private TargetRuntime targetRuntime;
+ private Hashtable<BPMNDiagram, GraphicalViewer> mapDiagramToViewer = new Hashtable<BPMNDiagram, GraphicalViewer>();
+
+ protected DiagramEditorAdapter editorAdapter;
+
+ public static BPMN2Editor getActiveEditor() {
+ return activeEditor;
+ }
+
+ private void setActiveEditor(BPMN2Editor editor) {
+ activeEditor = editor;
+ if (activeEditor!=null) {
+ Bpmn2Preferences.setActiveProject(activeEditor.modelFile.getProject());
+ TargetRuntime.setCurrentRuntime( activeEditor.getTargetRuntime() );
+ }
+ }
+
+ protected DiagramEditorAdapter getEditorAdapter() {
+ return editorAdapter;
+ }
+
+ @Override
+ public void init(IEditorSite site, IEditorInput input) throws PartInitException {
+ try {
+ Bpmn2DiagramType diagramType = Bpmn2DiagramType.NONE;
+ String targetNamespace = null;
+ bpmnDiagram = null;
+
+ if (input instanceof IFileEditorInput) {
+ modelFile = ((IFileEditorInput) input).getFile();
+ loadPreferences(modelFile.getProject());
+
+ input = createNewDiagramEditorInput(diagramType, targetNamespace);
+
+ } else if (input instanceof DiagramEditorInput) {
+ getModelPathFromInput((DiagramEditorInput) input);
+ loadPreferences(modelFile.getProject());
+ if (input instanceof Bpmn2DiagramEditorInput) {
+ diagramType = ((Bpmn2DiagramEditorInput)input).getInitialDiagramType();
+ targetNamespace = ((Bpmn2DiagramEditorInput)input).getTargetNamespace();
+ bpmnDiagram = ((Bpmn2DiagramEditorInput)input).getBpmnDiagram();
+ }
+ if (bpmnDiagram==null) {
+ // This was incorrectly constructed input, we ditch the old one and make a new and clean one instead
+ // This code path comes in from the New File Wizard
+ input = createNewDiagramEditorInput(diagramType, targetNamespace);
+ }
+ else {
+ BPMNDiagram d = bpmnDiagram;
+ bpmnDiagram = null;
+ setBpmnDiagram(d);
+ return;
+ }
+ }
+ } catch (CoreException e) {
+ Activator.showErrorWithLogging(e);
+ }
+
+ // add a listener so we get notified if the workbench is shutting down.
+ // in this case we don't want to delete the temp file!
+ addWorkbenchListener();
+ setActiveEditor(this);
+
+ // allow the runtime extension to construct custom tasks and whatever else it needs
+ // custom tasks should be added to the current target runtime's custom tasks list
+ // where they will be picked up by the toolpalette refresh.
+ getTargetRuntime().getRuntimeExtension().initialize();
+
+ super.init(site, input);
+ addSelectionListener();
+ }
+
+ @Override
+ protected DefaultUpdateBehavior createUpdateBehavior() {
+ return new BPMN2EditorUpdateBehavior(this);
+ }
+
+ public Bpmn2Preferences getPreferences() {
+ if (preferences==null) {
+ assert(modelFile!=null);
+ IProject project = modelFile.getProject();
+ loadPreferences(project);
+ }
+ return preferences;
+ }
+
+ private void loadPreferences(IProject project) {
+ preferences = Bpmn2Preferences.getInstance(project);
+ preferences.load();
+ preferences.getGlobalPreferences().addPropertyChangeListener(this);
+ }
+
+ /**
+ * ID for tabbed property sheets.
+ *
+ * @return the contributor id
+ */
+ @Override
+ public String getContributorId() {
+ return CONTRIBUTOR_ID;
+ }
+
+ public TargetRuntime getTargetRuntime(ITabDescriptorProvider tdp) {
+ tabDescriptorProvider = tdp;
+ return getTargetRuntime();
+ }
+
+ public TargetRuntime getTargetRuntime() {
+ if (targetRuntime==null)
+ targetRuntime = getPreferences().getRuntime(modelFile);
+ return targetRuntime;
+ }
+
+ private void getModelPathFromInput(DiagramEditorInput input) {
+ URI uri = input.getUri();
+ String uriString = uri.trimFragment().toPlatformString(true);
+ modelFile = BPMN2DiagramCreator.getModelFile(new Path(uriString));
+ }
+
+ /**
+ * Beware, creates a new input and changes this editor!
+ */
+ private Bpmn2DiagramEditorInput createNewDiagramEditorInput(Bpmn2DiagramType diagramType, String targetNamespace)
+ throws CoreException {
+ IPath fullPath = modelFile.getFullPath();
+ modelUri = URI.createPlatformResourceURI(fullPath.toString(), true);
+
+ IFolder folder = BPMN2DiagramCreator.getTempFolder(fullPath);
+ diagramFile = BPMN2DiagramCreator.getTempFile(fullPath,folder);
+
+ // Create new temporary diagram file
+ BPMN2DiagramCreator creator = new BPMN2DiagramCreator();
+ creator.setDiagramFile(diagramFile);
+
+ Bpmn2DiagramEditorInput input = creator.createDiagram(diagramType,targetNamespace,this);
+ diagramUri = creator.getUri();
+
+ return input;
+ }
+
+ private void saveModelFile() {
+ modelHandler.save();
+ ((BasicCommandStack) getEditingDomain().getCommandStack()).saveIsDone();
+ updateDirtyState();
+ }
+
+ @Override
+ protected void setInput(IEditorInput input) {
+ super.setInput(input);
+
+ // Hook a transaction exception handler so we can get diagnostics about EMF validation errors.
+ getEditingDomainListener();
+
+ BasicCommandStack basicCommandStack = (BasicCommandStack) getEditingDomain().getCommandStack();
+
+ if (input instanceof DiagramEditorInput) {
+ ResourceSet resourceSet = getEditingDomain().getResourceSet();
+ getTargetRuntime().setResourceSet(resourceSet);
+
+ Bpmn2ResourceImpl bpmnResource = (Bpmn2ResourceImpl) resourceSet.createResource(modelUri,
+ Bpmn2ModelerResourceImpl.BPMN2_CONTENT_TYPE_ID);
+
+ resourceSet.setURIConverter(new ProxyURIConverterImplExtension());
+ resourceSet.eAdapters().add(editorAdapter = new DiagramEditorAdapter(this));
+
+ modelHandler = ModelHandlerLocator.createModelHandler(modelUri, bpmnResource);
+ ModelHandlerLocator.put(diagramUri, modelHandler);
+
+ try {
+ if (modelFile.exists()) {
+ bpmnResource.load(null);
+ } else {
+ saveModelFile();
+ }
+ } catch (IOException e) {
+ Status status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e);
+ ErrorUtils.showErrorWithLogging(status);
+ }
+ basicCommandStack.execute(new RecordingCommand(getEditingDomain()) {
+
+ @Override
+ protected void doExecute() {
+ importDiagram();
+ }
+ });
+ }
+ basicCommandStack.saveIsDone();
+ basicCommandStack.flush();
+ }
+
+ private void importDiagram() {
+ // make sure this guy is active, otherwise it's not selectable
+ Diagram diagram = getDiagramTypeProvider().getDiagram();
+ IFeatureProvider featureProvider = getDiagramTypeProvider().getFeatureProvider();
+ diagram.setActive(true);
+ Bpmn2DiagramEditorInput input = (Bpmn2DiagramEditorInput) getEditorInput();
+ Bpmn2DiagramType diagramType = input.getInitialDiagramType();
+ String targetNamespace = input.getTargetNamespace();
+
+ if (diagramType != Bpmn2DiagramType.NONE) {
+ bpmnDiagram = modelHandler.createDiagramType(diagramType, targetNamespace);
+ featureProvider.link(diagram, bpmnDiagram);
+ saveModelFile();
+ }
+
+ DIImport di = new DIImport();
+ di.setDiagram(diagram);
+ di.setDomain(getEditingDomain());
+ di.setModelHandler(modelHandler);
+ di.setFeatureProvider(featureProvider);
+ di.generateFromDI();
+
+ // this needs to happen AFTER the diagram has been imported because we need
+ // to be able to determine the diagram type from the file's contents in order
+ // to build the right tool palette for the target runtime and model enablements.
+ GFPaletteRoot pr = (GFPaletteRoot)getPaletteRoot();
+ pr.updatePaletteEntries();
+ }
+
+ @Override
+ protected PictogramElement[] getPictogramElementsForSelection() {
+ // filter out invisible elements when setting selection
+ PictogramElement[] pictogramElements = super.getPictogramElementsForSelection();
+ if (pictogramElements==null)
+ return null;
+ ArrayList<PictogramElement> visibleList = new ArrayList<PictogramElement>();
+ for (PictogramElement pe : pictogramElements) {
+ if (pe.isVisible())
+ visibleList.add(pe);
+ }
+ return visibleList.toArray(new PictogramElement[visibleList.size()]);
+ }
+
+ private void addWorkbenchListener() {
+ if (workbenchListener==null) {
+ workbenchListener = new IWorkbenchListener() {
+ @Override
+ public boolean preShutdown(IWorkbench workbench, boolean forced) {
+ workbenchShutdown = true;
+ return true;
+ }
+
+ @Override
+ public void postShutdown(IWorkbench workbench) {
+ }
+
+ };
+ PlatformUI.getWorkbench().addWorkbenchListener(workbenchListener);
+ }
+ }
+
+ private void removeWorkbenchListener()
+ {
+ if (workbenchListener!=null) {
+ PlatformUI.getWorkbench().removeWorkbenchListener(workbenchListener);
+ workbenchListener = null;
+ }
+ }
+
+ private void addSelectionListener() {
+ if (selectionListener == null) {
+ IWorkbenchPage page = getSite().getPage();
+ selectionListener = new IPartListener2() {
+ public void partActivated(IWorkbenchPartReference partRef) {
+ }
+
+ @Override
+ public void partBroughtToTop(IWorkbenchPartReference partRef) {
+ IWorkbenchPart part = partRef.getPart(false);
+ if (part instanceof BPMN2MultiPageEditor) {
+ BPMN2MultiPageEditor mpe = (BPMN2MultiPageEditor)part;
+ setActiveEditor(mpe.designEditor);
+ }
+ }
+
+ @Override
+ public void partClosed(IWorkbenchPartReference partRef) {
+ }
+
+ @Override
+ public void partDeactivated(IWorkbenchPartReference partRef) {
+ }
+
+ @Override
+ public void partOpened(IWorkbenchPartReference partRef) {
+ }
+
+ @Override
+ public void partHidden(IWorkbenchPartReference partRef) {
+ }
+
+ @Override
+ public void partVisible(IWorkbenchPartReference partRef) {
+ }
+
+ @Override
+ public void partInputChanged(IWorkbenchPartReference partRef) {
+ }
+ };
+ page.addPartListener(selectionListener);
+ }
+ }
+
+ private void removeSelectionListener()
+ {
+ if (selectionListener!=null) {
+ getSite().getPage().removePartListener(selectionListener);
+ selectionListener = null;
+ }
+ }
+
+ public void setEditorTitle(final String title) {
+ Display display = getSite().getShell().getDisplay();
+ display.asyncExec(new Runnable() {
+ public void run() {
+ setPartName(title);
+ }
+ });
+ }
+
+ public BPMN2EditingDomainListener getEditingDomainListener() {
+ if (editingDomainListener==null) {
+ TransactionalEditingDomainImpl editingDomain = (TransactionalEditingDomainImpl)getEditingDomain();
+ if (editingDomain==null) {
+ return null;
+ }
+ editingDomainListener = new BPMN2EditingDomainListener(this);
+
+ Lifecycle domainLifeCycle = (Lifecycle) editingDomain.getAdapter(Lifecycle.class);
+ domainLifeCycle.addTransactionalEditingDomainListener(editingDomainListener);
+ }
+ return editingDomainListener;
+ }
+
+ public BasicDiagnostic getDiagnostics() {
+ return getEditingDomainListener().getDiagnostics();
+ }
+
+ @Override
+ public Object getAdapter(Class required) {
+ if (required==ITabDescriptorProvider.class) {
+ if (tabDescriptorProvider==null) {
+ IWorkbenchPage page = getEditorSite().getPage();
+ String viewID = "org.eclipse.ui.views.PropertySheet";
+ try {
+ page.showView(viewID, null, IWorkbenchPage.VIEW_CREATE);
+ page.showView(viewID, null, IWorkbenchPage.VIEW_ACTIVATE);
+ }
+ catch (Exception e) {}
+ }
+ return tabDescriptorProvider;
+ }
+ if (required==TargetRuntime.class)
+ return getTargetRuntime();
+ if (required==Bpmn2Preferences.class)
+ return getPreferences();
+ if (required == IPropertySheetPage.class) {
+ return new Bpmn2TabbedPropertySheetPage(this);
+ }
+ return super.getAdapter(required);
+ }
+
+ @Override
+ public void dispose() {
+ // clear ID mapping tables if no more instances of editor are active
+ int instances = 0;
+ IWorkbenchPage[] pages = getEditorSite().getWorkbenchWindow().getPages();
+ for (IWorkbenchPage p : pages) {
+ IEditorReference[] refs = p.getEditorReferences();
+ instances += refs.length;
+ }
+ ModelUtil.clearIDs(modelHandler.getResource(), instances==0);
+ getPreferences().getGlobalPreferences().removePropertyChangeListener(this);
+
+ getResourceSet().eAdapters().remove(getEditorAdapter());
+ removeSelectionListener();
+ if (instances==0)
+ setActiveEditor(null);
+
+ super.dispose();
+ ModelHandlerLocator.remove(modelUri);
+ // get rid of temp files and folders, button only if the workbench is being shut down.
+ // when the workbench is restarted, we need to have those temp files around!
+ if (!workbenchShutdown)
+ BPMN2DiagramCreator.dispose(diagramFile);
+ removeWorkbenchListener();
+ getPreferences().dispose();
+ }
+
+ public IFile getModelFile() {
+ return modelFile;
+ }
+
+ public IFile getDiagramFile() {
+ return diagramFile;
+ }
+
+ public ModelHandler getModelHandler() {
+ return modelHandler;
+ }
+
+ public BPMNDiagram getBpmnDiagram() {
+ if (bpmnDiagram==null)
+ bpmnDiagram = getModelHandler().getDefinitions().getDiagrams().get(0);
+
+ if (bpmnDiagram!=null) {
+ GraphicalViewer viewer = getGraphicalViewer();
+ mapDiagramToViewer.put(bpmnDiagram, viewer);
+ }
+ return bpmnDiagram;
+ }
+
+ public void setBpmnDiagram(final BPMNDiagram bpmnDiagram) {
+ if (this.bpmnDiagram == bpmnDiagram)
+ return;
+
+ GraphicalViewer viewer = mapDiagramToViewer.get(bpmnDiagram);
+ // do we need to create a new Diagram or is this already in the model?
+ Diagram oldDiagram = null;
+ Diagram diagram = null;
+ final Resource resource = getDiagramTypeProvider().getDiagram().eResource();
+ for (EObject o : resource.getContents()) {
+ if (o instanceof Diagram) {
+ Diagram d = (Diagram)o;
+ if (BusinessObjectUtil.getFirstElementOfType(d, BPMNDiagram.class) == bpmnDiagram) {
+ oldDiagram = d;
+ break;
+ }
+ }
+ }
+
+ if (oldDiagram==null) {
+ // create a new one
+ String typeId = getDiagramTypeProvider().getDiagram().getDiagramTypeId();
+ final Diagram newDiagram = Graphiti.getCreateService().createDiagram(typeId, bpmnDiagram.getName(), true);
+ final IFeatureProvider featureProvider = getDiagramTypeProvider().getFeatureProvider();
+ TransactionalEditingDomain domain = getEditingDomain();
+ domain.getCommandStack().execute(new RecordingCommand(domain) {
+ protected void doExecute() {
+ resource.getContents().add(newDiagram);
+ newDiagram.setActive(true);
+ featureProvider.link(newDiagram, bpmnDiagram);
+ }
+ });
+ diagram = newDiagram;
+ }
+ else {
+ // already there
+ diagram = oldDiagram;
+ }
+
+ // set the new Diagram in the DTP and refresh graphical viewer
+ getRefreshBehavior().initRefresh();
+ setPictogramElementsForSelection(null);
+ getDiagramTypeProvider().init(diagram, this);
+ if (viewer!=null)
+ setGraphicalViewer(viewer);
+
+ refreshContent();
+ // remember this for later
+ this.bpmnDiagram = bpmnDiagram;
+ }
+
+ @Override
+ public boolean isSaveAsAllowed() {
+ return true;
+ }
+
+ @Override
+ public void doSaveAs() {
+ IFile oldFile = getModelFile();
+ SaveAsDialog saveAsDialog = new SaveAsDialog(getSite().getShell());
+ saveAsDialog.setOriginalFile(oldFile);
+ saveAsDialog.create();
+ if (saveAsDialog.open() == SaveAsDialog.CANCEL) {
+ return;
+ }
+ IPath newFilePath = saveAsDialog.getResult();
+ if (newFilePath == null){
+ return;
+ }
+
+ IFile newFile = ResourcesPlugin.getWorkspace().getRoot().getFile(newFilePath);
+ IWorkbenchPage page = getSite().getPage();
+
+ try {
+ // Save the current(old) file
+ doSave(null);
+ // if new file exists, close its editor (if open) and delete the existing file
+ if (newFile.exists()) {
+ IEditorPart editorPart = ResourceUtil.findEditor(page, newFile);
+ if (editorPart!=null)
+ page.closeEditor(editorPart, false);
+ newFile.delete(true, null);
+ }
+ // make a copy
+ oldFile.copy(newFilePath, true, null);
+ } catch (CoreException e) {
+ showErrorDialogWithLogging(e);
+ return;
+ }
+
+ // open new editor
+ try {
+ page.openEditor(new FileEditorInput(newFile), BPMN2Editor.EDITOR_ID);
+ } catch (PartInitException e1) {
+ showErrorDialogWithLogging(e1);
+ return;
+ }
+
+ // and close the old editor
+ IEditorPart editorPart = ResourceUtil.findEditor(page, oldFile);
+ if (editorPart!=null)
+ page.closeEditor(editorPart, false);
+
+ try {
+ newFile.refreshLocal(IResource.DEPTH_ZERO,null);
+ } catch (CoreException e) {
+ showErrorDialogWithLogging(e);
+ return;
+ }
+ }
+
+ public void closeEditor() {
+ Display display = getSite().getShell().getDisplay();
+ display.asyncExec(new Runnable() {
+ public void run() {
+ boolean closed = getSite().getPage().closeEditor(BPMN2Editor.this, false);
+ if (!closed){
+ // If close editor fails, try again with explicit editorpart
+ // of the old file
+ IFile oldFile = ResourcesPlugin.getWorkspace().getRoot().getFile(modelFile.getFullPath());
+ IEditorPart editorPart = ResourceUtil.findEditor(getSite().getPage(), oldFile);
+ closed = getSite().getPage().closeEditor(editorPart, false);
+ }
+ }
+ });
+ }
+
+ // Show error dialog and log the error
+ private void showErrorDialogWithLogging(Exception e) {
+ Status status = new Status(IStatus.ERROR, Activator.PLUGIN_ID, e.getMessage(), e);
+ ErrorUtils.showErrorWithLogging(status);
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
+ // WorkspaceSynchronizer handlers called from delegate
+ ////////////////////////////////////////////////////////////////////////////////
+
+ public boolean handleResourceChanged(Resource resource) {
+ return true;
+ }
+
+ public boolean handleResourceDeleted(Resource resource) {
+ closeEditor();
+ return true;
+ }
+
+ public boolean handleResourceMoved(Resource resource, URI newURI) {
+ URI oldURI = resource.getURI();
+ resource.setURI(newURI);
+
+ IFile file = WorkspaceSynchronizer.getUnderlyingFile(resource);
+ if (modelUri.equals(oldURI)) {
+ ModelHandlerLocator.remove(modelUri);
+ modelUri = newURI;
+ modelFile = file;
+ if (preferences!=null) {
+ preferences.getGlobalPreferences().removePropertyChangeListener(this);
+ preferences.dispose();
+ preferences = null;
+ }
+ targetRuntime = null;
+ modelHandler = ModelHandlerLocator.createModelHandler(modelUri, (Bpmn2ResourceImpl)resource);
+ ModelHandlerLocator.put(diagramUri, modelHandler);
+
+ setEditorTitle(file.getFullPath().removeFileExtension().lastSegment());
+ }
+ else if (diagramUri.equals(oldURI)) {
+ ModelHandlerLocator.remove(diagramUri);
+ diagramUri = newURI;
+ ModelHandlerLocator.put(diagramUri, modelHandler);
+ diagramFile = file;
+ }
+
+ return true;
+ }
+
+ ////////////////////////////////////////////////////////////////////////////////
+ // Other handlers
+ ////////////////////////////////////////////////////////////////////////////////
+
+ @Override
+ public void selectionChanged(IWorkbenchPart part, ISelection selection) {
+ // Graphiti understands multipage editors
+ super.selectionChanged(part,selection); // Graphiti's DiagramEditorInternal
+ // but apparently GEF doesn't
+ updateActions(getSelectionActions()); // usually done in GEF's GraphicalEditor
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.jface.util.IPropertyChangeListener#propertyChange(org.eclipse.jface.util.PropertyChangeEvent)
+ */
+ @Override
+ public void propertyChange(PropertyChangeEvent event) {
+ if (event.getProperty().endsWith(Bpmn2Preferences.PREF_SHAPE_STYLE)) {
+ getEditingDomain().getCommandStack().execute(new RecordingCommand(getEditingDomain()) {
+ @Override
+ protected void doExecute() {
+ IPeService peService = Graphiti.getPeService();
+ TreeIterator<EObject> iter = getDiagramTypeProvider().getDiagram().eAllContents();
+ while (iter.hasNext()) {
+ EObject o = iter.next();
+ if (o instanceof PictogramElement) {
+ PictogramElement pe = (PictogramElement)o;
+ BaseElement be = BusinessObjectUtil.getFirstElementOfType(pe, BaseElement.class);
+ if (be!=null) {
+ TreeIterator<EObject> childIter = pe.eAllContents();
+ while (childIter.hasNext()) {
+ o = childIter.next();
+ if (o instanceof GraphicsAlgorithm) {
+ GraphicsAlgorithm ga = (GraphicsAlgorithm)o;
+ if (peService.getPropertyValue(ga, Bpmn2Preferences.PREF_SHAPE_STYLE)!=null) {
+ StyleUtil.applyStyle(ga, be);
+ }
+ }
+
+ }
+ }
+ }
+ }
+ }
+ });
+ }
+ }
+}
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2MultiPageEditor.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2MultiPageEditor.java
index 0486042..85f831e 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2MultiPageEditor.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2MultiPageEditor.java
@@ -1,434 +1,574 @@
-/*******************************************************************************
- * Copyright (c) 2011 Red Hat, Inc.
- * All rights reserved.
- * This program is made available under the terms of the
- * Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Red Hat, Inc. - initial API and implementation
- *
- * @author Bob Brodt
- ******************************************************************************/
-
-package org.eclipse.bpmn2.modeler.ui.editor;
-
-import java.util.List;
-
-import org.eclipse.bpmn2.BaseElement;
-import org.eclipse.core.runtime.IProgressMonitor;
-import org.eclipse.gef.ContextMenuProvider;
-import org.eclipse.gef.ui.actions.ActionRegistry;
-import org.eclipse.gef.ui.actions.WorkbenchPartAction;
-import org.eclipse.graphiti.dt.IDiagramTypeProvider;
-import org.eclipse.graphiti.mm.pictograms.ContainerShape;
-import org.eclipse.graphiti.mm.pictograms.FreeFormConnection;
-import org.eclipse.graphiti.mm.pictograms.PictogramElement;
-import org.eclipse.graphiti.services.Graphiti;
-import org.eclipse.graphiti.ui.editor.DiagramEditor;
-import org.eclipse.graphiti.ui.editor.DiagramEditorContextMenuProvider;
-import org.eclipse.jface.action.IAction;
-import org.eclipse.jface.action.IMenuManager;
-import org.eclipse.jface.viewers.ISelection;
-import org.eclipse.jface.viewers.ISelectionProvider;
-import org.eclipse.jface.viewers.IStructuredSelection;
-import org.eclipse.jface.viewers.SelectionChangedEvent;
-import org.eclipse.jface.viewers.StructuredSelection;
-import org.eclipse.swt.custom.CTabFolder;
-import org.eclipse.swt.custom.CTabFolder2Listener;
-import org.eclipse.swt.custom.CTabFolderEvent;
-import org.eclipse.ui.IEditorInput;
-import org.eclipse.ui.IEditorPart;
-import org.eclipse.ui.IEditorSite;
-import org.eclipse.ui.PartInitException;
-import org.eclipse.ui.part.EditorPart;
-import org.eclipse.ui.part.FileEditorInput;
-import org.eclipse.ui.part.MultiPageEditorPart;
-import org.eclipse.ui.part.MultiPageEditorSite;
-import org.eclipse.ui.part.MultiPageSelectionProvider;
-import org.eclipse.wst.sse.ui.StructuredTextEditor;
-import org.w3c.dom.Attr;
-import org.w3c.dom.Element;
-import org.w3c.dom.Node;
-
-/**
- * This class implements a multi-page version of the BPMN2 Modeler (BPMN2Editor class).
- * To revert back to the original, single-page version simply change the editor extension
- * point in plugin.xml (see comments there).
- *
- * This is still in the experimental phase and currently only supports a single diagram
- * per .bpmn file. An optional second page, which displays the XML source, can be created
- * from the context menu. The source view is not yet synchronized to the design view and
- * can only show the XML as of the last "Save" i.e. the current state of the file on disk,
- * not the in-memory model. Design/Source view synchronization will be implemented in a
- * future version, but direct editing of the XML will not be supported - it will remain
- * "view only".
- *
- * Future versions will support multiple diagrams per .bpmn file with the ability to add
- * and remove pages containing different diagram types. It should be possible for the user
- * to create a single file that contains a mix of Process, Collaboration and Choreography
- * diagrams. Whether or not these types of files are actually deployable and/or executable
- * is another story ;)
- */
-public class BPMN2MultiPageEditor extends MultiPageEditorPart {
-
- BPMN2Editor designEditor;
- StructuredTextEditor sourceViewer;
- CTabFolder tabFolder;
- int defaultTabHeight;
-
- /**
- *
- */
- public BPMN2MultiPageEditor() {
- super();
- }
-
- @Override
- protected IEditorSite createSite(IEditorPart editor) {
- return new MultiPageEditorSite(this, editor) {
- @Override
- protected void handleSelectionChanged(SelectionChangedEvent event) {
- ISelectionProvider parentProvider = getMultiPageEditor().getSite()
- .getSelectionProvider();
- if (parentProvider instanceof MultiPageSelectionProvider) {
- SelectionChangedEvent newEvent = getNewEvent(parentProvider, event);
- MultiPageSelectionProvider prov = (MultiPageSelectionProvider) parentProvider;
- prov.fireSelectionChanged(newEvent);
- }
- }
-
- @Override
- protected void handlePostSelectionChanged(SelectionChangedEvent event) {
- ISelectionProvider parentProvider = getMultiPageEditor().getSite()
- .getSelectionProvider();
- if (parentProvider instanceof MultiPageSelectionProvider) {
- SelectionChangedEvent newEvent = getNewEvent(parentProvider, event);
- MultiPageSelectionProvider prov = (MultiPageSelectionProvider) parentProvider;
- prov.firePostSelectionChanged(newEvent);
- }
- }
-
- protected SelectionChangedEvent getNewEvent(ISelectionProvider parentProvider, SelectionChangedEvent event) {
- ISelection selection = event.getSelection();
- if (selection instanceof IStructuredSelection) {
- IStructuredSelection ss = (IStructuredSelection)selection;
- Object o = ss.getFirstElement();
- if (o instanceof Node) {
- selection = getNewSelection((Node)o);
- }
- }
- if (selection!=null)
- return new SelectionChangedEvent(parentProvider, selection);
- return event;
- }
-
- protected StructuredSelection getNewSelection(Node node) {
- int type = node.getNodeType();
- if (type==1) {
- // node type = element
- PictogramElement pe = null;
- Element elem = (Element)node;
- String value = elem.getAttribute("bpmnElement");
- if (value!=null) {
- pe = findPictogramElement(value);
- }
-
- if (pe==null) {
- value = elem.getAttribute("id");
- if (value!=null)
- pe = findPictogramElement(value);
- }
-
- if (pe!=null) {
- return new StructuredSelection(pe);
- }
- return getNewSelection(node.getParentNode());
- }
- else if (type==2) {
- // node type = attribute
- // search the attribute's owner
- Attr attr = (Attr)node;
- return getNewSelection(attr.getOwnerElement());
- }
- else if (type==3) {
- // node type = text
- return getNewSelection(node.getParentNode());
- }
- return null;
- }
-
- protected PictogramElement findPictogramElement(String id) {
- PictogramElement pictogramElement = null;
- if (id!=null) {
- BaseElement be = designEditor.getModelHandler().findElement(id);
- List<PictogramElement> pes = Graphiti.getLinkService().getPictogramElements(designEditor.getDiagramTypeProvider().getDiagram(), be);
- for (PictogramElement pe : pes) {
- if (pe instanceof ContainerShape) {
- pictogramElement = pe;
- }
- else if (pe instanceof FreeFormConnection) {
- pictogramElement = pe;
- }
- }
- }
-
- return pictogramElement;
- }
- };
- }
-
- @Override
- public String getTitle() {
- if (designEditor!=null)
- return designEditor.getTitle();
- return super.getTitle();
- }
-
- @Override
- public String getPartName() {
- if (designEditor!=null)
- return designEditor.getPartName();
- return super.getPartName();
- }
-
- @Override
- protected void pageChange(int newPageIndex) {
- super.pageChange(newPageIndex);
- if (newPageIndex>0 && newPageIndex==tabFolder.getItemCount()-1) {
- // TODO: sync source viewer's DOM with model
- }
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.part.MultiPageEditorPart#createPages()
- */
- @Override
- protected void createPages() {
- tabFolder = (CTabFolder)getContainer();
- tabFolder.addCTabFolder2Listener( new CTabFolder2Listener() {
-
- @Override
- public void close(CTabFolderEvent event) {
- if (event.item.getData() == sourceViewer)
- removeSourceViewer();
- }
-
- @Override
- public void minimize(CTabFolderEvent event) {
- }
-
- @Override
- public void maximize(CTabFolderEvent event) {
- }
-
- @Override
- public void restore(CTabFolderEvent event) {
- }
-
- @Override
- public void showList(CTabFolderEvent event) {
- }
-
- });
- createDesignEditor();
-// createSourceViewer();
- }
-
- protected void createDesignEditor() {
- if (designEditor==null) {
- designEditor = new DesignEditor();
-
- try {
- int pageIndex = tabFolder.getItemCount();
- if (sourceViewer!=null)
- --pageIndex;
- addPage(pageIndex, designEditor, BPMN2MultiPageEditor.this.getEditorInput());
- defaultTabHeight = tabFolder.getTabHeight();
- setPageText(pageIndex,"Design");
-
- // TODO: it should be possible to create additional instances of the BPMN2Editor
- // that use the same IEditorInput as the original, but work within different
- // BPMNPlane objects within the same model.
- // Likewise, it should be possible to remove a page, which causes the associated
- // BPMNPlane to be removed from the model. The last page may not be removed because
- // this would invalidate the bpmn file.
-// ++pageIndex;
-// DesignEditor designEditor2 = new DesignEditor();
-// addPage(pageIndex, designEditor2, BPMN2MultiPageEditor.this.getEditorInput());
-// setPageText(pageIndex,"Design 2");
-
- defaultTabHeight = tabFolder.getTabHeight();
-
- updateTabs();
- }
- catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
-
- protected void createSourceViewer() {
- if (sourceViewer==null) {
- sourceViewer = new SourceViewer();
-
- try {
- int pageIndex = tabFolder.getItemCount();
- FileEditorInput input = new FileEditorInput(designEditor.getModelFile());
- addPage(pageIndex, sourceViewer, input);
- tabFolder.getItem(pageIndex).setShowClose(true);
-
- setPageText(pageIndex,"Source");
- updateTabs();
- }
- catch (Exception e) {
- e.printStackTrace();
- if (sourceViewer!=null)
- sourceViewer.dispose();
- }
- }
- }
-
- @Override
- public void removePage(int pageIndex) {
- Object page = tabFolder.getItem(pageIndex).getData();
- if (page instanceof EditorPart) {
- // make sure the editor gets disposed - neither CTabFolder nor super does this for us!
- ((EditorPart)page).dispose();
- }
- super.removePage(pageIndex);
- updateTabs();
- }
-
- public void removeSourceViewer() {
- // there will only be one source page and it will always be the last page in the tab folder
- if (sourceViewer!=null) {
- int pageIndex = tabFolder.getItemCount() - 1;
- if (pageIndex>0)
- removePage(pageIndex);
- }
- }
-
- private void updateTabs() {
- if (tabFolder.getItemCount()==1) {
- tabFolder.setTabHeight(0);
- }
- else
- tabFolder.setTabHeight(defaultTabHeight);
- tabFolder.layout();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.part.EditorPart#doSave(org.eclipse.core.runtime.IProgressMonitor)
- */
- @Override
- public void doSave(IProgressMonitor monitor) {
- designEditor.doSave(monitor);
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.part.EditorPart#doSaveAs()
- */
- @Override
- public void doSaveAs() {
- IEditorPart activeEditor = getActiveEditor();
- activeEditor.doSaveAs();
- }
-
- /* (non-Javadoc)
- * @see org.eclipse.ui.part.EditorPart#isSaveAsAllowed()
- */
- @Override
- public boolean isSaveAsAllowed() {
-
- /*
- * Depending upon the active page in multipage editor, call the saveAsAllowed.
- * It helps to see whether a particular editor allows 'save as' feature
- */
- IEditorPart activeEditor = getActiveEditor();
- return activeEditor.isSaveAsAllowed();
- }
-
- public class DesignEditor extends BPMN2Editor {
-
- @Override
- protected void createActions() {
- super.createActions();
- ActionRegistry registry = getActionRegistry();
- IAction action = new WorkbenchPartAction(designEditor) {
-
- @Override
- protected void init() {
- super.init();
- setId("show.or.hide.source.view");
- }
-
- @Override
- public String getText() {
- return sourceViewer==null ? "Show Source View" : "Hide Source View";
- }
-
- @Override
- protected boolean calculateEnabled() {
- return true;
- }
-
- public void run() {
- if (sourceViewer==null) {
- createSourceViewer();
- setActivePage(tabFolder.getItemCount()-1);
- }
- else {
- removeSourceViewer();
- }
- }
- };
- registry.registerAction(action);
- }
-
- @Override
- protected ContextMenuProvider createContextMenuProvider() {
- return new DiagramEditorContextMenuProvider(getGraphicalViewer(), getActionRegistry(), getDiagramTypeProvider()) {
- @Override
- public void buildContextMenu(IMenuManager manager) {
- super.buildContextMenu(manager);
- IAction action = getActionRegistry().getAction("show.or.hide.source.view");
- action.setText( action.getText() );
- manager.add(action);
- }
- };
- }
- }
-
- public class SourceViewer extends StructuredTextEditor {
-
- ActionRegistry actionRegistry = null;
-
- @Override
- @SuppressWarnings("rawtypes")
- public Object getAdapter(Class required) {
- if (required==ActionRegistry.class)
- return getActionRegistry();
- if (required==BPMN2Editor.class || required==DiagramEditor.class)
- return designEditor;
- return super.getAdapter(required);
- }
-
- @Override
- public boolean isEditable() {
- return false;
- }
-
- @Override
- public void dispose() {
- super.dispose();
- BPMN2MultiPageEditor.this.sourceViewer = null;
- }
-
- protected ActionRegistry getActionRegistry() {
- if (actionRegistry == null)
- actionRegistry = new ActionRegistry();
- return actionRegistry;
- }
- }
-}
+/*******************************************************************************
+ * Copyright (c) 2011 Red Hat, Inc.
+ * All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ *
+ * @author Bob Brodt
+ ******************************************************************************/
+
+package org.eclipse.bpmn2.modeler.ui.editor;
+
+import java.util.ArrayList;
+import java.util.Hashtable;
+import java.util.List;
+
+import org.eclipse.bpmn2.BaseElement;
+import org.eclipse.bpmn2.di.BPMNDiagram;
+import org.eclipse.bpmn2.di.BPMNPlane;
+import org.eclipse.bpmn2.modeler.ui.wizards.Bpmn2DiagramEditorInput;
+import org.eclipse.core.runtime.IProgressMonitor;
+import org.eclipse.emf.common.command.Command;
+import org.eclipse.emf.common.notify.Notification;
+import org.eclipse.emf.ecore.EObject;
+import org.eclipse.emf.transaction.NotificationFilter;
+import org.eclipse.emf.transaction.ResourceSetChangeEvent;
+import org.eclipse.emf.transaction.ResourceSetListener;
+import org.eclipse.emf.transaction.RollbackException;
+import org.eclipse.emf.transaction.impl.TransactionalEditingDomainImpl;
+import org.eclipse.gef.ContextMenuProvider;
+import org.eclipse.gef.ui.actions.ActionRegistry;
+import org.eclipse.gef.ui.actions.WorkbenchPartAction;
+import org.eclipse.graphiti.dt.IDiagramTypeProvider;
+import org.eclipse.graphiti.mm.pictograms.ContainerShape;
+import org.eclipse.graphiti.mm.pictograms.FreeFormConnection;
+import org.eclipse.graphiti.mm.pictograms.PictogramElement;
+import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.ui.editor.DiagramEditor;
+import org.eclipse.graphiti.ui.editor.DiagramEditorContextMenuProvider;
+import org.eclipse.jface.action.IAction;
+import org.eclipse.jface.action.IMenuManager;
+import org.eclipse.jface.dialogs.IPageChangedListener;
+import org.eclipse.jface.dialogs.PageChangedEvent;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.ISelectionProvider;
+import org.eclipse.jface.viewers.IStructuredSelection;
+import org.eclipse.jface.viewers.SelectionChangedEvent;
+import org.eclipse.jface.viewers.StructuredSelection;
+import org.eclipse.swt.custom.CTabFolder;
+import org.eclipse.swt.custom.CTabFolder2Listener;
+import org.eclipse.swt.custom.CTabFolderEvent;
+import org.eclipse.swt.custom.CTabItem;
+import org.eclipse.swt.widgets.Control;
+import org.eclipse.swt.widgets.Display;
+import org.eclipse.ui.IEditorInput;
+import org.eclipse.ui.IEditorPart;
+import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.PartInitException;
+import org.eclipse.ui.part.EditorPart;
+import org.eclipse.ui.part.FileEditorInput;
+import org.eclipse.ui.part.MultiPageEditorPart;
+import org.eclipse.ui.part.MultiPageEditorSite;
+import org.eclipse.ui.part.MultiPageSelectionProvider;
+import org.eclipse.ui.services.IServiceLocator;
+import org.eclipse.wst.sse.ui.StructuredTextEditor;
+import org.w3c.dom.Attr;
+import org.w3c.dom.Element;
+import org.w3c.dom.Node;
+
+/**
+ * This class implements a multi-page version of the BPMN2 Modeler (BPMN2Editor class).
+ * To revert back to the original, single-page version simply change the editor extension
+ * point in plugin.xml (see comments there).
+ *
+ * This is still in the experimental phase and currently only supports a single diagram
+ * per .bpmn file. An optional second page, which displays the XML source, can be created
+ * from the context menu. The source view is not yet synchronized to the design view and
+ * can only show the XML as of the last "Save" i.e. the current state of the file on disk,
+ * not the in-memory model. Design/Source view synchronization will be implemented in a
+ * future version, but direct editing of the XML will not be supported - it will remain
+ * "view only".
+ *
+ * Future versions will support multiple diagrams per .bpmn file with the ability to add
+ * and remove pages containing different diagram types. It should be possible for the user
+ * to create a single file that contains a mix of Process, Collaboration and Choreography
+ * diagrams. Whether or not these types of files are actually deployable and/or executable
+ * is another story ;)
+ */
+public class BPMN2MultiPageEditor extends MultiPageEditorPart {
+
+ BPMN2Editor designEditor;
+ StructuredTextEditor sourceViewer;
+ CTabFolder tabFolder;
+ int defaultTabHeight;
+ int activePage = 0;
+ List<BPMNDiagram> pages = new ArrayList<BPMNDiagram>();
+
+ /**
+ *
+ */
+ public BPMN2MultiPageEditor() {
+ super();
+ }
+
+ @Override
+ protected IEditorSite createSite(IEditorPart editor) {
+ return new MultiPageEditorSite(this, editor) {
+ @Override
+ protected void handleSelectionChanged(SelectionChangedEvent event) {
+ ISelectionProvider parentProvider = getMultiPageEditor().getSite()
+ .getSelectionProvider();
+ if (parentProvider instanceof MultiPageSelectionProvider) {
+ SelectionChangedEvent newEvent = getNewEvent(parentProvider, event);
+ MultiPageSelectionProvider prov = (MultiPageSelectionProvider) parentProvider;
+ prov.fireSelectionChanged(newEvent);
+ }
+ }
+
+ @Override
+ protected void handlePostSelectionChanged(SelectionChangedEvent event) {
+ ISelectionProvider parentProvider = getMultiPageEditor().getSite()
+ .getSelectionProvider();
+ if (parentProvider instanceof MultiPageSelectionProvider) {
+ SelectionChangedEvent newEvent = getNewEvent(parentProvider, event);
+ MultiPageSelectionProvider prov = (MultiPageSelectionProvider) parentProvider;
+ prov.firePostSelectionChanged(newEvent);
+ }
+ }
+
+ protected SelectionChangedEvent getNewEvent(ISelectionProvider parentProvider, SelectionChangedEvent event) {
+ ISelection selection = event.getSelection();
+ if (selection instanceof IStructuredSelection) {
+ IStructuredSelection ss = (IStructuredSelection)selection;
+ Object o = ss.getFirstElement();
+ if (o instanceof Node) {
+ selection = getNewSelection((Node)o);
+ }
+ }
+ if (selection!=null)
+ return new SelectionChangedEvent(parentProvider, selection);
+ return event;
+ }
+
+ protected StructuredSelection getNewSelection(Node node) {
+ int type = node.getNodeType();
+ if (type==1) {
+ // node type = element
+ PictogramElement pe = null;
+ Element elem = (Element)node;
+ String value = elem.getAttribute("bpmnElement");
+ if (value!=null) {
+ pe = findPictogramElement(value);
+ }
+
+ if (pe==null) {
+ value = elem.getAttribute("id");
+ if (value!=null)
+ pe = findPictogramElement(value);
+ }
+
+ if (pe!=null) {
+ return new StructuredSelection(pe);
+ }
+ return getNewSelection(node.getParentNode());
+ }
+ else if (type==2) {
+ // node type = attribute
+ // search the attribute's owner
+ Attr attr = (Attr)node;
+ return getNewSelection(attr.getOwnerElement());
+ }
+ else if (type==3) {
+ // node type = text
+ return getNewSelection(node.getParentNode());
+ }
+ return null;
+ }
+
+ protected PictogramElement findPictogramElement(String id) {
+ PictogramElement pictogramElement = null;
+ if (id!=null) {
+ BaseElement be = designEditor.getModelHandler().findElement(id);
+ List<PictogramElement> pes = Graphiti.getLinkService().getPictogramElements(designEditor.getDiagramTypeProvider().getDiagram(), be);
+ for (PictogramElement pe : pes) {
+ if (pe instanceof ContainerShape) {
+ pictogramElement = pe;
+ }
+ else if (pe instanceof FreeFormConnection) {
+ pictogramElement = pe;
+ }
+ }
+ }
+
+ return pictogramElement;
+ }
+ };
+ }
+
+ @Override
+ public String getTitle() {
+ if (designEditor!=null)
+ return designEditor.getTitle();
+ return super.getTitle();
+ }
+
+ @Override
+ public String getPartName() {
+ if (designEditor!=null)
+ return designEditor.getPartName();
+ return super.getPartName();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.part.MultiPageEditorPart#createPages()
+ */
+ @Override
+ protected void createPages() {
+ tabFolder = (CTabFolder)getContainer();
+ tabFolder.addCTabFolder2Listener( new CTabFolder2Listener() {
+
+ @Override
+ public void close(CTabFolderEvent event) {
+ if (event.item.getData() == sourceViewer)
+ removeSourceViewer();
+ }
+
+ @Override
+ public void minimize(CTabFolderEvent event) {
+ }
+
+ @Override
+ public void maximize(CTabFolderEvent event) {
+ }
+
+ @Override
+ public void restore(CTabFolderEvent event) {
+ }
+
+ @Override
+ public void showList(CTabFolderEvent event) {
+ }
+
+ });
+ createDesignEditor();
+ }
+
+ protected void createDesignEditor() {
+ if (designEditor==null) {
+ designEditor = new DesignEditor(this);
+
+ try {
+ int pageIndex = tabFolder.getItemCount();
+ if (sourceViewer!=null)
+ --pageIndex;
+ addPage(pageIndex, designEditor, BPMN2MultiPageEditor.this.getEditorInput());
+ defaultTabHeight = tabFolder.getTabHeight();
+ setPageText(pageIndex,"Design");
+
+ // TODO: it should be possible to create additional instances of the BPMN2Editor
+ // that use the same IEditorInput as the original, but work within different
+ // BPMNPlane objects within the same model.
+ // Likewise, it should be possible to remove a page, which causes the associated
+ // BPMNPlane to be removed from the model. The last page may not be removed because
+ // this would invalidate the bpmn file.
+// ++pageIndex;
+// DesignEditor designEditor2 = new DesignEditor();
+// addPage(pageIndex, designEditor2, BPMN2MultiPageEditor.this.getEditorInput());
+// setPageText(pageIndex,"Design 2");
+
+ defaultTabHeight = tabFolder.getTabHeight();
+
+ updateTabs();
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }
+
+ protected void setActivePage(int pageIndex) {
+ activePage = pageIndex;
+ super.setActivePage(pageIndex);
+ }
+
+ protected void addDesignPage(BPMNDiagram bpmnDiagram) {
+ createDesignEditor();
+ try {
+ Display.getDefault().asyncExec(new Runnable() {
+ public void run() {
+ designEditor.setPictogramElementsForSelection(null);
+ designEditor.refresh();
+ }
+ });
+
+ int pageIndex = tabFolder.getItemCount();
+ if (sourceViewer!=null)
+ --pageIndex;
+ Bpmn2DiagramEditorInput input = (Bpmn2DiagramEditorInput)designEditor.getEditorInput();
+ input.setBpmnDiagram(bpmnDiagram);
+ addPage(pageIndex, designEditor, input);
+ setPageText(pageIndex,bpmnDiagram.getName());
+
+ this.setActivePage(pageIndex);
+ updateTabs();
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+
+ protected void createSourceViewer() {
+ if (sourceViewer==null) {
+ sourceViewer = new SourceViewer();
+
+ try {
+ int pageIndex = tabFolder.getItemCount();
+ FileEditorInput input = new FileEditorInput(designEditor.getModelFile());
+ addPage(pageIndex, sourceViewer, input);
+ tabFolder.getItem(pageIndex).setShowClose(true);
+
+ setPageText(pageIndex,"Source");
+ updateTabs();
+ }
+ catch (Exception e) {
+ e.printStackTrace();
+ if (sourceViewer!=null)
+ sourceViewer.dispose();
+ }
+ }
+ }
+
+ public void addPage(int pageIndex, IEditorPart editor, IEditorInput input)
+ throws PartInitException {
+ super.addPage(pageIndex,editor,input);
+ if (editor instanceof BPMN2Editor) {
+ pages.add(pageIndex,((BPMN2Editor)editor).getBpmnDiagram());
+ }
+ }
+
+ @Override
+ public void removePage(int pageIndex) {
+ Object page = tabFolder.getItem(pageIndex).getData();
+ if (page instanceof EditorPart) {
+ // make sure the editor gets disposed - neither CTabFolder nor super does this for us!
+ ((EditorPart)page).dispose();
+ }
+ super.removePage(pageIndex);
+ updateTabs();
+ if (page instanceof BPMN2Editor) {
+ pages.remove(pageIndex);
+ }
+ }
+
+ @Override
+ protected void pageChange(int newPageIndex) {
+ super.pageChange(newPageIndex);
+
+ IEditorPart editor = getEditor(newPageIndex);
+ if (editor instanceof BPMN2Editor) {
+ BPMNDiagram bpmnDiagram = pages.get(newPageIndex);
+ ((BPMN2Editor)editor).setBpmnDiagram(bpmnDiagram);
+ }
+ }
+
+ public void removeSourceViewer() {
+ // there will only be one source page and it will always be the last page in the tab folder
+ if (sourceViewer!=null) {
+ int pageIndex = tabFolder.getItemCount() - 1;
+ if (pageIndex>0)
+ removePage(pageIndex);
+ }
+ }
+
+ private void updateTabs() {
+ if (tabFolder.getItemCount()==1) {
+ tabFolder.setTabHeight(0);
+ }
+ else
+ tabFolder.setTabHeight(defaultTabHeight);
+ tabFolder.layout();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.part.EditorPart#doSave(org.eclipse.core.runtime.IProgressMonitor)
+ */
+ @Override
+ public void doSave(IProgressMonitor monitor) {
+ designEditor.doSave(monitor);
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.part.EditorPart#doSaveAs()
+ */
+ @Override
+ public void doSaveAs() {
+ IEditorPart activeEditor = getActiveEditor();
+ activeEditor.doSaveAs();
+ }
+
+ /* (non-Javadoc)
+ * @see org.eclipse.ui.part.EditorPart#isSaveAsAllowed()
+ */
+ @Override
+ public boolean isSaveAsAllowed() {
+
+ /*
+ * Depending upon the active page in multipage editor, call the saveAsAllowed.
+ * It helps to see whether a particular editor allows 'save as' feature
+ */
+ IEditorPart activeEditor = getActiveEditor();
+ return activeEditor.isSaveAsAllowed();
+ }
+
+ @Override
+ public void dispose() {
+ designEditor.dispose();
+ if (sourceViewer!=null)
+ sourceViewer.dispose();
+ }
+
+ public class DesignEditor extends BPMN2Editor {
+
+ BPMN2MultiPageEditor multipageEditor;
+ ResourceSetListener resourceSetListener = null;
+
+ public DesignEditor(BPMN2MultiPageEditor mpe) {
+ super();
+ multipageEditor = mpe;
+ }
+
+ public void dispose() {
+ getEditingDomain().removeResourceSetListener(resourceSetListener);
+ resourceSetListener = null;
+ super.dispose();
+ }
+
+ @Override
+ protected void setInput(IEditorInput input) {
+ super.setInput(input);
+ if (resourceSetListener==null) {
+ resourceSetListener = new ResourceSetListener() {
+ @Override
+ public NotificationFilter getFilter() {
+ return null;
+ }
+
+ @Override
+ public Command transactionAboutToCommit(ResourceSetChangeEvent event) throws RollbackException {
+ return null;
+ }
+
+ @Override
+ public void resourceSetChanged(ResourceSetChangeEvent event) {
+ for (Notification n : event.getNotifications()) {
+ if (n.getNewValue() instanceof BPMNPlane && n.getNotifier() instanceof BPMNDiagram) {
+ final BPMNDiagram d = (BPMNDiagram)n.getNotifier();
+ Display.getCurrent().asyncExec( new Runnable() {
+ @Override
+ public void run() {
+ multipageEditor.addDesignPage(d);
+ }
+ });
+ break;
+ }
+ }
+ }
+
+ @Override
+ public boolean isAggregatePrecommitListener() {
+ return false;
+ }
+
+ @Override
+ public boolean isPrecommitOnly() {
+ return false;
+ }
+
+ @Override
+ public boolean isPostcommitOnly() {
+ return true;
+ }
+ };
+ getEditingDomain().addResourceSetListener(resourceSetListener);
+ }
+ }
+
+ @Override
+ protected void createActions() {
+ super.createActions();
+ ActionRegistry registry = getActionRegistry();
+ IAction action = new WorkbenchPartAction(designEditor) {
+
+ @Override
+ protected void init() {
+ super.init();
+ setId("show.or.hide.source.view");
+ }
+
+ @Override
+ public String getText() {
+ return sourceViewer==null ? "Show Source View" : "Hide Source View";
+ }
+
+ @Override
+ protected boolean calculateEnabled() {
+ return true;
+ }
+
+ public void run() {
+ if (sourceViewer==null) {
+ createSourceViewer();
+ setActivePage(tabFolder.getItemCount()-1);
+ }
+ else {
+ removeSourceViewer();
+ }
+ }
+ };
+ registry.registerAction(action);
+ }
+
+ @Override
+ protected ContextMenuProvider createContextMenuProvider() {
+ return new DiagramEditorContextMenuProvider(getGraphicalViewer(), getActionRegistry(), getDiagramTypeProvider()) {
+ @Override
+ public void buildContextMenu(IMenuManager manager) {
+ super.buildContextMenu(manager);
+ IAction action = getActionRegistry().getAction("show.or.hide.source.view");
+ action.setText( action.getText() );
+ manager.add(action);
+ }
+ };
+ }
+ }
+
+ public class SourceViewer extends StructuredTextEditor {
+
+ ActionRegistry actionRegistry = null;
+
+ @Override
+ @SuppressWarnings("rawtypes")
+ public Object getAdapter(Class required) {
+ if (required==ActionRegistry.class)
+ return getActionRegistry();
+ if (required==BPMN2Editor.class || required==DiagramEditor.class)
+ return designEditor;
+ return super.getAdapter(required);
+ }
+
+ @Override
+ public boolean isEditable() {
+ return false;
+ }
+
+ @Override
+ public void dispose() {
+ super.dispose();
+ BPMN2MultiPageEditor.this.sourceViewer = null;
+ }
+
+ protected ActionRegistry getActionRegistry() {
+ if (actionRegistry == null)
+ actionRegistry = new ActionRegistry();
+ return actionRegistry;
+ }
+ }
+
+ public BPMN2Editor getDesignEditor() {
+ return designEditor;
+ }
+}
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 1c6ede5..c0920ec 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
@@ -179,7 +179,7 @@
@Override
protected boolean updateObject(final Object result) {
- // we can't just change the key because the map that contains it
+ // we can't just change the key because the mapDiagramToViewer that contains it
// needs to be updated, so remove old key, then add new.
if (result instanceof String && !((String)result).isEmpty() ) {
final Map.Entry<String, String> entry = (Map.Entry<String, String>)object;
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/wizards/Bpmn2DiagramEditorInput.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/wizards/Bpmn2DiagramEditorInput.java
index 582a02c..2dbd9b9 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/wizards/Bpmn2DiagramEditorInput.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/wizards/Bpmn2DiagramEditorInput.java
@@ -1,84 +1,94 @@
-/*******************************************************************************
- * Copyright (c) 2011 Red Hat, Inc.
- * All rights reserved.
- * This program is made available under the terms of the
- * Eclipse Public License v1.0 which accompanies this distribution,
- * and is available at http://www.eclipse.org/legal/epl-v10.html
- *
- * Contributors:
- * Red Hat, Inc. - initial API and implementation
- *
- * @author Innar Made
- ******************************************************************************/
-package org.eclipse.bpmn2.modeler.ui.wizards;
-
-import org.eclipse.bpmn2.modeler.core.utils.ModelUtil.Bpmn2DiagramType;
-import org.eclipse.emf.common.util.URI;
-import org.eclipse.emf.ecore.resource.Resource;
-import org.eclipse.emf.transaction.TransactionalEditingDomain;
-import org.eclipse.graphiti.ui.editor.DiagramEditorInput;
-import org.eclipse.ui.part.FileEditorInput;
-
-public final class Bpmn2DiagramEditorInput extends DiagramEditorInput {
-
- private final TransactionalEditingDomain domain;
- private Bpmn2DiagramType initialDiagramType = Bpmn2DiagramType.NONE;
- private String targetNamespace;
-
- Bpmn2DiagramEditorInput(URI diagramUri, TransactionalEditingDomain domain, String providerId) {
- super(diagramUri, providerId);
- this.domain = domain;
- }
-
- public Bpmn2DiagramType getInitialDiagramType() {
- return initialDiagramType;
- }
-
- public void setInitialDiagramType(Bpmn2DiagramType initialDiagramType) {
- this.initialDiagramType = initialDiagramType;
- }
-
- public String getTargetNamespace() {
- return targetNamespace;
- }
-
- public void setTargetNamespace(String targetNamespace) {
- this.targetNamespace = targetNamespace;
- }
-
- @Override
- public boolean equals(Object obj) {
- boolean superEquals = super.equals(obj);
- if (superEquals) {
- return true;
- }
-
- // Eclipse makes FileEditorInputs for files to be opened. Here we check if the file is actually the same
- // as the DiagramEditorInput uses. This is for preventing opening new editors for the same file.
- if (obj instanceof FileEditorInput) {
-
- String path = ((FileEditorInput) obj).getFile().getFullPath().toString();
- URI platformUri = URI.createPlatformResourceURI(path, true);
-
- for (Resource resource : domain.getResourceSet().getResources()) {
- if (resource.getURI().equals(platformUri)) {
- return true;
- }
- }
-
- }
- return false;
- }
-
- @Override
- public Object getAdapter(Class adapter) {
-// if (adapter.equals(TransactionalEditingDomain.class)) {
-// return new Bpmn2TransactionalEditingDomain();
-// }
- return super.getAdapter(adapter);
- }
-
-// public class Bpmn2TransactionalEditingDomain implements TransactionalEditingDomain {
-//
-// }
+/*******************************************************************************
+ * Copyright (c) 2011 Red Hat, Inc.
+ * All rights reserved.
+ * This program is made available under the terms of the
+ * Eclipse Public License v1.0 which accompanies this distribution,
+ * and is available at http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Red Hat, Inc. - initial API and implementation
+ *
+ * @author Innar Made
+ ******************************************************************************/
+package org.eclipse.bpmn2.modeler.ui.wizards;
+
+import org.eclipse.bpmn2.di.BPMNDiagram;
+import org.eclipse.bpmn2.modeler.core.utils.ModelUtil.Bpmn2DiagramType;
+import org.eclipse.emf.common.util.URI;
+import org.eclipse.emf.ecore.resource.Resource;
+import org.eclipse.emf.transaction.TransactionalEditingDomain;
+import org.eclipse.graphiti.ui.editor.DiagramEditorInput;
+import org.eclipse.ui.part.FileEditorInput;
+
+public final class Bpmn2DiagramEditorInput extends DiagramEditorInput {
+
+ private final TransactionalEditingDomain domain;
+ private Bpmn2DiagramType initialDiagramType = Bpmn2DiagramType.NONE;
+ private String targetNamespace;
+ private BPMNDiagram bpmnDiagram;
+
+ Bpmn2DiagramEditorInput(URI diagramUri, TransactionalEditingDomain domain, String providerId) {
+ super(diagramUri, providerId);
+ this.domain = domain;
+ }
+
+ public Bpmn2DiagramType getInitialDiagramType() {
+ return initialDiagramType;
+ }
+
+ public void setInitialDiagramType(Bpmn2DiagramType initialDiagramType) {
+ this.initialDiagramType = initialDiagramType;
+ }
+
+ public String getTargetNamespace() {
+ return targetNamespace;
+ }
+
+ public void setTargetNamespace(String targetNamespace) {
+ this.targetNamespace = targetNamespace;
+ }
+
+ @Override
+ public boolean equals(Object obj) {
+ boolean superEquals = super.equals(obj);
+ if (superEquals) {
+ return true;
+ }
+
+ // Eclipse makes FileEditorInputs for files to be opened. Here we check if the file is actually the same
+ // as the DiagramEditorInput uses. This is for preventing opening new editors for the same file.
+ if (obj instanceof FileEditorInput) {
+
+ String path = ((FileEditorInput) obj).getFile().getFullPath().toString();
+ URI platformUri = URI.createPlatformResourceURI(path, true);
+
+ for (Resource resource : domain.getResourceSet().getResources()) {
+ if (resource.getURI().equals(platformUri)) {
+ return true;
+ }
+ }
+
+ }
+ return false;
+ }
+
+ @Override
+ public Object getAdapter(Class adapter) {
+// if (adapter.equals(TransactionalEditingDomain.class)) {
+// return new Bpmn2TransactionalEditingDomain();
+// }
+ return super.getAdapter(adapter);
+ }
+
+ public BPMNDiagram getBpmnDiagram() {
+ return bpmnDiagram;
+ }
+
+ public void setBpmnDiagram(BPMNDiagram bpmnDiagram) {
+ this.bpmnDiagram = bpmnDiagram;
+ }
+
+// public class Bpmn2TransactionalEditingDomain implements TransactionalEditingDomain {
+//
+// }
}
\ No newline at end of file