1 package eu
.etaxonomy
.taxeditor
.prototype2
.view
.propertysheetsupport
;
3 import org
.eclipse
.core
.databinding
.DataBindingContext
;
4 import org
.eclipse
.core
.databinding
.beans
.BeansObservables
;
5 import org
.eclipse
.core
.databinding
.observable
.value
.IObservableValue
;
6 import org
.eclipse
.core
.runtime
.Assert
;
7 import org
.eclipse
.jface
.viewers
.ColumnLabelProvider
;
8 import org
.eclipse
.jface
.viewers
.ViewerCell
;
9 import org
.eclipse
.swt
.graphics
.Image
;
10 import org
.eclipse
.swt
.widgets
.TreeItem
;
12 import eu
.etaxonomy
.taxeditor
.prototype2
.model
.PropertySheetNode
;
13 import eu
.etaxonomy
.taxeditor
.prototype2
.view
.PropertySheetViewer
;
17 * Borrowed from tomson <tom.schindl@bestsolution.at>'s GenericObservableMapCellLabelProvider
22 public class PropertySheetValueLabelProvider
extends ColumnLabelProvider
{
24 private DataBindingContext bindingContext
;
26 public PropertySheetValueLabelProvider(PropertySheetViewer viewer
) {
27 this.bindingContext
= viewer
.getBindingContext();
30 public Image
getImage(Object element
) {
34 public String
getText(Object element
) {
35 return (String
) ((PropertySheetNode
) element
).getPropertyValue();
38 public void update(ViewerCell cell
) {
40 Object element
= cell
.getElement();
41 cell
.setText(getText(element
));
42 Image image
= getImage(element
);
44 cell
.setBackground(getBackground(element
));
45 cell
.setForeground(getForeground(element
));
46 cell
.setFont(getFont(element
));
48 // if node element is observing a value, bind it to its TreeItem
49 IObservableValue observeNodeValue
= ((PropertySheetNode
) element
).getObserveValue();
50 if (observeNodeValue
!= null) {
52 Assert
.isNotNull(bindingContext
,
53 "Label provider: PropertySheetViewer's binding context must be explicitly set.");
55 TreeItemColumnBean itemColumn
= new TreeItemColumnBean((TreeItem
) cell
.getItem(),1);
56 IObservableValue observeCellValue
= BeansObservables
.observeValue(itemColumn
, "text");
57 bindingContext
.bindValue(observeCellValue
, observeNodeValue
, null, null);
62 * TreeItem returns column texts by index, i.e. getText(1) - this is a wrapper which
63 * allows BeansObservables to observe value with getText / setText
65 class TreeItemColumnBean
{
70 TreeItemColumnBean(TreeItem item
, int index
) {
75 public String
getText() {
76 return item
.getText(index
);
79 public void setText(String string
) {
80 item
.setText(index
, string
);