78
|
1 /*******************************************************************************
|
|
2 * Copyright (c) 2006, 2008 IBM Corporation and others.
|
|
3 * All rights reserved. This program and the accompanying materials
|
|
4 * are made available under the terms of the Eclipse Public License v1.0
|
|
5 * which accompanies this distribution, and is available at
|
|
6 * http://www.eclipse.org/legal/epl-v10.html
|
|
7 *
|
|
8 * Contributors:
|
|
9 * IBM Corporation - initial API and implementation
|
|
10 * Brad Reynolds - bug 164247
|
|
11 * Brad Reynolds - bug 164134
|
|
12 *******************************************************************************/
|
|
13
|
|
14 module org.eclipse.jface.databinding.viewers.ObservableMapLabelProvider;
|
|
15
|
|
16 import java.lang.all;
|
|
17
|
|
18 import java.util.Set;
|
|
19
|
|
20 import org.eclipse.core.databinding.observable.map.IMapChangeListener;
|
|
21 import org.eclipse.core.databinding.observable.map.IObservableMap;
|
|
22 import org.eclipse.core.databinding.observable.map.MapChangeEvent;
|
|
23 import org.eclipse.jface.viewers.ILabelProvider;
|
|
24 import org.eclipse.jface.viewers.ITableLabelProvider;
|
|
25 import org.eclipse.jface.viewers.LabelProvider;
|
|
26 import org.eclipse.jface.viewers.LabelProviderChangedEvent;
|
|
27 import org.eclipse.swt.graphics.Image;
|
|
28
|
|
29 /**
|
|
30 * @since 1.1
|
|
31 *
|
|
32 */
|
|
33 public class ObservableMapLabelProvider : LabelProvider
|
|
34 , ILabelProvider, ITableLabelProvider {
|
|
35
|
|
36 private final IObservableMap[] attributeMaps;
|
|
37
|
|
38 private IMapChangeListener mapChangeListener = new class() IMapChangeListener {
|
|
39 public void handleMapChange(MapChangeEvent event) {
|
|
40 Set affectedElements = event.diff.getChangedKeys();
|
|
41 LabelProviderChangedEvent newEvent = new LabelProviderChangedEvent(
|
|
42 this.outer, affectedElements
|
|
43 .toArray());
|
|
44 fireLabelProviderChanged(newEvent);
|
|
45 }
|
|
46 };
|
|
47
|
|
48 /**
|
|
49 * @param attributeMap
|
|
50 */
|
|
51 public this(IObservableMap attributeMap) {
|
|
52 this([ cast(IObservableMap)attributeMap ]);
|
|
53 }
|
|
54
|
|
55 /**
|
|
56 * @param attributeMaps
|
|
57 */
|
|
58 public this(IObservableMap[] attributeMaps) {
|
|
59 System.arraycopy(attributeMaps, 0, this.attributeMaps = attributeMaps, 0, attributeMaps.length);
|
|
60 for (int i = 0; i < attributeMaps.length; i++) {
|
|
61 attributeMaps[i].addMapChangeListener(mapChangeListener);
|
|
62 }
|
|
63 }
|
|
64
|
|
65 public void dispose() {
|
|
66 for (int i = 0; i < attributeMaps.length; i++) {
|
|
67 attributeMaps[i].removeMapChangeListener(mapChangeListener);
|
|
68 }
|
|
69 super.dispose();
|
|
70 }
|
|
71
|
|
72 public Image getImage(Object element) {
|
|
73 return null;
|
|
74 }
|
|
75
|
|
76 public String getText(Object element) {
|
|
77 return getColumnText(element, 0);
|
|
78 }
|
|
79
|
|
80 public Image getColumnImage(Object element, int columnIndex) {
|
|
81 return null;
|
|
82 }
|
|
83
|
|
84 public String getColumnText(Object element, int columnIndex) {
|
|
85 if (columnIndex < attributeMaps.length) {
|
|
86 Object result = attributeMaps[columnIndex].get(element);
|
|
87 return result is null ? "" : result.toString(); //$NON-NLS-1$
|
|
88 }
|
|
89 return null;
|
|
90 }
|
|
91
|
|
92 }
|