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.Iterator;
19  
20  import org.eclipse.swt.graphics.Color;
21  import org.eclipse.swt.graphics.Font;
22  import org.eclipse.swt.graphics.Image;
23  import org.eclipse.swt.widgets.TableItem;
24  import org.seasar.uruma.annotation.RenderingPolicy.ConversionType;
25  import org.seasar.uruma.component.jface.TableCellComponent;
26  import org.seasar.uruma.component.jface.TableItemComponent;
27  import org.seasar.uruma.renderer.RendererSupportUtil;
28  
29  /**
30   * {@link TableItem} のレンダリングを行うクラスです。<br />
31   * 
32   * @author bskuroneko
33   */
34  public class TableItemRenderer extends
35          AbstractWidgetRenderer<TableItemComponent, TableItem> {
36  
37      /*
38       * @see org.seasar.uruma.renderer.impl.AbstractWidgetRenderer#doRender(org.seasar.uruma.component.UIComponent,
39       *      org.eclipse.swt.widgets.Widget)
40       */
41      @Override
42      protected void doRender(final TableItemComponent uiComponent,
43              final TableItem widget) {
44          setFont(uiComponent, widget);
45          setImage(uiComponent, widget);
46          setText(uiComponent, widget);
47          renderCells(uiComponent, widget);
48      }
49  
50      private void setImage(final TableItemComponent uiComponent,
51              final TableItem widget) {
52          String strImage = uiComponent.image;
53          if (strImage == null) {
54              return;
55          }
56          Image image = (Image) RendererSupportUtil.convertValue(uiComponent,
57                  strImage, ConversionType.IMAGE);
58          widget.setImage(image);
59      }
60  
61      private void setText(final TableItemComponent uiComponent,
62              final TableItem widget) {
63          String text = uiComponent.text;
64          if (text == null) {
65              return;
66          }
67          String convertedText = (String) RendererSupportUtil.convertValue(
68                  uiComponent, text, ConversionType.TEXT);
69          widget.setText(convertedText);
70      }
71  
72      private void setFont(final TableItemComponent uiComponent,
73              final TableItem widget) {
74          if (uiComponent.fontName == null && uiComponent.fontStyle == null
75                  && uiComponent.fontHeight == null) {
76              return;
77          }
78          Font font = RendererSupportUtil.getFont(widget.getFont(),
79                  uiComponent.fontName, uiComponent.fontStyle,
80                  uiComponent.fontHeight);
81          widget.setFont(font);
82      }
83  
84      private void renderCells(final TableItemComponent uiComponent,
85              final TableItem widget) {
86          int index = 0;
87          for (Iterator<TableCellComponent> it = uiComponent.getTableCells()
88                  .iterator(); it.hasNext(); index++) {
89              TableCellComponent cell = it.next();
90              renderCell(index, cell, uiComponent, widget);
91          }
92      }
93  
94      private void renderCell(final int index, final TableCellComponent cell,
95              final TableItemComponent tableItemComponent,
96              final TableItem tableItem) {
97          setText(index, cell, tableItemComponent, tableItem);
98          setBackground(index, cell, tableItemComponent, tableItem);
99          setForeground(index, cell, tableItemComponent, tableItem);
100         setImage(index, cell, tableItemComponent, tableItem);
101         setFont(index, cell, tableItemComponent, tableItem);
102     }
103 
104     private void setText(final int index, final TableCellComponent cell,
105             final TableItemComponent tableItemComponent,
106             final TableItem tableItem) {
107         if (cell.text == null) {
108             return;
109         }
110         String text = (String) RendererSupportUtil.convertValue(
111                 tableItemComponent, cell.text, ConversionType.TEXT);
112         tableItem.setText(index, text);
113     }
114 
115     private void setBackground(final int index, final TableCellComponent cell,
116             final TableItemComponent tableItemComponent,
117             final TableItem tableItem) {
118         if (cell.background == null) {
119             return;
120         }
121         Color color = (Color) RendererSupportUtil.convertValue(
122                 tableItemComponent, cell.background, ConversionType.COLOR);
123         tableItem.setBackground(index, color);
124     }
125 
126     private void setForeground(final int index, final TableCellComponent cell,
127             final TableItemComponent tableItemComponent,
128             final TableItem tableItem) {
129         if (cell.foreground == null) {
130             return;
131         }
132         Color color = (Color) RendererSupportUtil.convertValue(
133                 tableItemComponent, cell.foreground, ConversionType.COLOR);
134         tableItem.setForeground(index, color);
135     }
136 
137     private void setImage(final int index, final TableCellComponent cell,
138             final TableItemComponent tableItemComponent,
139             final TableItem tableItem) {
140         if (cell.image == null) {
141             return;
142         }
143         Image image = (Image) RendererSupportUtil.convertValue(
144                 tableItemComponent, cell.image, ConversionType.IMAGE);
145         tableItem.setImage(index, image);
146     }
147 
148     private void setFont(final int index, final TableCellComponent cell,
149             final TableItemComponent tableItemComponent,
150             final TableItem tableItem) {
151         if (cell.fontName == null && cell.fontStyle == null
152                 && cell.fontHeight == null) {
153             return;
154         }
155         Font defaultFont = tableItem.getFont(index);
156         Font font = RendererSupportUtil.getFont(defaultFont, cell.fontName,
157                 cell.fontStyle, cell.fontHeight);
158         tableItem.setFont(index, font);
159     }
160 
161     /*
162      * @see org.seasar.uruma.renderer.impl.AbstractWidgetRenderer#getWidgetType()
163      */
164     @Override
165     protected Class<TableItem> getWidgetType() {
166         return TableItem.class;
167     }
168 
169 }