API changes for Graphiti 0.12
diff --git a/examples/plugins/org.eclipse.bpmn2.modeler.examples.customtask/META-INF/MANIFEST.MF b/examples/plugins/org.eclipse.bpmn2.modeler.examples.customtask/META-INF/MANIFEST.MF
index 3f4d41a..baa21d0 100644
--- a/examples/plugins/org.eclipse.bpmn2.modeler.examples.customtask/META-INF/MANIFEST.MF
+++ b/examples/plugins/org.eclipse.bpmn2.modeler.examples.customtask/META-INF/MANIFEST.MF
@@ -13,8 +13,8 @@
 Require-Bundle: org.eclipse.core.runtime,
  org.eclipse.emf.ecore;visibility:=reexport,
  org.eclipse.emf.ecore.xmi;visibility:=reexport,
- org.eclipse.graphiti;bundle-version="[0.10.0,0.12.0]",
- org.eclipse.graphiti.ui;bundle-version="[0.10.0,0.12.0]",
+ org.eclipse.graphiti;bundle-version="0.12.0",
+ org.eclipse.graphiti.ui;bundle-version="0.12.0",
  org.eclipse.gef,
  org.eclipse.bpmn2,
  org.eclipse.bpmn2.edit,
diff --git a/examples/plugins/org.eclipse.bpmn2.modeler.examples.dynamic/META-INF/MANIFEST.MF b/examples/plugins/org.eclipse.bpmn2.modeler.examples.dynamic/META-INF/MANIFEST.MF
index f5d1a50..670b58a 100644
--- a/examples/plugins/org.eclipse.bpmn2.modeler.examples.dynamic/META-INF/MANIFEST.MF
+++ b/examples/plugins/org.eclipse.bpmn2.modeler.examples.dynamic/META-INF/MANIFEST.MF
@@ -10,8 +10,8 @@
  org.eclipse.core.runtime,
  org.eclipse.ui.views.properties.tabbed,
  org.eclipse.gef,
- org.eclipse.graphiti;bundle-version="[0.10.0,0.12.0]",
- org.eclipse.graphiti.ui;bundle-version="[0.10.0,0.12.0]",
+ org.eclipse.graphiti;bundle-version="0.12.0",
+ org.eclipse.graphiti.ui;bundle-version="0.12.0",
  org.eclipse.emf.transaction,
  org.eclipse.emf.databinding,
  org.eclipse.emf.edit.ui,
diff --git a/examples/plugins/org.eclipse.bpmn2.modeler.examples.modelreader/META-INF/MANIFEST.MF b/examples/plugins/org.eclipse.bpmn2.modeler.examples.modelreader/META-INF/MANIFEST.MF
index 5c9b9cd..2bc6bb9 100644
--- a/examples/plugins/org.eclipse.bpmn2.modeler.examples.modelreader/META-INF/MANIFEST.MF
+++ b/examples/plugins/org.eclipse.bpmn2.modeler.examples.modelreader/META-INF/MANIFEST.MF
@@ -8,8 +8,8 @@
  org.eclipse.core.runtime,
  org.eclipse.ui.views.properties.tabbed,
  org.eclipse.gef,
- org.eclipse.graphiti;bundle-version="[0.10.0,0.12.0]",
- org.eclipse.graphiti.ui;bundle-version="[0.10.0,0.12.0]",
+ org.eclipse.graphiti;bundle-version="0.12.0",
+ org.eclipse.graphiti.ui;bundle-version="0.12.0",
  org.eclipse.emf.transaction,
  org.eclipse.emf.databinding,
  org.eclipse.emf.edit.ui,
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/META-INF/MANIFEST.MF b/plugins/org.eclipse.bpmn2.modeler.core/META-INF/MANIFEST.MF
index d058c18..f076061 100644
--- a/plugins/org.eclipse.bpmn2.modeler.core/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.bpmn2.modeler.core/META-INF/MANIFEST.MF
@@ -9,8 +9,8 @@
  org.eclipse.emf.edit.ui,
  org.eclipse.emf.validation.ocl,
  org.eclipse.osgi,
- org.eclipse.graphiti;bundle-version="[0.10.0,0.12.0]",
- org.eclipse.graphiti.ui;bundle-version="[0.10.0,0.12.0]",
+ org.eclipse.graphiti;bundle-version="0.12.0",
+ org.eclipse.graphiti.ui;bundle-version="0.12.0",
  org.eclipse.gef,
  org.eclipse.bpmn2.edit,
  org.eclipse.bpmn2.editor,
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/di/DIImport.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/di/DIImport.java
index 5ae8521..e2bc1d7 100644
--- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/di/DIImport.java
+++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/di/DIImport.java
@@ -161,7 +161,7 @@
 						
 						currentBPMNDiagram = d;
 						diagram = DIUtils.findDiagram(editor.getDiagramBehavior(),d);
-						editor.getDiagramTypeProvider().init(diagram, editor);
+						editor.getDiagramTypeProvider().init(diagram, editor.getDiagramBehavior());
 	
 						BPMNPlane plane = d.getPlane();
 						if (plane.getBpmnElement() == null) {
@@ -941,7 +941,7 @@
 		if (context.getTargetContainer() instanceof Diagram) {
 			Diagram diagram = (Diagram)context.getTargetContainer();
 			if (diagram!=featureProvider.getDiagramTypeProvider().getDiagram())
-				featureProvider.getDiagramTypeProvider().init(diagram, editor);
+				featureProvider.getDiagramTypeProvider().init(diagram, editor.getDiagramBehavior());
 		}
 		return addFeature.canAdd(context);
 	}
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2AddFeature.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2AddFeature.java
index 15a7973..308d5bc 100644
--- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2AddFeature.java
+++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2AddFeature.java
@@ -62,6 +62,7 @@
 import org.eclipse.graphiti.services.IGaService;
 import org.eclipse.graphiti.services.ILayoutService;
 import org.eclipse.graphiti.services.IPeService;
+import org.eclipse.graphiti.ui.editor.DiagramEditor;
 
 /**
  * This is the Graphiti {@code AddFeature} base class for all BPMN2 model elements which
@@ -478,4 +479,8 @@
 		}
 		return getFeatureProvider().layoutIfPossible(layoutContext);
 	}
+	
+	protected DiagramEditor getDiagramEditor() {
+		return (DiagramEditor)getFeatureProvider().getDiagramTypeProvider().getDiagramBehavior().getDiagramContainer();
+	}
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2CreateConnectionFeature.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2CreateConnectionFeature.java
index ad07cf7..7680947 100644
--- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2CreateConnectionFeature.java
+++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2CreateConnectionFeature.java
@@ -485,4 +485,8 @@
 	 */
 	protected abstract Class<TARGET> getTargetClass();
 
+	
+	protected DiagramEditor getDiagramEditor() {
+		return (DiagramEditor)getFeatureProvider().getDiagramTypeProvider().getDiagramBehavior().getDiagramContainer();
+	}
 }
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2CreateFeature.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2CreateFeature.java
index dca384c..0824af3 100644
--- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2CreateFeature.java
+++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2CreateFeature.java
@@ -285,4 +285,8 @@
 	public boolean hasDoneChanges() {
 		return changesDone;
 	}
+	
+	protected DiagramEditor getDiagramEditor() {
+		return (DiagramEditor)getFeatureProvider().getDiagramTypeProvider().getDiagramBehavior().getDiagramContainer();
+	}
 }
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2CustomFeature.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2CustomFeature.java
new file mode 100644
index 0000000..864fb5d
--- /dev/null
+++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/AbstractBpmn2CustomFeature.java
@@ -0,0 +1,17 @@
+package org.eclipse.bpmn2.modeler.core.features;
+
+import org.eclipse.graphiti.features.IFeatureProvider;
+import org.eclipse.graphiti.features.custom.AbstractCustomFeature;
+import org.eclipse.graphiti.ui.editor.DiagramEditor;
+
+public abstract class AbstractBpmn2CustomFeature extends AbstractCustomFeature {
+
+	public AbstractBpmn2CustomFeature(IFeatureProvider fp) {
+		super(fp);
+		// TODO Auto-generated constructor stub
+	}
+	
+	protected DiagramEditor getDiagramEditor() {
+		return (DiagramEditor)getFeatureProvider().getDiagramTypeProvider().getDiagramBehavior().getDiagramContainer();
+	}
+}
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/CompoundCreateFeature.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/CompoundCreateFeature.java
index b116e5e..0cecaaf 100644
--- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/CompoundCreateFeature.java
+++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/CompoundCreateFeature.java
@@ -38,6 +38,7 @@
 import org.eclipse.graphiti.mm.pictograms.Diagram;
 import org.eclipse.graphiti.mm.pictograms.PictogramElement;
 import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.ui.editor.DiagramEditor;
 
 /**
  * This is a Graphiti CreateFeature class that can be used to create multiple objects.
@@ -401,4 +402,8 @@
 	public EClass getFeatureClass() {
 		return null;
 	}
+	
+	protected DiagramEditor getDiagramEditor() {
+		return (DiagramEditor)getFeatureProvider().getDiagramTypeProvider().getDiagramBehavior().getDiagramContainer();
+	}
 }
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/CustomElementFeatureContainer.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/CustomElementFeatureContainer.java
index 250e425..8a99d85 100644
--- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/CustomElementFeatureContainer.java
+++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/CustomElementFeatureContainer.java
@@ -135,7 +135,7 @@
 	 */
 	@Override
 	public boolean isAvailable(IFeatureProvider fp) {
-		DiagramEditor editor = (DiagramEditor) fp.getDiagramTypeProvider().getDiagramEditor();
+		DiagramEditor editor = (DiagramEditor) fp.getDiagramTypeProvider().getDiagramBehavior().getDiagramContainer();
 		if (editor != null) {
 			ModelEnablements me = (ModelEnablements)editor.getAdapter(ModelEnablements.class);
 			if (me!=null) {
@@ -423,5 +423,4 @@
 	public ICustomFeature[] getCustomFeatures(IFeatureProvider fp) {
 		return getFeatureContainer(fp).getCustomFeatures(fp);
 	}
-
 }
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/DefaultMoveBPMNShapeFeature.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/DefaultMoveBPMNShapeFeature.java
index 48668ca..4104fc6 100644
--- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/DefaultMoveBPMNShapeFeature.java
+++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/DefaultMoveBPMNShapeFeature.java
@@ -33,6 +33,7 @@
 import org.eclipse.graphiti.mm.pictograms.PictogramElement;
 import org.eclipse.graphiti.mm.pictograms.Shape;
 import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.ui.editor.DiagramEditor;
 
 /**
  * Default Graphiti {@code MoveShapeFeature} class for Shapes.
@@ -162,4 +163,8 @@
 			}
 		}
 	}
+	
+	protected DiagramEditor getDiagramEditor() {
+		return (DiagramEditor)getFeatureProvider().getDiagramTypeProvider().getDiagramBehavior().getDiagramContainer();
+	}
 }
\ No newline at end of file
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/DefaultPasteBPMNElementFeature.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/DefaultPasteBPMNElementFeature.java
index b9599bb..af45a4a 100644
--- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/DefaultPasteBPMNElementFeature.java
+++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/DefaultPasteBPMNElementFeature.java
@@ -69,6 +69,7 @@
 import org.eclipse.graphiti.mm.pictograms.PictogramElement;
 import org.eclipse.graphiti.mm.pictograms.Shape;
 import org.eclipse.graphiti.services.Graphiti;
+import org.eclipse.graphiti.ui.editor.DiagramEditor;
 import org.eclipse.graphiti.ui.features.AbstractPasteFeature;
 
 /**
@@ -246,7 +247,7 @@
 			newPes[i++] = entry.getValue();
 		}
 		
-		this.getDiagramEditor().setPictogramElementsForSelection(newPes);
+		getDiagramEditor().setPictogramElementsForSelection(newPes);
 	}
 	
 	/* (non-Javadoc)
@@ -756,4 +757,8 @@
 			container = container.eContainer();
 		return (FlowElementsContainer)container;
 	}
+	
+	protected DiagramEditor getDiagramEditor() {
+		return (DiagramEditor)getFeatureProvider().getDiagramTypeProvider().getDiagramBehavior().getDiagramContainer();
+	}
 }
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/ShowDocumentationFeature.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/ShowDocumentationFeature.java
index dd36d63..a675352 100644
--- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/ShowDocumentationFeature.java
+++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/features/ShowDocumentationFeature.java
@@ -13,19 +13,15 @@
 import java.util.List;
 
 import org.eclipse.bpmn2.Bpmn2Factory;
-import org.eclipse.bpmn2.Bpmn2Package;
 import org.eclipse.bpmn2.Documentation;
 import org.eclipse.bpmn2.modeler.core.IConstants;
-import org.eclipse.bpmn2.modeler.core.merrimac.dialogs.AbstractObjectEditingDialog;
 import org.eclipse.bpmn2.modeler.core.preferences.ModelEnablements;
 import org.eclipse.bpmn2.modeler.core.utils.BusinessObjectUtil;
-import org.eclipse.emf.ecore.EClass;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.emf.ecore.EStructuralFeature;
 import org.eclipse.graphiti.features.IFeatureProvider;
 import org.eclipse.graphiti.features.context.IContext;
 import org.eclipse.graphiti.features.context.ICustomContext;
-import org.eclipse.graphiti.features.custom.AbstractCustomFeature;
 import org.eclipse.graphiti.mm.pictograms.PictogramElement;
 import org.eclipse.graphiti.ui.editor.DiagramEditor;
 import org.eclipse.jface.dialogs.Dialog;
@@ -45,7 +41,7 @@
 /**
  * The Class ShowPropertiesFeature.
  */
-public class ShowDocumentationFeature extends AbstractCustomFeature {
+public class ShowDocumentationFeature extends AbstractBpmn2CustomFeature {
 
 	/** The changes done. */
 	protected boolean changesDone = false;
diff --git a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/clad/AbstractBpmn2PropertySection.java b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/clad/AbstractBpmn2PropertySection.java
index e307941..3a351f1 100644
--- a/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/clad/AbstractBpmn2PropertySection.java
+++ b/plugins/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/merrimac/clad/AbstractBpmn2PropertySection.java
@@ -128,10 +128,6 @@
 		return parent;
 	}
 
-	/* (non-Javadoc)
-	 * @see org.eclipse.graphiti.ui.platform.GFPropertySection#getDiagramEditor()
-	 */
-	@Override
 	protected DiagramEditor getDiagramEditor() {
 		return editor;
 	}
diff --git a/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/META-INF/MANIFEST.MF b/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/META-INF/MANIFEST.MF
index 63efc26..f3b83ac 100644
--- a/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/META-INF/MANIFEST.MF
@@ -7,8 +7,8 @@
 Bundle-Vendor: %providerName
 Bundle-Localization: plugin
 Require-Bundle: org.eclipse.ui.ide,
- org.eclipse.graphiti;bundle-version="[0.10.0,0.12.0]",
- org.eclipse.graphiti.ui;bundle-version="[0.10.0,0.12.0]",
+ org.eclipse.graphiti;bundle-version="0.12.0",
+ org.eclipse.graphiti.ui;bundle-version="0.12.0",
  org.eclipse.bpmn2.modeler.core,
  org.eclipse.emf.transaction,
  org.eclipse.ui.views.properties.tabbed,
diff --git a/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/features/JbpmCustomTaskFeatureContainer.java b/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/features/JbpmCustomTaskFeatureContainer.java
index c7aa465..acddf47 100644
--- a/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/features/JbpmCustomTaskFeatureContainer.java
+++ b/plugins/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/features/JbpmCustomTaskFeatureContainer.java
@@ -229,7 +229,7 @@
 		 */
 		@Override
 		public boolean canExecute(IContext context) {
-			BPMN2Editor editor = (BPMN2Editor)getFeatureProvider().getDiagramTypeProvider().getDiagramEditor();
+			BPMN2Editor editor = (BPMN2Editor)getFeatureProvider().getDiagramTypeProvider().getDiagramBehavior().getDiagramContainer();
 			IBpmn2RuntimeExtension rte = editor.getTargetRuntime().getRuntimeExtension();
 			if (rte instanceof JBPM5RuntimeExtension && context instanceof ICustomContext) {
 				PictogramElement[] pes = ((ICustomContext) context).getPictogramElements();
@@ -264,7 +264,7 @@
 		 */
 		@Override
 		public void execute(IContext context) {
-			BPMN2Editor editor = (BPMN2Editor)getFeatureProvider().getDiagramTypeProvider().getDiagramEditor();
+			BPMN2Editor editor = (BPMN2Editor)getFeatureProvider().getDiagramTypeProvider().getDiagramBehavior().getDiagramContainer();
 			PictogramElement pe = ((ICustomContext) context).getPictogramElements()[0];
 			final Task task = (Task)Graphiti.getLinkService().getBusinessObjectForLinkedPictogramElement(pe);
 			String taskName = ""; //$NON-NLS-1$
diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/META-INF/MANIFEST.MF b/plugins/org.eclipse.bpmn2.modeler.ui/META-INF/MANIFEST.MF
index 47cce9f..ce6d7ce 100644
--- a/plugins/org.eclipse.bpmn2.modeler.ui/META-INF/MANIFEST.MF
+++ b/plugins/org.eclipse.bpmn2.modeler.ui/META-INF/MANIFEST.MF
@@ -8,8 +8,8 @@
 Bundle-Localization: plugin
 Require-Bundle: org.eclipse.ui.ide,
  org.eclipse.osgi,
- org.eclipse.graphiti;bundle-version="[0.10.0,0.12.0]",
- org.eclipse.graphiti.ui;bundle-version="[0.10.0,0.12.0]",
+ org.eclipse.graphiti;bundle-version="0.12.0",
+ org.eclipse.graphiti.ui;bundle-version="0.12.0",
  org.eclipse.bpmn2.modeler.core,
  org.eclipse.emf.transaction,
  org.eclipse.ui.views.properties.tabbed,
diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/diagram/BPMN2FeatureProvider.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/diagram/BPMN2FeatureProvider.java
index 9936d3a..415d639 100644
--- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/diagram/BPMN2FeatureProvider.java
+++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/diagram/BPMN2FeatureProvider.java
@@ -419,7 +419,7 @@
 //		if (lfc.getApplyObject(context)!=null)
 //			return lfc;
 		
-		BPMN2Editor editor = (BPMN2Editor)getDiagramTypeProvider().getDiagramEditor();;
+		BPMN2Editor editor = (BPMN2Editor)getDiagramTypeProvider().getDiagramBehavior().getDiagramContainer();
 		TargetRuntime rt = editor.getTargetRuntime();
 		EObject object = getApplyObject(context);
 		if (object!=null) {
@@ -471,7 +471,7 @@
 		// is called during file loading.
 		Object id = CustomElementFeatureContainer.getId(context); 
 		if (id!=null) {
-			BPMN2Editor editor = (BPMN2Editor)getDiagramTypeProvider().getDiagramEditor();
+			BPMN2Editor editor = (BPMN2Editor)getDiagramTypeProvider().getDiagramBehavior().getDiagramContainer();
 			TargetRuntime rt = editor.getTargetRuntime();
 			for (CustomTaskDescriptor ct : rt.getCustomTaskDescriptors()) {
 				if (id.equals(ct.getId())) {
@@ -619,7 +619,7 @@
 	public ICustomFeature[] getCustomFeatures(ICustomContext context) {
 		List<ICustomFeature> list = new ArrayList<ICustomFeature>();
 
-		BPMN2Editor editor = (BPMN2Editor)getDiagramTypeProvider().getDiagramEditor();;
+		BPMN2Editor editor = (BPMN2Editor)getDiagramTypeProvider().getDiagramBehavior().getDiagramContainer();
 		TargetRuntime rt = editor.getTargetRuntime();
 		String id = CustomElementFeatureContainer.getId(context);
 		if (id!=null) {
diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/diagram/Bpmn2DiagramTypeProvider.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/diagram/Bpmn2DiagramTypeProvider.java
index f3e92fa..83b5fdf 100644
--- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/diagram/Bpmn2DiagramTypeProvider.java
+++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/diagram/Bpmn2DiagramTypeProvider.java
@@ -29,6 +29,7 @@
 import org.eclipse.graphiti.notification.DefaultNotificationService;
 import org.eclipse.graphiti.notification.INotificationService;
 import org.eclipse.graphiti.tb.IToolBehaviorProvider;
+import org.eclipse.graphiti.ui.editor.DiagramEditor;
 
 public class Bpmn2DiagramTypeProvider extends AbstractDiagramTypeProvider {
 	private IToolBehaviorProvider[] toolBehaviorProviders;
@@ -126,4 +127,8 @@
 			super.updatePictogramElements(updated.toArray(new PictogramElement[updated.size()]));
 		}
 	}
+	
+	protected DiagramEditor getDiagramEditor() {
+		return (DiagramEditor)getDiagramBehavior().getDiagramContainer();
+	}
 }
diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/diagram/Bpmn2ToolBehaviorProvider.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/diagram/Bpmn2ToolBehaviorProvider.java
index 547db22..492e3e2 100644
--- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/diagram/Bpmn2ToolBehaviorProvider.java
+++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/diagram/Bpmn2ToolBehaviorProvider.java
@@ -185,7 +185,7 @@
 	@Override
 	public IPaletteCompartmentEntry[] getPalette() {
 
-		editor = (BPMN2Editor)getDiagramTypeProvider().getDiagramEditor();
+		BPMN2Editor editor = (BPMN2Editor)getDiagramTypeProvider().getDiagramBehavior().getDiagramContainer();
 		targetRuntime = editor.getTargetRuntime();
 		modelEnablements = editor.getModelEnablements();
 		featureProvider = (BPMN2FeatureProvider)getFeatureProvider();
@@ -491,7 +491,7 @@
 	private void createCustomTasks(List<IPaletteCompartmentEntry> ret) {
 
 		PaletteCompartmentEntry compartmentEntry = null;
-		BPMN2Editor editor = (BPMN2Editor) getDiagramTypeProvider().getDiagramEditor();
+		BPMN2Editor editor = (BPMN2Editor)getDiagramTypeProvider().getDiagramBehavior().getDiagramContainer();
 		TargetRuntime rt = editor.getTargetRuntime();
 		
 		try {
diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2Editor.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2Editor.java
index 6cb5521..41f066d 100644
--- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2Editor.java
+++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2Editor.java
@@ -1398,7 +1398,7 @@
 	}
 
 	@Override
-	protected void configureGraphicalViewer() {
+	public void configureGraphicalViewer() {
 	    super.configureGraphicalViewer();
 	    // add zooming action with "CTRL + Mouse Wheel"
 	    GraphicalViewer viewer = getGraphicalViewer();
diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2EditorUpdateBehavior.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2EditorUpdateBehavior.java
index 2acf87b..713776a 100644
--- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2EditorUpdateBehavior.java
+++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/editor/BPMN2EditorUpdateBehavior.java
@@ -37,6 +37,7 @@
 import org.eclipse.graphiti.ui.editor.DefaultUpdateBehavior;
 import org.eclipse.graphiti.ui.editor.DiagramBehavior;
 import org.eclipse.graphiti.ui.editor.IDiagramContainerUI;
+import org.eclipse.graphiti.ui.editor.IDiagramEditorInput;
 import org.eclipse.graphiti.ui.internal.editor.GFWorkspaceCommandStackImpl;
 
 /**
@@ -63,12 +64,12 @@
 
 	public TransactionalEditingDomain getEditingDomain() {
 		if (editingDomain == null)
-			createEditingDomain();
+			createEditingDomain(null);
 		return editingDomain;
 	}
 
 	@Override
-	public void createEditingDomain() {
+	public void createEditingDomain(IDiagramEditorInput input) {
 		if (editingDomain == null) {
 			// If another editor window is already open for this BPMN2 file
 			// then reuse its Editing Domain; otherwise create a new one.
diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/AbstractAppendNodeFeature.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/AbstractAppendNodeFeature.java
index 7a0d824..78c3537 100644
--- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/AbstractAppendNodeFeature.java
+++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/AbstractAppendNodeFeature.java
@@ -26,6 +26,7 @@
 import org.eclipse.bpmn2.Lane;
 import org.eclipse.bpmn2.SequenceFlow;
 import org.eclipse.bpmn2.SubProcess;
+import org.eclipse.bpmn2.modeler.core.features.AbstractBpmn2CustomFeature;
 import org.eclipse.bpmn2.modeler.core.features.GraphitiConstants;
 import org.eclipse.bpmn2.modeler.core.features.IBpmn2CreateFeature;
 import org.eclipse.bpmn2.modeler.core.features.SubMenuCustomFeature;
@@ -46,13 +47,11 @@
 import org.eclipse.graphiti.features.ICreateFeature;
 import org.eclipse.graphiti.features.IFeatureProvider;
 import org.eclipse.graphiti.features.context.IContext;
-import org.eclipse.graphiti.features.context.ICreateConnectionContext;
 import org.eclipse.graphiti.features.context.ICustomContext;
 import org.eclipse.graphiti.features.context.impl.AddConnectionContext;
 import org.eclipse.graphiti.features.context.impl.CreateConnectionContext;
 import org.eclipse.graphiti.features.context.impl.CreateContext;
 import org.eclipse.graphiti.features.context.impl.MoveShapeContext;
-import org.eclipse.graphiti.features.custom.AbstractCustomFeature;
 import org.eclipse.graphiti.features.impl.DefaultMoveShapeFeature;
 import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm;
 import org.eclipse.graphiti.mm.algorithms.styles.Point;
@@ -81,7 +80,7 @@
  * @author Bob Brodt
  *
  */
-public abstract class AbstractAppendNodeFeature<T extends FlowNode> extends AbstractCustomFeature {
+public abstract class AbstractAppendNodeFeature<T extends FlowNode> extends AbstractBpmn2CustomFeature {
 	
 	protected boolean changesDone = false;
 	protected Bpmn2Preferences preferences;
diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/AbstractMorphNodeFeature.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/AbstractMorphNodeFeature.java
index 3c0bd55..a04e054 100644
--- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/AbstractMorphNodeFeature.java
+++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/AbstractMorphNodeFeature.java
@@ -23,6 +23,7 @@
 import org.eclipse.bpmn2.FlowElement;
 import org.eclipse.bpmn2.FlowNode;
 import org.eclipse.bpmn2.Lane;
+import org.eclipse.bpmn2.modeler.core.features.AbstractBpmn2CustomFeature;
 import org.eclipse.bpmn2.modeler.core.features.CustomShapeFeatureContainer.CreateCustomShapeFeature;
 import org.eclipse.bpmn2.modeler.core.features.GraphitiConstants;
 import org.eclipse.bpmn2.modeler.core.features.IBpmn2CreateFeature;
@@ -48,7 +49,6 @@
 import org.eclipse.graphiti.features.context.impl.DeleteContext;
 import org.eclipse.graphiti.features.context.impl.ReconnectionContext;
 import org.eclipse.graphiti.features.context.impl.UpdateContext;
-import org.eclipse.graphiti.features.custom.AbstractCustomFeature;
 import org.eclipse.graphiti.mm.pictograms.Anchor;
 import org.eclipse.graphiti.mm.pictograms.Connection;
 import org.eclipse.graphiti.mm.pictograms.ContainerShape;
@@ -73,7 +73,7 @@
  * @author Bob Brodt
  *
  */
-public abstract class AbstractMorphNodeFeature<T extends FlowNode> extends AbstractCustomFeature {
+public abstract class AbstractMorphNodeFeature<T extends FlowNode> extends AbstractBpmn2CustomFeature {
 
 	protected boolean changesDone = false;;
 	
diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/activity/subprocess/CollapseFlowNodeFeature.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/activity/subprocess/CollapseFlowNodeFeature.java
index 1477af3..d1954c8 100644
--- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/activity/subprocess/CollapseFlowNodeFeature.java
+++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/activity/subprocess/CollapseFlowNodeFeature.java
@@ -17,6 +17,7 @@
 import org.eclipse.bpmn2.di.BPMNDiagram;
 import org.eclipse.bpmn2.di.BPMNShape;
 import org.eclipse.bpmn2.modeler.core.di.DIUtils;
+import org.eclipse.bpmn2.modeler.core.features.AbstractBpmn2CustomFeature;
 import org.eclipse.bpmn2.modeler.core.preferences.Bpmn2Preferences;
 import org.eclipse.bpmn2.modeler.core.preferences.ShapeStyle;
 import org.eclipse.bpmn2.modeler.core.utils.BusinessObjectUtil;
@@ -30,12 +31,11 @@
 import org.eclipse.graphiti.features.context.ICustomContext;
 import org.eclipse.graphiti.features.context.impl.ResizeShapeContext;
 import org.eclipse.graphiti.features.context.impl.UpdateContext;
-import org.eclipse.graphiti.features.custom.AbstractCustomFeature;
 import org.eclipse.graphiti.mm.algorithms.GraphicsAlgorithm;
 import org.eclipse.graphiti.mm.pictograms.ContainerShape;
 import org.eclipse.graphiti.mm.pictograms.PictogramElement;
 
-public class CollapseFlowNodeFeature extends AbstractCustomFeature {
+public class CollapseFlowNodeFeature extends AbstractBpmn2CustomFeature {
 
 	public CollapseFlowNodeFeature(IFeatureProvider fp) {
 		super(fp);
diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/choreography/ShowDiagramPageFeature.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/choreography/ShowDiagramPageFeature.java
index 5bcc190..d7784e6 100644
--- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/choreography/ShowDiagramPageFeature.java
+++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/choreography/ShowDiagramPageFeature.java
@@ -10,34 +10,23 @@
  *******************************************************************************/
 package org.eclipse.bpmn2.modeler.ui.features.choreography;
 
-import java.io.IOException;
-
 import org.eclipse.bpmn2.BaseElement;
 import org.eclipse.bpmn2.CallActivity;
 import org.eclipse.bpmn2.Participant;
-import org.eclipse.bpmn2.Process;
 import org.eclipse.bpmn2.di.BPMNDiagram;
-import org.eclipse.bpmn2.modeler.ui.IConstants;
-import org.eclipse.bpmn2.modeler.ui.ImageProvider;
 import org.eclipse.bpmn2.modeler.core.di.DIUtils;
+import org.eclipse.bpmn2.modeler.core.features.AbstractBpmn2CustomFeature;
 import org.eclipse.bpmn2.modeler.core.features.choreography.ChoreographyUtil;
-import org.eclipse.bpmn2.modeler.core.merrimac.dialogs.ObjectEditingDialog;
-import org.eclipse.bpmn2.modeler.core.model.ModelHandler;
-import org.eclipse.bpmn2.modeler.core.model.ModelHandlerLocator;
-import org.eclipse.bpmn2.modeler.core.preferences.Bpmn2Preferences;
-import org.eclipse.bpmn2.modeler.core.utils.BusinessObjectUtil;
+import org.eclipse.bpmn2.modeler.ui.ImageProvider;
 import org.eclipse.bpmn2.modeler.ui.editor.BPMN2Editor;
 import org.eclipse.bpmn2.modeler.ui.editor.BPMN2MultiPageEditor;
-import org.eclipse.dd.di.DiagramElement;
 import org.eclipse.emf.ecore.EObject;
 import org.eclipse.graphiti.features.IFeatureProvider;
 import org.eclipse.graphiti.features.context.IContext;
 import org.eclipse.graphiti.features.context.ICustomContext;
-import org.eclipse.graphiti.features.custom.AbstractCustomFeature;
 import org.eclipse.graphiti.mm.pictograms.PictogramElement;
-import org.eclipse.graphiti.ui.editor.DiagramEditor;
 
-public class ShowDiagramPageFeature extends AbstractCustomFeature {
+public class ShowDiagramPageFeature extends AbstractBpmn2CustomFeature {
 
 	public ShowDiagramPageFeature(IFeatureProvider fp) {
 		super(fp);
diff --git a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/event/FollowLinkFeature.java b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/event/FollowLinkFeature.java
index 37c2c3b..0d1d5bc 100644
--- a/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/event/FollowLinkFeature.java
+++ b/plugins/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/features/event/FollowLinkFeature.java
@@ -16,21 +16,19 @@
 import java.util.ArrayList;
 import java.util.List;
 
-import org.eclipse.bpmn2.DataInput;
 import org.eclipse.bpmn2.Event;
 import org.eclipse.bpmn2.EventDefinition;
 import org.eclipse.bpmn2.IntermediateCatchEvent;
 import org.eclipse.bpmn2.IntermediateThrowEvent;
 import org.eclipse.bpmn2.LinkEventDefinition;
-import org.eclipse.bpmn2.di.BPMNShape;
 import org.eclipse.bpmn2.modeler.core.adapters.ExtendedPropertiesAdapter;
 import org.eclipse.bpmn2.modeler.core.di.DIUtils;
+import org.eclipse.bpmn2.modeler.core.features.AbstractBpmn2CustomFeature;
 import org.eclipse.bpmn2.modeler.core.utils.BusinessObjectUtil;
 import org.eclipse.bpmn2.modeler.ui.ImageProvider;
 import org.eclipse.graphiti.features.IFeatureProvider;
 import org.eclipse.graphiti.features.context.IContext;
 import org.eclipse.graphiti.features.context.ICustomContext;
-import org.eclipse.graphiti.features.custom.AbstractCustomFeature;
 import org.eclipse.graphiti.mm.pictograms.Diagram;
 import org.eclipse.graphiti.mm.pictograms.PictogramElement;
 import org.eclipse.graphiti.services.Graphiti;
@@ -46,7 +44,7 @@
 /**
  *
  */
-public class FollowLinkFeature extends AbstractCustomFeature {
+public class FollowLinkFeature extends AbstractBpmn2CustomFeature {
 
 	ICustomContext context;
 	private static ILabelProvider labelProvider = new ILabelProvider() {
@@ -124,7 +122,7 @@
 	 */
 	@Override
 	public void execute(ICustomContext context) {
-		DiagramEditor editor = (DiagramEditor)getFeatureProvider().getDiagramTypeProvider().getDiagramEditor();
+		DiagramEditor editor = getDiagramEditor();
 		PictogramElement pe = context.getPictogramElements()[0];
 		Event event = BusinessObjectUtil.getFirstElementOfType(pe, Event.class);
 		LinkEventDefinition target = null;