[Spy] Guard against possible NPEs
diff --git a/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/CSSPropertiesContentProvider.java b/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/CSSPropertiesContentProvider.java
index 2803c9d..8cc7728 100644
--- a/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/CSSPropertiesContentProvider.java
+++ b/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/CSSPropertiesContentProvider.java
@@ -18,7 +18,6 @@
 import org.eclipse.e4.ui.css.core.dom.CSSStylableElement;
 import org.eclipse.e4.ui.css.core.dom.properties.ICSSPropertyHandler;
 import org.eclipse.e4.ui.css.core.engine.CSSEngine;
-import org.eclipse.e4.ui.css.swt.dom.WidgetElement;
 import org.eclipse.jface.viewers.IStructuredContentProvider;
 import org.eclipse.jface.viewers.Viewer;
 import org.eclipse.swt.widgets.Widget;
@@ -36,9 +35,9 @@
     public void inputChanged(Viewer viewer, Object oldInput, Object newInput) {
         if (newInput instanceof CSSStylableElement) {
             this.input = (CSSStylableElement) newInput;
-            this.cssEngine = WidgetElement.getEngine((Widget) input.getNativeWidget());
+            this.cssEngine = CssSpyDialog.getCSSEngine((Widget) input.getNativeWidget());
         } else if (newInput instanceof Widget) {
-            this.cssEngine = WidgetElement.getEngine((Widget) newInput);
+            this.cssEngine = CssSpyDialog.getCSSEngine((Widget) newInput);
 			this.input = (CSSStylableElement) cssEngine.getElement(newInput);
         }
     }
diff --git a/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/CssSpyDialog.java b/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/CssSpyDialog.java
index cff7089..fb59f09 100644
--- a/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/CssSpyDialog.java
+++ b/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/CssSpyDialog.java
@@ -17,6 +17,7 @@
 import org.eclipse.e4.ui.css.core.dom.CSSStylableElement;
 import org.eclipse.e4.ui.css.core.engine.CSSEngine;
 import org.eclipse.e4.ui.css.swt.dom.WidgetElement;
+import org.eclipse.e4.ui.css.swt.engine.CSSSWTEngineImpl;
 import org.eclipse.jface.dialogs.Dialog;
 import org.eclipse.jface.dialogs.IDialogConstants;
 import org.eclipse.jface.dialogs.MessageDialog;
@@ -81,22 +82,29 @@
 	public static CSSStylableElement getCSSElement(Object o) {
 		if (o instanceof CSSStylableElement) {
 			return (CSSStylableElement) o;
-		} else if (o instanceof Widget) {
-			CSSEngine engine = WidgetElement.getEngine((Widget) o);
-			return (CSSStylableElement) engine.getElement(o);
+        } else {
+            CSSEngine engine = getCSSEngine(o);
+            if (engine != null) {
+                return (CSSStylableElement) engine.getElement(o);
+            }
 		}
 		return null;
 	}
 
 	/** @return the CSS engine governing the argument, or null if none */
 	public static CSSEngine getCSSEngine(Object o) {
+        CSSEngine engine = null;
 		if (o instanceof CSSStylableElement) {
 			CSSStylableElement element = (CSSStylableElement) o;
-			return WidgetElement.getEngine((Widget) element.getNativeWidget());
-		} else if (o instanceof Widget) {
-			return WidgetElement.getEngine((Widget) o);
+            engine = WidgetElement.getEngine((Widget) element.getNativeWidget());
+        }
+        if (engine == null && o instanceof Widget) {
+            engine = WidgetElement.getEngine((Widget) o);
+        }
+        if (engine == null && Display.getCurrent() != null) {
+            engine = new CSSSWTEngineImpl(Display.getCurrent());
 		}
-		return null;
+        return engine;
 	}
 
 	private Display display;
@@ -173,7 +181,7 @@
 		}
 		shown = current;
 
-		CSSEngine engine = WidgetElement.getEngine(shown);
+        CSSEngine engine = getCSSEngine(shown);
 		CSSStylableElement element = (CSSStylableElement) engine
 				.getElement(shown);
 		if (element == null) {
@@ -646,7 +654,7 @@
 			return;
 		}
 
-		CSSEngine engine = WidgetElement.getEngine(shown);
+        CSSEngine engine = getCSSEngine(shown);
 		try {
 			SelectorList selectors = engine.parseSelectors(text);
 			processCSSSearch(text, null, engine, selectors, element);