Some Eclipse Foundation services are deprecated, or will be soon. Please ensure you've read this important communication.
View | Details | Raw Unified | Return to bug 174355 | Differences between
and this patch

Collapse All | Expand All

(-)src/org/eclipse/jface/viewers/WrappedViewerLabelProvider.java (+59 lines)
Lines 11-19 Link Here
11
11
12
package org.eclipse.jface.viewers;
12
package org.eclipse.jface.viewers;
13
13
14
import java.util.LinkedList;
15
16
import org.eclipse.core.runtime.Assert;
14
import org.eclipse.swt.graphics.Color;
17
import org.eclipse.swt.graphics.Color;
15
import org.eclipse.swt.graphics.Font;
18
import org.eclipse.swt.graphics.Font;
16
import org.eclipse.swt.graphics.Image;
19
import org.eclipse.swt.graphics.Image;
20
import org.eclipse.swt.widgets.TreeItem;
17
21
18
/**
22
/**
19
 * The WrappedViewerLabelProvider is a label provider that
23
 * The WrappedViewerLabelProvider is a label provider that
Lines 33-38 Link Here
33
37
34
	private IFontProvider fontProvider;
38
	private IFontProvider fontProvider;
35
39
40
	private IViewerLabelProvider viewerLabelProvider;
41
42
	private ITreePathLabelProvider treePathLabelProvider;
43
	
36
	/**
44
	/**
37
	 * Create a new instance of the receiver based on labelProvider.
45
	 * Create a new instance of the receiver based on labelProvider.
38
	 * 
46
	 * 
Lines 50-55 Link Here
50
	 *            {@link Object}
58
	 *            {@link Object}
51
	 */
59
	 */
52
	public void setProviders(Object provider) {
60
	public void setProviders(Object provider) {
61
		if (provider instanceof ITreePathLabelProvider)
62
			treePathLabelProvider = ((ITreePathLabelProvider) provider);
63
64
		if (provider instanceof IViewerLabelProvider)
65
			viewerLabelProvider = ((IViewerLabelProvider) provider);
66
		
53
		if (provider instanceof ILabelProvider)
67
		if (provider instanceof ILabelProvider)
54
			labelProvider = ((ILabelProvider) provider);
68
			labelProvider = ((ILabelProvider) provider);
55
69
Lines 138-141 Link Here
138
	IFontProvider getFontProvider() {
152
	IFontProvider getFontProvider() {
139
		return fontProvider;
153
		return fontProvider;
140
	}
154
	}
155
	
156
	public void update(ViewerCell cell) {
157
		if (viewerLabelProvider != null) {
158
			ViewerLabel label = new ViewerLabel(cell.getText(), cell.getImage());
159
			viewerLabelProvider.updateLabel(label, cell.getElement());
160
			applyViewerLabel(cell, label);
161
		} else if (treePathLabelProvider != null && cell.getItem() instanceof TreeItem) {
162
			ViewerLabel label = new ViewerLabel(cell.getText(), cell.getImage());
163
			TreePath treePath;
164
			{
165
				// inlined copy of AbstractTreeViewer.getTreePathFromItem
166
				TreeItem item = (TreeItem) cell.getItem();
167
				LinkedList segments = new LinkedList();
168
				while (item != null) {
169
					Object segment = item.getData();
170
					Assert.isNotNull(segment);
171
					segments.addFirst(segment);
172
					item = item.getParentItem();
173
				}
174
				treePath = new TreePath(segments.toArray());
175
			}
176
			treePathLabelProvider.updateLabel(label, treePath);
177
			applyViewerLabel(cell, label);
178
		} else {
179
			super.update(cell);
180
		}
181
	}
182
183
	private void applyViewerLabel(ViewerCell cell, ViewerLabel label) {
184
		if (label.hasNewText()) {
185
			cell.setText(label.getText());
186
		}
187
		if (label.hasNewImage()) {
188
			cell.setImage(label.getImage());
189
		}
190
		if (label.hasNewBackground()) {
191
			cell.setBackground(label.getBackground());
192
		}
193
		if (label.hasNewForeground()) {
194
			cell.setBackground(label.getForeground());
195
		}
196
		if (label.hasNewFont()) {
197
			cell.setFont(label.getFont());
198
		}
199
	}
141
}
200
}

Return to bug 174355