comparison dwtx/draw2d/ButtonBorder.d @ 102:0de61c6f08ca

Reduce static ctors
author Frank Benoit <benoit@tionex.de>
date Sun, 03 Aug 2008 03:07:30 +0200
parents 95307ad235d9
children 2d6540440fe6
comparison
equal deleted inserted replaced
101:1082a0fc2bb8 102:0de61c6f08ca
42 alias SchemeBorder.paint paint; 42 alias SchemeBorder.paint paint;
43 /** 43 /**
44 * Default button border. 44 * Default button border.
45 * @see SCHEMES#BUTTON 45 * @see SCHEMES#BUTTON
46 */ 46 */
47 public static const Border BUTTON; 47 private static const Border BUTTON_;
48 public static ButtonScheme BUTTON(){
49 if( BUTTON_ is null ){
50 synchronized( ButtonScheme.classinfo ){
51 if( BUTTON_ is null ){
52 BUTTON_ = new ButtonBorder(SCHEMES.BUTTON);
53 }
54 }
55 }
56 return BUTTON_;
57 }
48 /** 58 /**
49 * Inverted hightlight colors from BUTTON. 59 * Inverted hightlight colors from BUTTON.
50 * @see SCHEMES#BUTTON_CONTRAST 60 * @see SCHEMES#BUTTON_CONTRAST
51 */ 61 */
52 public static const Border BUTTON_CONTRAST; 62 private static const Border BUTTON_CONTRAST_;
63 public static ButtonScheme BUTTON_CONTRAST(){
64 if( BUTTON_CONTRAST_ is null ){
65 synchronized( ButtonScheme.classinfo ){
66 if( BUTTON_CONTRAST_ is null ){
67 BUTTON_CONTRAST_ = new ButtonBorder(SCHEMES.BUTTON_CONTRAST);
68 }
69 }
70 }
71 return BUTTON_CONTRAST_;
72 }
53 /** 73 /**
54 * Used for scrollbar buttons. 74 * Used for scrollbar buttons.
55 * @see SCHEMES#BUTTON_SCROLLBAR 75 * @see SCHEMES#BUTTON_SCROLLBAR
56 */ 76 */
57 public static const Border BUTTON_SCROLLBAR; 77 private static const Border BUTTON_SCROLLBAR_;
78 public static ButtonScheme BUTTON_SCROLLBAR(){
79 if( BUTTON_SCROLLBAR_ is null ){
80 synchronized( ButtonScheme.classinfo ){
81 if( BUTTON_SCROLLBAR_ is null ){
82 BUTTON_SCROLLBAR_ = new ButtonBorder(SCHEMES.BUTTON_SCROLLBAR);
83 }
84 }
85 }
86 return BUTTON_SCROLLBAR_;
87 }
58 /** 88 /**
59 * Used for toolbar buttons. 89 * Used for toolbar buttons.
60 * @see SCHEMES#TOOLBAR 90 * @see SCHEMES#TOOLBAR
61 */ 91 */
62 public static const Border TOOLBAR; 92 private static const Border TOOLBAR_;
63 93 public static ButtonScheme TOOLBAR(){
64 static this(){ 94 if( TOOLBAR_ is null ){
65 BUTTON = new ButtonBorder(SCHEMES.BUTTON); 95 synchronized( ButtonScheme.classinfo ){
66 BUTTON_CONTRAST = new ButtonBorder(SCHEMES.BUTTON_CONTRAST); 96 if( TOOLBAR_ is null ){
67 BUTTON_SCROLLBAR = new ButtonBorder(SCHEMES.BUTTON_SCROLLBAR); 97 TOOLBAR_ = new ButtonBorder(SCHEMES.TOOLBAR);
68 TOOLBAR = new ButtonBorder(SCHEMES.TOOLBAR); 98 }
99 }
100 }
101 return TOOLBAR_;
69 } 102 }
70 103
71 /** 104 /**
72 * Provides for a scheme to represent the borders of clickable figures like buttons. 105 * Provides for a scheme to represent the borders of clickable figures like buttons.
73 * Though similar to the {@link SchemeBorder.Scheme Scheme} it supports an extra set of 106 * Though similar to the {@link SchemeBorder.Scheme Scheme} it supports an extra set of
191 public struct SCHEMES { 224 public struct SCHEMES {
192 225
193 /** 226 /**
194 * Contrast button scheme 227 * Contrast button scheme
195 */ 228 */
196 static const ButtonScheme BUTTON_CONTRAST; 229 private static const ButtonScheme BUTTON_CONTRAST_;
230 static ButtonScheme BUTTON_CONTRAST(){
231 if( BUTTON_CONTRAST_ is null ){
232 synchronized( ButtonScheme.classinfo ){
233 if( BUTTON_CONTRAST_ is null ){
234 BUTTON_CONTRAST_ = new ButtonScheme(
235 [ColorConstants.button, ColorConstants.buttonLightest],
236 DARKEST_DARKER
237 );
238 }
239 }
240 }
241 return BUTTON_CONTRAST_;
242 }
197 /** 243 /**
198 * Regular button scheme 244 * Regular button scheme
199 */ 245 */
200 static const ButtonScheme BUTTON; 246 private static const ButtonScheme BUTTON_;
247 static ButtonScheme BUTTON(){
248 if( BUTTON_ is null ){
249 synchronized( ButtonScheme.classinfo ){
250 if( BUTTON_ is null ){
251 BUTTON_ = new ButtonScheme(
252 [ColorConstants.buttonLightest],
253 DARKEST_DARKER
254 );
255 }
256 }
257 }
258 return BUTTON_;
259 }
201 /** 260 /**
202 * Toolbar button scheme 261 * Toolbar button scheme
203 */ 262 */
204 static const ButtonScheme TOOLBAR; 263 private static const ButtonScheme TOOLBAR_;
264 static ButtonScheme TOOLBAR(){
265 if( TOOLBAR_ is null ){
266 synchronized( ButtonScheme.classinfo ){
267 if( TOOLBAR_ is null ){
268 TOOLBAR_ = new ButtonScheme(
269 [ColorConstants.buttonLightest],
270 [ColorConstants.buttonDarker]
271 );
272 }
273 }
274 }
275 return TOOLBAR_;
276 }
205 /** 277 /**
206 * Scrollbar button scheme 278 * Scrollbar button scheme
207 */ 279 */
208 static const ButtonScheme BUTTON_SCROLLBAR; 280 private static const ButtonScheme BUTTON_SCROLLBAR_;
209 static this(){ 281 static ButtonScheme BUTTON_SCROLLBAR(){
210 BUTTON_CONTRAST = new ButtonScheme( 282 if( BUTTON_SCROLLBAR_ is null ){
211 [ColorConstants.button, ColorConstants.buttonLightest], 283 synchronized( ButtonScheme.classinfo ){
212 DARKEST_DARKER 284 if( BUTTON_SCROLLBAR_ is null ){
213 ); 285 BUTTON_SCROLLBAR_ = new ButtonScheme(
214 BUTTON = new ButtonScheme( 286 [ColorConstants.button, ColorConstants.buttonLightest],
215 [ColorConstants.buttonLightest], 287 DARKEST_DARKER,
216 DARKEST_DARKER 288 [ColorConstants.buttonDarker],
217 ); 289 [ColorConstants.buttonDarker]
218 TOOLBAR = new ButtonScheme( 290 );
219 [ColorConstants.buttonLightest], 291 }
220 [ColorConstants.buttonDarker] 292 }
221 ); 293 }
222 BUTTON_SCROLLBAR = new ButtonScheme( 294 return BUTTON_SCROLLBAR_;
223 [ColorConstants.button, ColorConstants.buttonLightest], 295 }
224 DARKEST_DARKER,
225 [ColorConstants.buttonDarker],
226 [ColorConstants.buttonDarker]
227 );
228 }
229 } 296 }
230 297
231 /** 298 /**
232 * Constructs a ButtonBorder with a predefined button scheme set as its default. 299 * Constructs a ButtonBorder with a predefined button scheme set as its default.
233 * 300 *