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