diff options
author | Brian de Alwis | 2011-11-18 16:07:09 +0000 |
---|---|---|
committer | Brian de Alwis | 2011-11-18 16:07:09 +0000 |
commit | 038b650d24ce96e17a9633f9e1121fd46b60fcc6 (patch) | |
tree | 280ac941212dd06f4fc198492f81fa5214256b30 | |
parent | 41aa1d294ab9dfb27b38e7c272e9c7c3e99942bb (diff) | |
download | org.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
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(), |