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.jface.viewers.ComboViewer;
21 import org.eclipse.jface.viewers.IBaseLabelProvider;
22 import org.eclipse.jface.viewers.IContentProvider;
23 import org.eclipse.swt.SWT;
24 import org.eclipse.swt.widgets.Combo;
25 import org.seasar.uruma.component.jface.ComboComponent;
26 import org.seasar.uruma.component.jface.SimpleItemComponent;
27 import org.seasar.uruma.context.PartContext;
28 import org.seasar.uruma.context.WidgetHandle;
29 import org.seasar.uruma.viewer.ContentsHolder;
30 import org.seasar.uruma.viewer.GenericLabelProvider;
31
32
33
34
35
36
37 public class ComboViewerRenderer extends
38 AbstractViewerRenderer<ComboComponent, ComboViewer, Combo> {
39
40
41
42
43 @Override
44 protected int getDefaultStyle() {
45 return SWT.SIMPLE;
46 }
47
48
49
50
51
52 @Override
53 protected void doRenderViewer(final ComboComponent uiComponent,
54 final ComboViewer viewer) {
55 setupItems(uiComponent, viewer);
56 }
57
58 @Override
59 protected void doRenderAfter(final ComboViewer viewer,
60 final ComboComponent uiComponent, final WidgetHandle parent,
61 final PartContext context) {
62 setupItems(uiComponent, viewer);
63 }
64
65
66
67
68 @Override
69 protected Class<Combo> getWidgetType() {
70 return Combo.class;
71 }
72
73
74
75
76 @Override
77 protected Class<ComboViewer> getViewerType() {
78 return ComboViewer.class;
79 }
80
81 private void setupItems(final ComboComponent comboComponent,
82 final ComboViewer viewer) {
83 List<SimpleItemComponent> itemList = comboComponent.getItems();
84
85 IContentProvider provider = viewer.getContentProvider();
86 if (provider != null && provider instanceof ContentsHolder) {
87 ContentsHolder holder = ContentsHolder.class.cast(provider);
88 holder.setContents(itemList);
89 } else {
90 for (SimpleItemComponent simpleItemComponent : itemList) {
91 viewer.add(simpleItemComponent);
92 }
93 }
94
95 viewer.setInput(itemList);
96 }
97
98
99
100
101 @Override
102 protected IBaseLabelProvider getDefaultLabelProvider() {
103 return new GenericLabelProvider();
104 }
105 }