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.custom.CTabItem;
21  import org.eclipse.swt.graphics.Font;
22  import org.eclipse.swt.widgets.Control;
23  import org.seasar.uruma.component.UIComponent;
24  import org.seasar.uruma.component.UIElement;
25  import org.seasar.uruma.component.jface.CTabItemComponent;
26  import org.seasar.uruma.context.PartContext;
27  import org.seasar.uruma.context.WidgetHandle;
28  import org.seasar.uruma.renderer.RendererSupportUtil;
29  
30  /**
31   * {@link CTabItem} のレンダリングを行うクラスです。<br />
32   * 
33   * @author bskuroneko
34   */
35  public class CTabItemRenderer extends
36          AbstractWidgetRenderer<CTabItemComponent, CTabItem> {
37  
38      /*
39       * @see org.seasar.uruma.renderer.impl.AbstractWidgetRenderer#doRender(org.seasar.uruma.component.UIComponent,
40       *      org.eclipse.swt.widgets.Widget)
41       */
42      @Override
43      protected void doRender(final CTabItemComponent controlComponent,
44              final CTabItem control) {
45          setFont(controlComponent, control);
46      }
47  
48      /*
49       * @see org.seasar.uruma.renderer.impl.AbstractWidgetRenderer#doRenderAfter(org.eclipse.swt.widgets.Widget,
50       *      org.seasar.uruma.component.UIComponent,
51       *      org.seasar.uruma.context.WidgetHandle,
52       *      org.seasar.uruma.context.PartContext)
53       */
54      @Override
55      protected void doRenderAfter(final CTabItem widget,
56              final CTabItemComponent uiComponent, final WidgetHandle parent,
57              final PartContext context) {
58          setControl(widget, uiComponent);
59      }
60  
61      private void setFont(final CTabItemComponent controlComponent,
62              final CTabItem control) {
63          if (controlComponent.fontName == null
64                  && controlComponent.fontStyle == null
65                  && controlComponent.fontHeight == null) {
66              return;
67          }
68          Font font = RendererSupportUtil.getFont(control.getFont(),
69                  controlComponent.fontName, controlComponent.fontStyle,
70                  controlComponent.fontHeight);
71          control.setFont(font);
72      }
73  
74      private void setControl(final CTabItem tabItem,
75              final CTabItemComponent tabItemComponent) {
76          List<UIElement> children = tabItemComponent.getChildren();
77  
78          for (UIElement child : children) {
79              if (child instanceof UIComponent) {
80                  String id = ((UIComponent) child).getId();
81  
82                  WidgetHandle handle = getContext().getWidgetHandle(id);
83                  tabItem.setControl((Control) handle.getWidget());
84  
85                  break;
86              }
87          }
88      }
89  
90      /*
91       * @see org.seasar.uruma.renderer.impl.AbstractWidgetRenderer#getWidgetType()
92       */
93      @Override
94      protected Class<CTabItem> getWidgetType() {
95          return CTabItem.class;
96      }
97  }