Mercurial > projects > dwt-addons
annotate dwtx/jface/viewers/WrappedViewerLabelProvider.d @ 90:7ffeace6c47f
Update 3.4M7 to 3.4
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sun, 06 Jul 2008 23:30:07 +0200 |
parents | a6683645b0d7 |
children |
rev | line source |
---|---|
10 | 1 /******************************************************************************* |
2 * Copyright (c) 2006, 2007 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 * Port to the D programming language: | |
11 * Frank Benoit <benoit@tionex.de> | |
12 *******************************************************************************/ | |
13 | |
14 module dwtx.jface.viewers.WrappedViewerLabelProvider; | |
15 | |
16 import dwtx.jface.viewers.ColumnLabelProvider; | |
17 import dwtx.jface.viewers.ILabelProvider; | |
18 import dwtx.jface.viewers.IColorProvider; | |
19 import dwtx.jface.viewers.IFontProvider; | |
20 import dwtx.jface.viewers.IViewerLabelProvider; | |
21 import dwtx.jface.viewers.ITreePathLabelProvider; | |
22 import dwtx.jface.viewers.IBaseLabelProvider; | |
23 import dwtx.jface.viewers.ViewerCell; | |
24 import dwtx.jface.viewers.ViewerLabel; | |
25 import dwtx.jface.viewers.LabelProvider; | |
26 import dwtx.jface.viewers.TreePath; | |
27 | |
28 import dwt.graphics.Color; | |
29 import dwt.graphics.Font; | |
30 import dwt.graphics.Image; | |
31 import dwtx.core.runtime.Assert; | |
32 | |
33 import dwt.dwthelper.utils; | |
34 | |
35 /** | |
36 * The WrappedViewerLabelProvider is a label provider that allows | |
37 * {@link ILabelProvider}, {@link IColorProvider} and {@link IFontProvider} to | |
38 * be mapped to a ColumnLabelProvider. | |
39 * | |
40 * @since 3.3 | |
41 * | |
42 */ | |
43 class WrappedViewerLabelProvider : ColumnLabelProvider { | |
44 | |
45 private static ILabelProvider defaultLabelProvider; | |
46 | |
47 static this(){ | |
48 defaultLabelProvider = new LabelProvider(); | |
49 } | |
50 | |
51 private ILabelProvider labelProvider; | |
52 | |
53 private IColorProvider colorProvider; | |
54 | |
55 private IFontProvider fontProvider; | |
56 | |
57 private IViewerLabelProvider viewerLabelProvider; | |
58 | |
59 private ITreePathLabelProvider treePathLabelProvider; | |
60 | |
61 /** | |
62 * Create a new instance of the receiver based on labelProvider. | |
63 * | |
64 * @param labelProvider | |
65 */ | |
66 public this(IBaseLabelProvider labelProvider) { | |
54
a6683645b0d7
Fix ignored labelprovider for TreeViewer (See WrapperViewerLabelProvider.d), removed the debugging prints
Frank Benoit <benoit@tionex.de>
parents:
43
diff
changeset
|
67 this.labelProvider = defaultLabelProvider; |
10 | 68 super(); |
69 setProviders(cast(Object)labelProvider); | |
70 } | |
71 | |
72 /** | |
73 * Set the any providers for the receiver that can be adapted from provider. | |
74 * | |
75 * @param provider | |
76 * {@link Object} | |
77 */ | |
78 public void setProviders(Object provider) { | |
79 if ( auto c = cast(ITreePathLabelProvider)provider ) | |
80 treePathLabelProvider = c; | |
81 | |
82 if ( auto c = cast(IViewerLabelProvider)provider ) | |
83 viewerLabelProvider = c; | |
84 | |
85 if ( auto c = cast(ILabelProvider)provider ) | |
86 labelProvider = c; | |
87 | |
88 if ( auto c = cast(IColorProvider)provider ) | |
89 colorProvider = c; | |
90 | |
91 if ( auto c = cast(IFontProvider)provider ) | |
92 fontProvider = c; | |
93 | |
94 } | |
95 | |
96 /* | |
97 * (non-Javadoc) | |
98 * | |
99 * @see dwtx.jface.viewers.IFontProvider#getFont(java.lang.Object) | |
100 */ | |
43
ea8ff534f622
Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents:
10
diff
changeset
|
101 public override Font getFont(Object element) { |
10 | 102 if (fontProvider is null) { |
103 return null; | |
104 } | |
105 | |
106 return fontProvider.getFont(element); | |
107 | |
108 } | |
109 | |
110 /* | |
111 * (non-Javadoc) | |
112 * | |
113 * @see dwtx.jface.viewers.IColorProvider#getBackground(java.lang.Object) | |
114 */ | |
43
ea8ff534f622
Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents:
10
diff
changeset
|
115 public override Color getBackground(Object element) { |
10 | 116 if (colorProvider is null) { |
117 return null; | |
118 } | |
119 | |
120 return colorProvider.getBackground(element); | |
121 } | |
122 | |
123 /* | |
124 * (non-Javadoc) | |
125 * | |
126 * @see dwtx.jface.viewers.ILabelProvider#getText(java.lang.Object) | |
127 */ | |
43
ea8ff534f622
Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents:
10
diff
changeset
|
128 public override String getText(Object element) { |
10 | 129 return getLabelProvider().getText(element); |
130 } | |
131 | |
132 /* | |
133 * (non-Javadoc) | |
134 * | |
135 * @see dwtx.jface.viewers.ILabelProvider#getImage(java.lang.Object) | |
136 */ | |
43
ea8ff534f622
Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents:
10
diff
changeset
|
137 public override Image getImage(Object element) { |
10 | 138 return getLabelProvider().getImage(element); |
139 } | |
140 | |
141 /* | |
142 * (non-Javadoc) | |
143 * | |
144 * @see dwtx.jface.viewers.IColorProvider#getForeground(java.lang.Object) | |
145 */ | |
43
ea8ff534f622
Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents:
10
diff
changeset
|
146 public override Color getForeground(Object element) { |
10 | 147 if (colorProvider is null) { |
148 return null; | |
149 } | |
150 | |
151 return colorProvider.getForeground(element); | |
152 } | |
153 | |
154 /** | |
155 * Get the label provider | |
156 * | |
157 * @return {@link ILabelProvider} | |
158 */ | |
159 ILabelProvider getLabelProvider() { | |
160 return labelProvider; | |
161 } | |
162 | |
163 /** | |
164 * Get the color provider | |
165 * | |
166 * @return {@link IColorProvider} | |
167 */ | |
168 IColorProvider getColorProvider() { | |
169 return colorProvider; | |
170 } | |
171 | |
172 /** | |
173 * Get the font provider | |
174 * | |
175 * @return {@link IFontProvider}. | |
176 */ | |
177 IFontProvider getFontProvider() { | |
178 return fontProvider; | |
179 } | |
180 | |
43
ea8ff534f622
Fix override and super aliases
Frank Benoit <benoit@tionex.de>
parents:
10
diff
changeset
|
181 public override void update(ViewerCell cell) { |
10 | 182 Object element = cell.getElement(); |
183 if(viewerLabelProvider is null && treePathLabelProvider is null){ | |
184 // inlined super implementation with performance optimizations | |
185 cell.setText(getText(element)); | |
186 Image image = getImage(element); | |
187 cell.setImage(image); | |
188 if (colorProvider !is null) { | |
189 cell.setBackground(getBackground(element)); | |
190 cell.setForeground(getForeground(element)); | |
191 } | |
192 if (fontProvider !is null) { | |
193 cell.setFont(getFont(element)); | |
194 } | |
195 return; | |
196 } | |
197 | |
198 ViewerLabel label = new ViewerLabel(cell.getText(), cell.getImage()); | |
199 | |
200 if (treePathLabelProvider !is null) { | |
201 TreePath treePath = cell.getViewerRow().getTreePath(); | |
202 | |
203 Assert.isNotNull(treePath); | |
204 treePathLabelProvider.updateLabel(label, treePath); | |
205 } else if (viewerLabelProvider !is null) { | |
206 viewerLabelProvider.updateLabel(label, element); | |
207 } | |
208 if (!label.hasNewForeground() && colorProvider !is null) | |
209 label.setForeground(getForeground(element)); | |
210 | |
211 if (!label.hasNewBackground() && colorProvider !is null) | |
212 label.setBackground(getBackground(element)); | |
213 | |
214 if (!label.hasNewFont() && fontProvider !is null) | |
215 label.setFont(getFont(element)); | |
216 | |
217 applyViewerLabel(cell, label); | |
218 } | |
219 | |
220 private void applyViewerLabel(ViewerCell cell, ViewerLabel label) { | |
221 if (label.hasNewText()) { | |
222 cell.setText(label.getText()); | |
223 } | |
224 if (label.hasNewImage()) { | |
225 cell.setImage(label.getImage()); | |
226 } | |
90 | 227 if (colorProvider !is null || label.hasNewBackground()) { |
10 | 228 cell.setBackground(label.getBackground()); |
229 } | |
90 | 230 if (colorProvider !is null || label.hasNewForeground()) { |
10 | 231 cell.setForeground(label.getForeground()); |
232 } | |
90 | 233 if (fontProvider !is null || label.hasNewFont()) { |
10 | 234 cell.setFont(label.getFont()); |
235 } | |
236 } | |
237 } |