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();