p2izing the editor
[taxeditor.git] / eclipseprojects / eu.etaxonomy.taxeditor.prototype2 / src / eu / etaxonomy / taxeditor / prototype2 / view / propertysheetsupport / PropertySheetValueLabelProvider.java
1 package eu.etaxonomy.taxeditor.prototype2.view.propertysheetsupport;
2
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;
11
12 import eu.etaxonomy.taxeditor.prototype2.model.PropertySheetNode;
13 import eu.etaxonomy.taxeditor.prototype2.view.PropertySheetViewer;
14
15 /**
16 *
17 * Borrowed from tomson <tom.schindl@bestsolution.at>'s GenericObservableMapCellLabelProvider
18 *
19 * @author p.ciardelli
20 *
21 */
22 public class PropertySheetValueLabelProvider extends ColumnLabelProvider {
23
24 private DataBindingContext bindingContext;
25
26 public PropertySheetValueLabelProvider(PropertySheetViewer viewer) {
27 this.bindingContext = viewer.getBindingContext();
28 }
29
30 public Image getImage(Object element) {
31 return null;
32 }
33
34 public String getText(Object element) {
35 return (String) ((PropertySheetNode) element).getPropertyValue();
36 }
37
38 public void update(ViewerCell cell) {
39
40 Object element = cell.getElement();
41 cell.setText(getText(element));
42 Image image = getImage(element);
43 cell.setImage(image);
44 cell.setBackground(getBackground(element));
45 cell.setForeground(getForeground(element));
46 cell.setFont(getFont(element));
47
48 // if node element is observing a value, bind it to its TreeItem
49 IObservableValue observeNodeValue = ((PropertySheetNode) element).getObserveValue();
50 if (observeNodeValue != null) {
51
52 Assert.isNotNull(bindingContext,
53 "Label provider: PropertySheetViewer's binding context must be explicitly set.");
54
55 TreeItemColumnBean itemColumn = new TreeItemColumnBean((TreeItem) cell.getItem(),1);
56 IObservableValue observeCellValue = BeansObservables.observeValue(itemColumn, "text");
57 bindingContext.bindValue(observeCellValue, observeNodeValue, null, null);
58 }
59 }
60
61 /**
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
64 **/
65 class TreeItemColumnBean {
66
67 TreeItem item;
68 int index;
69
70 TreeItemColumnBean(TreeItem item, int index) {
71 this.item = item;
72 this.index = index;
73 }
74
75 public String getText() {
76 return item.getText(index);
77 }
78
79 public void setText(String string) {
80 item.setText(index, string);
81 }
82 }
83 }