\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
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
}\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