diff options
author | Brian de Alwis | 2011-12-05 02:55:48 +0000 |
---|---|---|
committer | Brian de Alwis | 2011-12-05 02:55:48 +0000 |
commit | f9f5c60e3a3e19a0d88cb775109dd586ef8dcdcc (patch) | |
tree | a23ec8f735fae926aef96156f7b45452d3d98fe1 | |
parent | 038b650d24ce96e17a9633f9e1121fd46b60fcc6 (diff) | |
download | org.eclipse.e4.tools-f9f5c60e3a3e19a0d88cb775109dd586ef8dcdcc.tar.gz org.eclipse.e4.tools-f9f5c60e3a3e19a0d88cb775109dd586ef8dcdcc.tar.xz org.eclipse.e4.tools-f9f5c60e3a3e19a0d88cb775109dd586ef8dcdcc.zip |
Make CSS Spy a bit more robust to unexpected inputs, including
not assuming children from WidgetElements are themselves widgets
(e.g., SWT_AWT bridge)
3 files changed, 14 insertions, 10 deletions
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 6d58491a..4eb11336 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 @@ -386,8 +386,11 @@ public class CssSpyDialog extends Dialog { StringBuilder sb = new StringBuilder(); sb.append(element.getLocalName()).append(" (") .append(element.getNamespaceURI()).append(")"); - sb.append("\nClasses:\n "); - Activator.join(sb, element.getCSSClass().split(" +"), "\n "); + if (element.getCSSClass() != null) { + sb.append("\nClasses:\n "); + Activator.join(sb, element.getCSSClass().split(" +"), + "\n "); + } return sb.toString(); } }); @@ -500,7 +503,8 @@ public class CssSpyDialog extends Dialog { @Override protected Object getValue(Object element) { try { - return ((CSSPropertyProvider) element).getValue(); + String value = ((CSSPropertyProvider) element).getValue(); + return value == null ? "" : value; } catch (Exception e) { return ""; } @@ -509,9 +513,10 @@ public class CssSpyDialog extends Dialog { @Override protected void setValue(Object element, Object value) { try { + if(value == null || ((String)value).trim().isEmpty()) { return; } CSSPropertyProvider provider = (CSSPropertyProvider) element; provider.setValue((String) value); - } catch (Exception e) { + } catch (Throwable e) { MessageDialog.openError(getShell(), "Error", "Unable to set property:\n\n" + e.getMessage()); diff --git a/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/OpenSpyHandler.java b/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/OpenSpyHandler.java index 3312b063..7da7582d 100644 --- a/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/OpenSpyHandler.java +++ b/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/OpenSpyHandler.java @@ -49,13 +49,13 @@ public class OpenSpyHandler { } private CSSEngine findCSSEngine() { - if(context != null) { - Object themeEngine = context.get(IThemeEngine.class); + if(display != null) { + Object themeEngine = display.getData("org.eclipse.e4.ui.css.swt.theme"); if(themeEngine instanceof ThemeEngine) { return ((ThemeEngine)themeEngine) .getCSSEngine(); } } - if(display != null) { - Object themeEngine = display.getData("org.eclipse.e4.ui.css.swt.theme"); + if(context != null) { + Object themeEngine = context.get(IThemeEngine.class); if(themeEngine instanceof ThemeEngine) { return ((ThemeEngine)themeEngine) .getCSSEngine(); } } diff --git a/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/WidgetTreeProvider.java b/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/WidgetTreeProvider.java index 81972710..605ffb81 100644 --- a/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/WidgetTreeProvider.java +++ b/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/WidgetTreeProvider.java @@ -17,7 +17,6 @@ import org.eclipse.e4.ui.css.core.dom.CSSStylableElement; import org.eclipse.jface.viewers.ITreeContentProvider; import org.eclipse.jface.viewers.Viewer; import org.eclipse.swt.widgets.Control; -import org.eclipse.swt.widgets.Widget; import org.w3c.dom.NodeList; public class WidgetTreeProvider implements ITreeContentProvider { @@ -44,7 +43,7 @@ public class WidgetTreeProvider implements ITreeContentProvider { NodeList kids = element.getChildNodes(); ArrayList<Object> children = new ArrayList<Object>(kids.getLength()); for (int i = 0; i < kids.getLength(); i++) { - children.add((Widget) ((CSSStylableElement) kids.item(i)).getNativeWidget()); + children.add(((CSSStylableElement) kids.item(i)).getNativeWidget()); } // if (parentElement instanceof Shell) { // // ToolBar is part of the children |