Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian de Alwis2011-12-05 02:55:48 +0000
committerBrian de Alwis2011-12-05 02:55:48 +0000
commitf9f5c60e3a3e19a0d88cb775109dd586ef8dcdcc (patch)
treea23ec8f735fae926aef96156f7b45452d3d98fe1
parent038b650d24ce96e17a9633f9e1121fd46b60fcc6 (diff)
downloadorg.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)
-rw-r--r--bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/CssSpyDialog.java13
-rw-r--r--bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/OpenSpyHandler.java8
-rw-r--r--bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/WidgetTreeProvider.java3
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

Back to the top