diff options
author | Brian de Alwis | 2011-12-06 21:44:33 +0000 |
---|---|---|
committer | Brian de Alwis | 2011-12-06 21:46:19 +0000 |
commit | 9154f180fc3b71dd06ec2e686487cc34318f5708 (patch) | |
tree | 37514b77246240a6351177fa635a0a3d0bd05651 | |
parent | a87a3a70c5233b5936ce4594b603a94593b7d4c8 (diff) | |
download | org.eclipse.e4.tools-9154f180fc3b71dd06ec2e686487cc34318f5708.tar.gz org.eclipse.e4.tools-9154f180fc3b71dd06ec2e686487cc34318f5708.tar.xz org.eclipse.e4.tools-9154f180fc3b71dd06ec2e686487cc34318f5708.zip |
[Spy] Guard against possible NPEsv20111206-2146I20111216-1500I20111214-1100I20111214-0830I20111209-2100I20111208-2000I20111208-1430I20111208-0200I20111207-0200
2 files changed, 19 insertions, 12 deletions
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 2803c9d5..8cc77280 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 java.util.Map.Entry; 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 class CSSPropertiesContentProvider implements IStructuredContentProvider 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 cff70893..fb59f096 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 java.util.List; 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 class CssSpyDialog extends Dialog { 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 @@ public class CssSpyDialog extends Dialog { } shown = current; - CSSEngine engine = WidgetElement.getEngine(shown); + CSSEngine engine = getCSSEngine(shown); CSSStylableElement element = (CSSStylableElement) engine .getElement(shown); if (element == null) { @@ -646,7 +654,7 @@ public class CssSpyDialog extends Dialog { return; } - CSSEngine engine = WidgetElement.getEngine(shown); + CSSEngine engine = getCSSEngine(shown); try { SelectorList selectors = engine.parseSelectors(text); processCSSSearch(text, null, engine, selectors, element); |