1 package eu
.etaxonomy
.taxeditor
.prototype1
.view
;
3 import java
.text
.MessageFormat
;
6 import org
.eclipse
.core
.databinding
.DataBindingContext
;
7 import org
.eclipse
.core
.databinding
.beans
.BeansObservables
;
8 import org
.eclipse
.core
.databinding
.observable
.map
.IMapChangeListener
;
9 import org
.eclipse
.core
.databinding
.observable
.map
.IObservableMap
;
10 import org
.eclipse
.core
.databinding
.observable
.map
.MapChangeEvent
;
11 import org
.eclipse
.core
.databinding
.observable
.value
.IObservableValue
;
12 import org
.eclipse
.jface
.databinding
.swt
.SWTObservables
;
13 import org
.eclipse
.jface
.viewers
.ColumnLabelProvider
;
14 import org
.eclipse
.jface
.viewers
.LabelProviderChangedEvent
;
15 import org
.eclipse
.jface
.viewers
.ViewerCell
;
16 import org
.eclipse
.swt
.SWT
;
17 import org
.eclipse
.swt
.graphics
.Image
;
18 import org
.eclipse
.swt
.widgets
.Item
;
19 import org
.eclipse
.swt
.widgets
.Tree
;
20 import org
.eclipse
.swt
.widgets
.TreeItem
;
22 import eu
.etaxonomy
.taxeditor
.prototype1
.view
.NameEditorView
.Node
;
25 * @author tomson <tom.schindl@bestsolution.at>
26 * @version $Revision: $
30 public class GenericObservableMapCellLabelProvider
extends ColumnLabelProvider
{
34 private String templateText
;
39 private final IObservableMap
[] attributeMaps
;
42 * Change listener to track changes
44 private IMapChangeListener mapChangeListener
= new IMapChangeListener() {
45 public void handleMapChange(MapChangeEvent event
) {
46 Set affectedElements
= event
.diff
.getChangedKeys();
47 LabelProviderChangedEvent newEvent
= new LabelProviderChangedEvent(
48 GenericObservableMapCellLabelProvider
.this, affectedElements
.toArray());
49 fireLabelProviderChanged(newEvent
);
53 private DataBindingContext bc
;
59 public GenericObservableMapCellLabelProvider(IObservableMap attributeMap
,
60 String templateText
, DataBindingContext bc
) {
61 this(new IObservableMap
[] { attributeMap
},templateText
, bc
);
65 * @param attributeMaps
68 public GenericObservableMapCellLabelProvider(IObservableMap
[] attributeMaps
,String templateText
, DataBindingContext bc
) {
69 this.attributeMaps
= attributeMaps
;
70 for (int i
= 0; i
< attributeMaps
.length
; i
++) {
71 attributeMaps
[i
].addMapChangeListener(mapChangeListener
);
73 this.templateText
= templateText
;
77 public void dispose() {
78 for (int i
= 0; i
< attributeMaps
.length
; i
++) {
79 attributeMaps
[i
].removeMapChangeListener(mapChangeListener
);
84 public Image
getImage(Object element
) {
88 public String
getText(Object element
) {
89 return ((Node
) element
).getValue();
92 public void update(ViewerCell cell
) {
94 Object element
= cell
.getElement();
96 cell
.setText(getText(element
));
97 Image image
= getImage(element
);
99 cell
.setBackground(getBackground(element
));
100 cell
.setForeground(getForeground(element
));
101 cell
.setFont(getFont(element
));
103 // bind model element to its corresponding cell
104 IObservableValue observeNodeValue
= BeansObservables
.observeValue((Node
) element
, "value");
105 IObservableValue observeCellValue
= BeansObservables
.observeValue(cell
, "text");
106 bc
.bindValue(observeNodeValue
, observeCellValue
, null, null);