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.jface.viewers.IBaseLabelProvider;
21  import org.eclipse.jface.viewers.TableViewer;
22  import org.eclipse.jface.viewers.ViewerComparator;
23  import org.eclipse.swt.SWT;
24  import org.eclipse.swt.widgets.Table;
25  import org.seasar.uruma.annotation.RenderingPolicy.ConversionType;
26  import org.seasar.uruma.component.UICompositeComponent;
27  import org.seasar.uruma.component.UIElement;
28  import org.seasar.uruma.component.jface.TableComponent;
29  import org.seasar.uruma.component.jface.TableItemComponent;
30  import org.seasar.uruma.context.PartContext;
31  import org.seasar.uruma.context.WidgetHandle;
32  import org.seasar.uruma.renderer.RendererSupportUtil;
33  import org.seasar.uruma.viewer.GenericTableLabelProvider;
34  import org.seasar.uruma.viewer.GenericTableViewerComparator;
35  import org.seasar.uruma.viewer.PojoLabelProvider;
36  import org.seasar.uruma.viewer.PojoTableLabelProvider;
37  
38  /**
39   * {@link TableViewer} のレンダリングを行うクラスです。<br />
40   * 
41   * @author bskuroneko
42   */
43  public class TableViewerRenderer extends
44          AbstractViewerRenderer<TableComponent, TableViewer, Table> {
45      /*
46       * @see org.seasar.uruma.renderer.impl.AbstractViewerRenderer#canCreateViewer(org.seasar.uruma.component.UICompositeComponent)
47       */
48      @Override
49      protected boolean canCreateViewer(final UICompositeComponent component) {
50          // TableItemComponent が存在する場合、Viewer を生成しない
51          List<UIElement> children = component.getChildren();
52          for (UIElement child : children) {
53              if (child instanceof TableItemComponent) {
54                  return false;
55              }
56          }
57          return true;
58      }
59  
60      /*
61       * @see org.seasar.uruma.renderer.impl.AbstractViewerRenderer#doRenderAfter(org.eclipse.jface.viewers.Viewer,
62       *      org.seasar.uruma.component.jface.CompositeComponent,
63       *      org.seasar.uruma.context.WidgetHandle,
64       *      org.seasar.uruma.context.PartContext)
65       */
66      @Override
67      protected void doRenderAfter(final TableViewer viewer,
68              final TableComponent uiComponent, final WidgetHandle parent,
69              final PartContext context) {
70          // TODO ISelection を用いた設定に変更する
71          String selection = uiComponent.selection;
72          if (selection != null) {
73              Table table = viewer.getTable();
74              table.setSelection((int[]) RendererSupportUtil.convertValue(
75                      uiComponent, selection, ConversionType.INT_ARRAY));
76          }
77      }
78  
79      /*
80       * @see org.seasar.uruma.renderer.impl.AbstractWidgetRenderer#getWidgetType()
81       */
82      @Override
83      protected Class<Table> getWidgetType() {
84          return Table.class;
85      }
86  
87      /*
88       * @see org.seasar.uruma.renderer.impl.AbstractRenderer#getDefaultStyle()
89       */
90      @Override
91      protected int getDefaultStyle() {
92          return SWT.FULL_SELECTION | SWT.MULTI | SWT.BORDER;
93      }
94  
95      /*
96       * @see org.seasar.uruma.renderer.impl.AbstractViewerRenderer#getViewerType()
97       */
98      @Override
99      protected Class<TableViewer> getViewerType() {
100         return TableViewer.class;
101     }
102 
103     /*
104      * @see org.seasar.uruma.renderer.impl.AbstractViewerRenderer#getDefaultLabelProvider()
105      */
106     @Override
107     protected IBaseLabelProvider getDefaultLabelProvider() {
108         return new GenericTableLabelProvider();
109     }
110 
111     /*
112      * @see org.seasar.uruma.renderer.impl.AbstractViewerRenderer#getPojoLabelProviderClass()
113      */
114     @Override
115     protected Class<? extends PojoLabelProvider> getPojoLabelProviderClass() {
116         return PojoTableLabelProvider.class;
117     }
118 
119     /*
120      * @see org.seasar.uruma.renderer.impl.AbstractViewerRenderer#getDefaultComparator()
121      */
122     @Override
123     protected ViewerComparator getDefaultComparator() {
124         return new GenericTableViewerComparator();
125     }
126 }