View Javadoc

1   /*
2    * Copyright 2004-2008 the Seasar Foundation and the Others.
3    *
4    * Licensed under the Apache License, Version 2.0 (the "License");
5    * you may not use this file except in compliance with the License.
6    * You may obtain a copy of the License at
7    *
8    *     http://www.apache.org/licenses/LICENSE-2.0
9    *
10   * Unless required by applicable law or agreed to in writing, software
11   * distributed under the License is distributed on an "AS IS" BASIS,
12   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, 
13   * either express or implied. See the License for the specific language
14   * governing permissions and limitations under the License.
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   * {@link CTabFolder} のレンダリングを行うクラスです。<br />
33   * 
34   * @author bskuroneko
35   */
36  public class CTabFolderRenderer extends
37          AbstractCompositeRenderer<CTabFolderComponent, CTabFolder> {
38  
39      /*
40       * @see org.seasar.uruma.renderer.impl.AbstractCompositeRenderer#doRenderComposite(org.seasar.uruma.component.jface.CompositeComponent,
41       *      org.eclipse.swt.widgets.Composite)
42       */
43      @Override
44      protected void doRenderComposite(
45              final CTabFolderComponent controlComponent, final CTabFolder control) {
46          setSelectionBackground(controlComponent, control);
47      }
48  
49      /*
50       * @see org.seasar.uruma.renderer.impl.AbstractWidgetRenderer#doRenderAfter(org.eclipse.swt.widgets.Widget,
51       *      org.seasar.uruma.component.UIComponent,
52       *      org.seasar.uruma.context.WidgetHandle,
53       *      org.seasar.uruma.context.PartContext)
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      * @see org.seasar.uruma.renderer.impl.AbstractRenderer#getDefaultStyle()
107      */
108     @Override
109     protected int getDefaultStyle() {
110         return SWT.BORDER;
111     }
112 
113     /*
114      * @see org.seasar.uruma.renderer.impl.AbstractWidgetRenderer#getWidgetType()
115      */
116     @Override
117     protected Class<CTabFolder> getWidgetType() {
118         return CTabFolder.class;
119     }
120 }