Commit 09b3083 authored and committed Mar 14, 2025
1 parent 5fa9d29 commit 09b3083 Copy full SHA for 09b3083
File tree 8 files changed +118
-7
lines changed
bundles/org.eclipse.swt/Eclipse SWT
cocoa/org/eclipse/swt/widgets
common/org/eclipse/swt/widgets
gtk/org/eclipse/swt/widgets
win32/org/eclipse/swt/widgets
8 files changed +118
-7
lines changed Original file line number Diff line number Diff line change @@ -340,6 +340,7 @@ enum APPEARANCE {
340
340
static Display [] Displays = new Display [1 ];
341
341
342
342
/* Skinning support */
343
+ private RendererFactory rendererFactory ;
343
344
static final int GROW_SIZE = 1024 ;
344
345
Widget [] skinList = new Widget [GROW_SIZE ];
345
346
int skinCount ;
@@ -798,6 +799,8 @@ public Display () {
798
799
*/
799
800
public Display (DeviceData data ) {
800
801
super (data );
802
+
803
+ rendererFactory = new DefaultRendererFactory ();
801
804
}
802
805
803
806
static void checkDisplay (Thread thread , boolean multiple ) {
@@ -6867,4 +6870,13 @@ public boolean setRescalingAtRuntime(boolean activate) {
6867
6870
// not implemented for Cocoa
6868
6871
return false ;
6869
6872
}
6873
+
6874
+ public RendererFactory getRendererFactory () {
6875
+ return rendererFactory ;
6876
+ }
6877
+
6878
+ public void setRendererFactory (RendererFactory rendererFactory ) {
6879
+ if (rendererFactory == null ) SWT .error (SWT .ERROR_NULL_ARGUMENT );
6880
+ this .rendererFactory = rendererFactory ;
6881
+ }
6870
6882
}
Original file line number Diff line number Diff line change @@ -115,13 +115,14 @@ public Button(Composite parent, int style) {
115
115
super (parent , checkStyle (style ));
116
116
this .style |= SWT .DOUBLE_BUFFERED ;
117
117
118
+ final RendererFactory rendererFactory = parent .getDisplay ().getRendererFactory ();
118
119
renderer = (this .style & SWT .CHECK ) != 0
119
- ? new DefaultCheckboxRenderer (this )
120
+ ? rendererFactory . createCheckboxRenderer (this )
120
121
: (this .style & SWT .RADIO ) != 0
121
- ? new DefaultRadioButtonRenderer (this )
122
+ ? rendererFactory . createRadioButtonRenderer (this )
122
123
: (this .style & SWT .ARROW ) != 0
123
- ? new DefaultArrowButtonRenderer (this )
124
- : new DefaultButtonRenderer (this );
124
+ ? rendererFactory . createArrowButtonRenderer (this )
125
+ : rendererFactory . createPushToggleButtonRenderer (this );
125
126
126
127
Listener listener = event -> {
127
128
switch (event .type ) {
Original file line number Diff line number Diff line change
1
+ /*******************************************************************************
2
+ * Copyright (c) 2025 Syntevo GmbH and others.
3
+ *
4
+ * This program and the accompanying materials
5
+ * are made available under the terms of the Eclipse Public License 2.0
6
+ * which accompanies this distribution, and is available at
7
+ * https://www.eclipse.org/legal/epl-2.0/
8
+ *
9
+ * SPDX-License-Identifier: EPL-2.0
10
+ *
11
+ * Contributors:
12
+ * Thomas Singer (Syntevo) - initial API and implementation
13
+ *******************************************************************************/
14
+ package org .eclipse .swt .widgets ;
15
+
16
+ public class DefaultRendererFactory implements RendererFactory {
17
+ @ Override
18
+ public ButtonRenderer createCheckboxRenderer (Button button ) {
19
+ return new DefaultCheckboxRenderer (button );
20
+ }
21
+
22
+ @ Override
23
+ public ButtonRenderer createRadioButtonRenderer (Button button ) {
24
+ return new DefaultRadioButtonRenderer (button );
25
+ }
26
+
27
+ @ Override
28
+ public ButtonRenderer createArrowButtonRenderer (Button button ) {
29
+ return new DefaultArrowButtonRenderer (button );
30
+ }
31
+
32
+ @ Override
33
+ public ButtonRenderer createPushToggleButtonRenderer (Button button ) {
34
+ return new DefaultButtonRenderer (button );
35
+ }
36
+
37
+ @ Override
38
+ public ScaleRenderer createScaleRenderer (Scale scale ) {
39
+ return new DefaultScaleRenderer (scale );
40
+ }
41
+
42
+ @ Override
43
+ public LabelRenderer createLabelRenderer (Label label ) {
44
+ return new BasicLabelRenderer (label );
45
+ }
46
+ }
Original file line number Diff line number Diff line change @@ -107,7 +107,8 @@ public Label(Composite parent, int style) {
107
107
align = SWT .LEFT ;
108
108
}
109
109
110
- renderer = new BasicLabelRenderer (this );
110
+ final RendererFactory rendererFactory = parent .getDisplay ().getRendererFactory ();
111
+ renderer = rendererFactory .createLabelRenderer (this );
111
112
renderer .setAlign (align );
112
113
renderer .setForeground (getForeground ());
113
114
Original file line number Diff line number Diff line change
1
+ /*******************************************************************************
2
+ * Copyright (c) 2025 Syntevo GmbH and others.
3
+ *
4
+ * This program and the accompanying materials
5
+ * are made available under the terms of the Eclipse Public License 2.0
6
+ * which accompanies this distribution, and is available at
7
+ * https://www.eclipse.org/legal/epl-2.0/
8
+ *
9
+ * SPDX-License-Identifier: EPL-2.0
10
+ *
11
+ * Contributors:
12
+ * Thomas Singer (Syntevo) - initial API and implementation
13
+ *******************************************************************************/
14
+ package org .eclipse .swt .widgets ;
15
+
16
+ public interface RendererFactory {
17
+ ButtonRenderer createCheckboxRenderer (Button button );
18
+
19
+ ButtonRenderer createRadioButtonRenderer (Button button );
20
+
21
+ ButtonRenderer createArrowButtonRenderer (Button button );
22
+
23
+ ButtonRenderer createPushToggleButtonRenderer (Button button );
24
+
25
+ LabelRenderer createLabelRenderer (Label label );
26
+
27
+ ScaleRenderer createScaleRenderer (Scale scale );
28
+ }
Original file line number Diff line number Diff line change @@ -126,7 +126,8 @@ public Scale(Composite parent, int style) {
126
126
// re-add the horizontal/vertical flags
127
127
super .style |= horizontal ? SWT .HORIZONTAL : SWT .VERTICAL ;
128
128
129
- renderer = new DefaultScaleRenderer (this );
129
+ final RendererFactory rendererFactory = parent .getDisplay ().getRendererFactory ();
130
+ renderer = rendererFactory .createScaleRenderer (this );
130
131
}
131
132
132
133
Original file line number Diff line number Diff line change @@ -502,6 +502,7 @@ public void stop() {
502
502
static Display [] Displays = new Display [1 ];
503
503
504
504
/* Skinning support */
505
+ private RendererFactory rendererFactory ;
505
506
Widget [] skinList = new Widget [GROW_SIZE ];
506
507
int skinCount ;
507
508
@@ -631,6 +632,8 @@ public Display () {
631
632
*/
632
633
public Display (DeviceData data ) {
633
634
super (data );
635
+
636
+ rendererFactory = new DefaultRendererFactory ();
634
637
}
635
638
636
639
/**
@@ -6308,4 +6311,12 @@ public boolean setRescalingAtRuntime(boolean activate) {
6308
6311
return false ;
6309
6312
}
6310
6313
6314
+ public RendererFactory getRendererFactory () {
6315
+ return rendererFactory ;
6316
+ }
6317
+
6318
+ public void setRendererFactory (RendererFactory rendererFactory ) {
6319
+ if (rendererFactory == null ) SWT .error (SWT .ERROR_NULL_ARGUMENT );
6320
+ this .rendererFactory = rendererFactory ;
6321
+ }
6311
6322
}
Original file line number Diff line number Diff line change @@ -532,6 +532,7 @@ public class Display extends Device implements Executor {
532
532
static int SWT_OPENDOC ;
533
533
534
534
/* Skinning support */
535
+ private RendererFactory rendererFactory ;
535
536
Widget [] skinList = new Widget [GROW_SIZE ];
536
537
int skinCount ;
537
538
@@ -557,7 +558,6 @@ public class Display extends Device implements Executor {
557
558
CommonWidgetsDPIChangeHandlers .registerCommonHandlers ();
558
559
}
559
560
560
-
561
561
/*
562
562
* TEMPORARY CODE.
563
563
*/
@@ -595,6 +595,8 @@ public Display () {
595
595
*/
596
596
public Display (DeviceData data ) {
597
597
super (data );
598
+
599
+ rendererFactory = new DefaultRendererFactory ();
598
600
}
599
601
600
602
Control _getFocusControl () {
@@ -5395,4 +5397,13 @@ private void runWithProperDPIAwareness(Runnable operation) {
5395
5397
operation .run ();
5396
5398
}
5397
5399
}
5400
+
5401
+ public RendererFactory getRendererFactory () {
5402
+ return rendererFactory ;
5403
+ }
5404
+
5405
+ public void setRendererFactory (RendererFactory rendererFactory ) {
5406
+ if (rendererFactory == null ) SWT .error (SWT .ERROR_NULL_ARGUMENT );
5407
+ this .rendererFactory = rendererFactory ;
5408
+ }
5398
5409
}
You can’t perform that action at this time.
0 commit comments