1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.seasar.uruma.binding.value;
17
18 import java.util.HashMap;
19 import java.util.Map;
20
21 import org.eclipse.swt.widgets.Button;
22 import org.eclipse.swt.widgets.Label;
23 import org.eclipse.swt.widgets.Spinner;
24 import org.eclipse.swt.widgets.Text;
25 import org.seasar.uruma.binding.value.binder.BrowserValueBinder;
26 import org.seasar.uruma.binding.value.binder.ComboViewerValueBinder;
27 import org.seasar.uruma.binding.value.binder.DateTimeValueBinder;
28 import org.seasar.uruma.binding.value.binder.GenericValueBinder;
29 import org.seasar.uruma.binding.value.binder.StatusLineManagerValueBinder;
30 import org.seasar.uruma.binding.value.binder.TableValueBinder;
31 import org.seasar.uruma.binding.value.binder.TableViewerValueBinder;
32 import org.seasar.uruma.binding.value.binder.TreeViewerValueBinder;
33 import org.seasar.uruma.core.UrumaMessageCodes;
34 import org.seasar.uruma.log.UrumaLogger;
35 import org.seasar.uruma.util.AssertionUtil;
36
37
38
39
40
41
42 public class ValueBinderFactory implements UrumaMessageCodes {
43 private static final UrumaLogger logger = UrumaLogger
44 .getLogger(ValueBinderFactory.class);
45
46 private static final Map<Class<?>, ValueBinder> binderMap = new HashMap<Class<?>, ValueBinder>();
47
48 static {
49 addValueBinder(new GenericValueBinder<Label>(Label.class, "text"));
50 addValueBinder(new GenericValueBinder<Text>(Text.class, "text"));
51 addValueBinder(new GenericValueBinder<Spinner>(Spinner.class,
52 "selection"));
53 addValueBinder(new GenericValueBinder<Button>(Button.class, "selection"));
54 addValueBinder(new ComboViewerValueBinder());
55 addValueBinder(new TableViewerValueBinder());
56 addValueBinder(new TableValueBinder());
57 addValueBinder(new TreeViewerValueBinder());
58 addValueBinder(new StatusLineManagerValueBinder());
59 addValueBinder(new BrowserValueBinder());
60 addValueBinder(new DateTimeValueBinder());
61 }
62
63
64
65
66
67
68
69
70
71 public static ValueBinder getValueBinder(final Class<?> widgetClass) {
72 ValueBinder binder = binderMap.get(widgetClass);
73 if (binder == null) {
74 logger.log(VALUE_BINDER_NOT_FOUND, widgetClass.getName());
75 }
76 return binder;
77 }
78
79
80
81
82
83
84
85 public static void addValueBinder(final ValueBinder valueBinder) {
86 AssertionUtil.assertNotNull("valueBinder", valueBinder);
87 Class<?> widgetClass = valueBinder.getWidgetType();
88 AssertionUtil.assertNotNull("widgetClass", widgetClass);
89
90 binderMap.put(widgetClass, valueBinder);
91 }
92 }