|
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.setForeground(label.getForeground()); |
| 195 |
} |
| 196 |
if (label.hasNewFont()) { |
| 197 |
cell.setFont(label.getFont()); |
| 198 |
} |
| 199 |
} |
| 141 |
} |
200 |
} |