First stabs at JFace Text functionality. Test TextViewer on NameEditorView divided...
[taxeditor.git] / eclipseprojects / eu.etaxonomy.taxeditor.prototype2 / src / eu / etaxonomy / taxeditor / prototype2 / view / PropertySheetValueEditingSupport.java
index c66a9c8731126209a4cb2560987695613050d2cb..749d0d36d8c783aebc088c7134909d67349a2b40 100644 (file)
@@ -4,8 +4,8 @@ import java.util.TreeMap;
 \r
 import org.eclipse.core.databinding.DataBindingContext;\r
 import org.eclipse.core.databinding.UpdateValueStrategy;\r
-import org.eclipse.core.databinding.beans.BeansObservables;\r
 import org.eclipse.core.databinding.observable.value.IObservableValue;\r
+import org.eclipse.core.runtime.Assert;\r
 import org.eclipse.jface.databinding.swt.SWTObservables;\r
 import org.eclipse.jface.viewers.CellEditor;\r
 import org.eclipse.jface.viewers.EditingSupport;\r
@@ -13,42 +13,33 @@ import org.eclipse.jface.viewers.TextCellEditor;
 import org.eclipse.jface.viewers.ViewerCell;\r
 import org.eclipse.swt.SWT;\r
 \r
-import eu.etaxonomy.cdm.model.name.TaxonName;\r
-import eu.etaxonomy.cdm.model.publication.Map;\r
 import eu.etaxonomy.taxeditor.prototype2.model.PropertySheetNode;\r
 \r
 public class PropertySheetValueEditingSupport extends EditingSupport {\r
 \r
-       private TreeMap<PropertySheetNode,CellEditor> cellEditors;\r
+       private TreeMap<String,CellEditor> cellEditors;\r
        private PropertySheetViewer viewer;\r
        private DataBindingContext bindingContext;\r
-       \r
-       private CellEditor editor;\r
-               \r
+                       \r
        public PropertySheetValueEditingSupport(PropertySheetViewer viewer) {\r
                super(viewer);\r
                this.viewer = viewer;\r
                this.bindingContext = viewer.getBindingContext();\r
-               this.cellEditors = new TreeMap<PropertySheetNode, CellEditor>();\r
-               this.editor = new TextCellEditor(this.viewer.getTree());\r
-       }\r
-\r
+               this.cellEditors = new TreeMap<String, CellEditor>();\r
+       }               \r
+       \r
        protected boolean canEdit(Object element) {\r
                return ((PropertySheetNode) element).isEditable();\r
        }\r
 \r
        protected CellEditor getCellEditor(Object element) {\r
-               PropertySheetNode node = (PropertySheetNode) element;\r
-               System.out.println((cellEditors.get(node) == null));\r
-               if (cellEditors.get(node) == null)\r
-                       cellEditors.put(node, new TextCellEditor(viewer.getTree()));\r
-//             System.out.println(cellEditors.size());\r
-               return cellEditors.get(node);\r
-//             return editor;\r
+               String elementString = element.toString();\r
+               if (cellEditors.get(elementString) == null)\r
+                       cellEditors.put(elementString, new TextCellEditor(viewer.getTree()));\r
+               return cellEditors.get(elementString);\r
        }\r
 \r
        protected Object getValue(Object element) {\r
-//             return null;\r
                return (PropertySheetNode) element;\r
        }\r
 \r
@@ -58,19 +49,20 @@ public class PropertySheetValueEditingSupport extends EditingSupport {
        }\r
 \r
        protected void initializeCellEditorValue(CellEditor cellEditor, ViewerCell cell) {\r
-               System.out.println("?");\r
                PropertySheetNode node = (PropertySheetNode) getValue(cell.getElement());\r
                cellEditor.setValue(node.getPropertyValue());\r
                \r
-               // TODO: put assertion re: bindingContext here\r
-               if (this.bindingContext != null) {\r
+               // if node element is observing a value, bind it to its TreeItem\r
+               IObservableValue observeNodeValue = node.getObserveValue();\r
+               if (observeNodeValue != null) {\r
+                       \r
+               Assert.isNotNull(bindingContext,\r
+               "Editing support: PropertySheetViewer's binding context must be explicitly set.");\r
                        \r
-                       IObservableValue observeNodeValue = node.getObserveValue();\r
                        IObservableValue observeCellValue = SWTObservables.observeText(cellEditor.getControl(), SWT.Modify);\r
-                       bindingContext.bindValue(observeNodeValue, observeCellValue,  \r
+                       bindingContext.bindValue(observeNodeValue, observeCellValue,\r
                                        new UpdateValueStrategy(UpdateValueStrategy.POLICY_CONVERT), null);\r
-               \r
+                       \r
                }\r
-               \r
        }               \r
-}\r
+}
\ No newline at end of file