Pass DiagramEditor to RuntimeExtension.initialize() so the target runtime can configure the editor if needed.
diff --git a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/IBpmn2RuntimeExtension.java b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/IBpmn2RuntimeExtension.java
index 525d73c..b62449b 100644
--- a/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/IBpmn2RuntimeExtension.java
+++ b/org.eclipse.bpmn2.modeler.core/src/org/eclipse/bpmn2/modeler/core/IBpmn2RuntimeExtension.java
@@ -14,6 +14,7 @@
 
 import org.eclipse.bpmn2.modeler.core.preferences.Bpmn2Preferences;
 import org.eclipse.bpmn2.modeler.core.utils.ModelUtil.Bpmn2DiagramType;
+import org.eclipse.graphiti.ui.editor.DiagramEditor;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorSite;
@@ -30,7 +31,7 @@
 	 */
 	public boolean isContentForRuntime(IEditorInput input);
 	public String getTargetNamespace(Bpmn2DiagramType diagramType);
-	public void initialize();
+	public void initialize(DiagramEditor editor);
 	
 	public Composite getPreferencesComposite(Composite parent, Bpmn2Preferences preferences);
 }
diff --git a/org.eclipse.bpmn2.modeler.runtime.example/src/org/eclipse/bpmn2/modeler/runtime/example/SampleRuntimeExtension.java b/org.eclipse.bpmn2.modeler.runtime.example/src/org/eclipse/bpmn2/modeler/runtime/example/SampleRuntimeExtension.java
index 1bed3f8..12170dc 100644
--- a/org.eclipse.bpmn2.modeler.runtime.example/src/org/eclipse/bpmn2/modeler/runtime/example/SampleRuntimeExtension.java
+++ b/org.eclipse.bpmn2.modeler.runtime.example/src/org/eclipse/bpmn2/modeler/runtime/example/SampleRuntimeExtension.java
@@ -19,6 +19,7 @@
 import org.eclipse.ui.IEditorSite;
 import org.eclipse.bpmn2.modeler.core.preferences.Bpmn2Preferences;
 import org.eclipse.bpmn2.modeler.core.utils.ModelUtil.Bpmn2DiagramType;
+import org.eclipse.graphiti.ui.editor.DiagramEditor;
 
 /**
  * @author Bob Brodt
@@ -38,7 +39,7 @@
 	 * @see org.eclipse.bpmn2.modeler.core.IBpmn2RuntimeExtension#initialize()
 	 */
 	@Override
-	public void initialize() {
+	public void initialize(DiagramEditor editor) {
 	}
 
 	/* (non-Javadoc)
diff --git a/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/JBPM5RuntimeExtension.java b/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/JBPM5RuntimeExtension.java
index d479d27..77fc400 100644
--- a/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/JBPM5RuntimeExtension.java
+++ b/org.eclipse.bpmn2.modeler.runtime.jboss.jbpm5/src/org/eclipse/bpmn2/modeler/runtime/jboss/jbpm5/JBPM5RuntimeExtension.java
@@ -48,9 +48,12 @@
 import org.eclipse.core.runtime.CoreException;
 import org.eclipse.core.runtime.IPath;
 import org.eclipse.core.runtime.Path;
+import org.eclipse.graphiti.ui.editor.DiagramEditor;
 import org.eclipse.graphiti.ui.internal.GraphitiUIPlugin;
 import org.eclipse.jface.resource.ImageDescriptor;
 import org.eclipse.jface.resource.ImageRegistry;
+import org.eclipse.jface.viewers.ISelection;
+import org.eclipse.jface.viewers.IStructuredSelection;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorSite;
@@ -110,9 +113,18 @@
 	/** 
 	 * Initialize in this case finds all the *.wid/*.conf files in the project
 	 * and creates CustomTaskDescriptors for each task included
-	 * @see org.eclipse.bpmn2.modeler.core.IBpmn2RuntimeExtension#initialize()
+	 * @see org.eclipse.bpmn2.modeler.core.IBpmn2RuntimeExtension#initialize(DiagramEditor)
 	 */
-	public void initialize() {
+	public void initialize(DiagramEditor editor) {
+		ISelection sel = editor.getEditorSite().getWorkbenchWindow().getSelectionService().getSelection();
+		if (sel instanceof IStructuredSelection) {
+			Object o = ((IStructuredSelection)sel).getFirstElement();
+			// TODO: if selection came from a Guvnor Repository view, this will be a
+			// org.guvnor.tools.views.model.TreeObject - figure out how to add this dependency.
+			// In this case we may want to explicitly make the editor read-only
+			System.out.println(o);
+		}
+
 		IProject project = Bpmn2Preferences.getActiveProject();
 		if (project != null) {
 			getWorkItemDefinitions();
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/DefaultBpmn2RuntimeExtension.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/DefaultBpmn2RuntimeExtension.java
index fefd5d5..b3d74ea 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/DefaultBpmn2RuntimeExtension.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/DefaultBpmn2RuntimeExtension.java
@@ -14,6 +14,7 @@
 import org.eclipse.bpmn2.modeler.core.IBpmn2RuntimeExtension;
 import org.eclipse.bpmn2.modeler.core.utils.ModelUtil.Bpmn2DiagramType;
 import org.eclipse.bpmn2.modeler.core.preferences.Bpmn2Preferences;
+import org.eclipse.graphiti.ui.editor.DiagramEditor;
 import org.eclipse.swt.widgets.Composite;
 import org.eclipse.ui.IEditorInput;
 import org.eclipse.ui.IEditorSite;
@@ -49,7 +50,7 @@
 	}
 
 	@Override
-	public void initialize() {
+	public void initialize(DiagramEditor editor) {
 		// TODO Auto-generated method stub
 	}
 
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 8c2760c..4145eb6 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
@@ -375,6 +375,7 @@
 		// 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();
+		getTargetRuntime(input);
 		setActiveEditor(this);
 		
 		super.init(site, input);
@@ -470,7 +471,7 @@
 	private Bpmn2DiagramEditorInput createNewDiagramEditorInput(IEditorSite site, IEditorInput input, Bpmn2DiagramType diagramType, String targetNamespace)
 			throws CoreException {
 		
-		modelUri = FileService.getInputUri(site, input);
+		modelUri = FileService.getInputUri(input);
 		input = BPMN2DiagramCreator.createDiagram(modelUri, diagramType,targetNamespace,this);
 		diagramUri = ((Bpmn2DiagramEditorInput)input).getUri();
 
@@ -511,7 +512,7 @@
 			// 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();
+			getTargetRuntime().getRuntimeExtension().initialize(this);
 
 			try {
 				if (getModelFile()==null || getModelFile().exists()) {
diff --git a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/wizards/FileService.java b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/wizards/FileService.java
index e64db8e..a539747 100644
--- a/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/wizards/FileService.java
+++ b/org.eclipse.bpmn2.modeler.ui/src/org/eclipse/bpmn2/modeler/ui/wizards/FileService.java
@@ -13,6 +13,7 @@
 package org.eclipse.bpmn2.modeler.ui.wizards;
 
 import java.io.File;
+import java.io.FileInputStream;
 import java.io.FileNotFoundException;
 import java.io.FileOutputStream;
 import java.io.IOException;
@@ -203,7 +204,14 @@
 
 	public static InputStream getInputContents(IEditorInput input) {
 		try {
-			if (input instanceof FileEditorInput) {
+			if (input instanceof Bpmn2DiagramEditorInput) {
+				URI uri = getInputUri(input);
+				File file = new File(uri.toFileString());
+				if (file.exists()) {
+					InputStream is = new FileInputStream(file);
+					return is;
+				}
+			} else if (input instanceof FileEditorInput) {
 				return ((FileEditorInput) input).getFile().getContents();
 			} else if (input instanceof IStorageEditorInput) {
 				return ((IStorageEditorInput) input).getStorage().getContents();
@@ -216,7 +224,7 @@
 		return null;
 	}
 	
-	public static URI getInputUri(IEditorSite site, IEditorInput input) {
+	public static URI getInputUri(IEditorInput input) {
 		if (input instanceof Bpmn2DiagramEditorInput) {
 			URI uri = ((Bpmn2DiagramEditorInput) input).getModelUri();
 			return uri.trimFragment();