Bug 541017 - NullPointerException in DiagramEditor.selectionChanged
Change-Id: I16cbba5bd3e15877940888d9cbc5029f847e1d9d
diff --git a/plugins/org.eclipse.graphiti.ui/src/org/eclipse/graphiti/ui/editor/DiagramEditor.java b/plugins/org.eclipse.graphiti.ui/src/org/eclipse/graphiti/ui/editor/DiagramEditor.java
index c893bc2..9a62ab4 100644
--- a/plugins/org.eclipse.graphiti.ui/src/org/eclipse/graphiti/ui/editor/DiagramEditor.java
+++ b/plugins/org.eclipse.graphiti.ui/src/org/eclipse/graphiti/ui/editor/DiagramEditor.java
@@ -80,7 +80,9 @@
import org.eclipse.ui.IEditorInput;
import org.eclipse.ui.IEditorPart;
import org.eclipse.ui.IEditorSite;
+import org.eclipse.ui.IWorkbenchPage;
import org.eclipse.ui.IWorkbenchPart;
+import org.eclipse.ui.IWorkbenchPartSite;
import org.eclipse.ui.PartInitException;
import org.eclipse.ui.contexts.IContextService;
import org.eclipse.ui.navigator.CommonNavigator;
@@ -578,10 +580,22 @@
*/
public void selectionChanged(IWorkbenchPart part, ISelection selection) {
// If not the active editor, ignore selection changed.
- boolean editorIsActive = getSite().getPage().isPartVisible(this);
+ boolean editorIsActive = false;
+ IWorkbenchPartSite site = getSite();
+ IWorkbenchPage workbenchPage = null;
+ if (site != null) {
+ workbenchPage = site.getPage();
+ if (workbenchPage != null) {
+ editorIsActive = workbenchPage.isPartVisible(this);
+ }
+ }
+
if (!editorIsActive) {
// Check if we are a page of the active multi page editor
- IEditorPart activeEditor = getSite().getPage().getActiveEditor();
+ IEditorPart activeEditor = null;
+ if (workbenchPage != null) {
+ activeEditor = workbenchPage.getActiveEditor();
+ }
if (activeEditor != null) {
if (activeEditor instanceof MultiPageEditorPart) {
Object selectedPage = ((MultiPageEditorPart) activeEditor).getAdapter(getClass());