1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.seasar.uruma.renderer.impl;
17
18 import java.util.List;
19
20 import org.eclipse.swt.SWT;
21 import org.eclipse.swt.custom.CTabFolder;
22 import org.eclipse.swt.graphics.Color;
23 import org.seasar.uruma.annotation.RenderingPolicy.ConversionType;
24 import org.seasar.uruma.component.jface.CTabFolderComponent;
25 import org.seasar.uruma.component.jface.GradientInfo;
26 import org.seasar.uruma.component.jface.GradientItem;
27 import org.seasar.uruma.context.PartContext;
28 import org.seasar.uruma.context.WidgetHandle;
29 import org.seasar.uruma.renderer.RendererSupportUtil;
30
31
32
33
34
35
36 public class CTabFolderRenderer extends
37 AbstractCompositeRenderer<CTabFolderComponent, CTabFolder> {
38
39
40
41
42
43 @Override
44 protected void doRenderComposite(
45 final CTabFolderComponent controlComponent, final CTabFolder control) {
46 setSelectionBackground(controlComponent, control);
47 }
48
49
50
51
52
53
54
55 @Override
56 protected void doRenderAfter(final CTabFolder widget,
57 final CTabFolderComponent uiComponent, final WidgetHandle parent,
58 final PartContext context) {
59 setSelection(uiComponent, widget);
60 }
61
62 private void setSelectionBackground(
63 final CTabFolderComponent controlComponent, final CTabFolder control) {
64 GradientInfo gradientInfo = controlComponent
65 .getSelectionBackgroundGradient();
66 if (gradientInfo != null) {
67 List<GradientItem> gradientItems = gradientInfo.getGradientItems();
68 Color[] colors = new Color[gradientItems.size() + 1];
69 int[] percents = new int[gradientItems.size()];
70 colors[0] = ((Color) RendererSupportUtil.convertValue(
71 controlComponent, gradientInfo.startColor,
72 ConversionType.COLOR));
73 int i = 0;
74 for (GradientItem item : gradientItems) {
75 colors[i + 1] = ((Color) RendererSupportUtil.convertValue(
76 controlComponent, item.color, ConversionType.COLOR));
77 percents[i] = ((Integer) RendererSupportUtil.convertValue(
78 controlComponent, item.percent, ConversionType.INT));
79 i++;
80 }
81 Boolean vertical = (Boolean) RendererSupportUtil.convertValue(
82 controlComponent, gradientInfo.vertical,
83 ConversionType.BOOLEAN);
84 control.setSelectionBackground(colors, percents, vertical);
85 } else {
86 String value = controlComponent.selectionBackground;
87 if (value == null) {
88 return;
89 }
90 Color color = (Color) RendererSupportUtil.convertValue(
91 controlComponent, value, ConversionType.COLOR);
92 control.setSelectionBackground(color);
93 }
94 }
95
96 private void setSelection(final CTabFolderComponent controlComponent,
97 final CTabFolder control) {
98 String value = controlComponent.selection;
99 if (value == null) {
100 return;
101 }
102 control.setSelection(Integer.parseInt(value));
103 }
104
105
106
107
108 @Override
109 protected int getDefaultStyle() {
110 return SWT.BORDER;
111 }
112
113
114
115
116 @Override
117 protected Class<CTabFolder> getWidgetType() {
118 return CTabFolder.class;
119 }
120 }