Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBrian de Alwis2011-11-18 16:07:09 +0000
committerBrian de Alwis2011-11-18 16:07:09 +0000
commit038b650d24ce96e17a9633f9e1121fd46b60fcc6 (patch)
tree280ac941212dd06f4fc198492f81fa5214256b30
parent41aa1d294ab9dfb27b38e7c272e9c7c3e99942bb (diff)
downloadorg.eclipse.e4.tools-038b650d24ce96e17a9633f9e1121fd46b60fcc6.tar.gz
org.eclipse.e4.tools-038b650d24ce96e17a9633f9e1121fd46b60fcc6.tar.xz
org.eclipse.e4.tools-038b650d24ce96e17a9633f9e1121fd46b60fcc6.zip
Add support for editing and changing CSS properties for the selected
widget
-rw-r--r--bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/CSSPropertyProvider.java6
-rw-r--r--bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/CssSpyDialog.java59
2 files changed, 63 insertions, 2 deletions
diff --git a/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/CSSPropertyProvider.java b/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/CSSPropertyProvider.java
index bc298b1c..ffca1dda 100644
--- a/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/CSSPropertyProvider.java
+++ b/bundles/org.eclipse.e4.tools.css.spy/src/org/eclipse/e4/tools/css/spy/CSSPropertyProvider.java
@@ -41,10 +41,12 @@ public class CSSPropertyProvider {
return handler.retrieveCSSProperty(element, propertyName, "", engine);
}
- public void setValue(CSSValue value) throws Exception {
- handler.applyCSSProperty(element, propertyName, value, "", engine);
+ public void setValue(String value) throws Exception {
+ CSSValue v = engine.parsePropertyValue(value);
+ handler.applyCSSProperty(element, propertyName, v, "", engine);
}
+
@Override
public String toString() {
return propertyName;
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 64432495..6d58491a 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
@@ -19,16 +19,25 @@ import org.eclipse.e4.ui.css.core.engine.CSSEngine;
import org.eclipse.e4.ui.css.swt.dom.WidgetElement;
import org.eclipse.jface.dialogs.Dialog;
import org.eclipse.jface.dialogs.IDialogConstants;
+import org.eclipse.jface.dialogs.MessageDialog;
import org.eclipse.jface.layout.TableColumnLayout;
import org.eclipse.jface.layout.TreeColumnLayout;
+import org.eclipse.jface.viewers.CellEditor;
import org.eclipse.jface.viewers.ColumnLabelProvider;
+import org.eclipse.jface.viewers.ColumnViewerEditor;
+import org.eclipse.jface.viewers.ColumnViewerEditorActivationStrategy;
import org.eclipse.jface.viewers.ColumnViewerToolTipSupport;
import org.eclipse.jface.viewers.ColumnWeightData;
+import org.eclipse.jface.viewers.EditingSupport;
+import org.eclipse.jface.viewers.FocusCellOwnerDrawHighlighter;
import org.eclipse.jface.viewers.ISelectionChangedListener;
import org.eclipse.jface.viewers.SelectionChangedEvent;
import org.eclipse.jface.viewers.StructuredSelection;
import org.eclipse.jface.viewers.TableViewer;
import org.eclipse.jface.viewers.TableViewerColumn;
+import org.eclipse.jface.viewers.TableViewerEditor;
+import org.eclipse.jface.viewers.TableViewerFocusCellManager;
+import org.eclipse.jface.viewers.TextCellEditor;
import org.eclipse.jface.viewers.TreeViewer;
import org.eclipse.jface.viewers.TreeViewerColumn;
import org.eclipse.jface.viewers.Viewer;
@@ -433,6 +442,21 @@ public class CssSpyDialog extends Dialog {
cssPropertiesViewer.getTable().setHeaderVisible(true);
cssPropertiesViewer.setComparator(new ViewerComparator());
+ final TextCellEditor textCellEditor = new TextCellEditor(
+ cssPropertiesViewer.getTable());
+ TableViewerEditor
+ .create(cssPropertiesViewer,
+ new TableViewerFocusCellManager(cssPropertiesViewer,
+ new FocusCellOwnerDrawHighlighter(
+ cssPropertiesViewer)),
+ new ColumnViewerEditorActivationStrategy(
+ cssPropertiesViewer),
+ ColumnViewerEditor.TABBING_HORIZONTAL
+ | ColumnViewerEditor.TABBING_MOVE_TO_ROW_NEIGHBOR
+ | ColumnViewerEditor.TABBING_VERTICAL
+ | ColumnViewerEditor.KEYBOARD_ACTIVATION);
+
+
TableViewerColumn propName = new TableViewerColumn(cssPropertiesViewer,
SWT.NONE);
propName.getColumn().setWidth(100);
@@ -460,6 +484,41 @@ public class CssSpyDialog extends Dialog {
}
}
});
+ propValue.setEditingSupport(new EditingSupport(cssPropertiesViewer) {
+ @Override
+ protected CellEditor getCellEditor(Object element) {
+ // do the fancy footwork here to return an appropriate editor to
+ // the value-type
+ return textCellEditor;
+ }
+
+ @Override
+ protected boolean canEdit(Object element) {
+ return true;
+ }
+
+ @Override
+ protected Object getValue(Object element) {
+ try {
+ return ((CSSPropertyProvider) element).getValue();
+ } catch (Exception e) {
+ return "";
+ }
+ }
+
+ @Override
+ protected void setValue(Object element, Object value) {
+ try {
+ CSSPropertyProvider provider = (CSSPropertyProvider) element;
+ provider.setValue((String) value);
+ } catch (Exception e) {
+ MessageDialog.openError(getShell(), "Error",
+ "Unable to set property:\n\n"
+ + e.getMessage());
+ }
+ cssPropertiesViewer.update(element, null);
+ }
+ });
TableColumnLayout propsTableLayout = new TableColumnLayout();
propsTableLayout.setColumnData(propName.getColumn(),

Back to the top