1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.seasar.uruma.binding.enables;
17
18 import java.util.HashMap;
19 import java.util.Map;
20
21 import org.eclipse.jface.viewers.ComboViewer;
22 import org.eclipse.jface.viewers.TableViewer;
23 import org.eclipse.jface.viewers.TreeViewer;
24 import org.seasar.uruma.binding.enables.impl.ViewerEnablesDependingListener;
25 import org.seasar.uruma.context.WidgetHandle;
26 import org.seasar.uruma.exception.EnablesDependingException;
27 import org.seasar.uruma.util.AssertionUtil;
28 import org.seasar.uruma.util.ClassUtil;
29
30
31
32
33
34
35 public class EnablesDependingListenerFactory {
36
37 private static final Map<Class<?>, Class<? extends EnablesDependingListener>> listenerMap = new HashMap<Class<?>, Class<? extends EnablesDependingListener>>();
38
39 static {
40 addListener(TableViewer.class, ViewerEnablesDependingListener.class);
41 addListener(TreeViewer.class, ViewerEnablesDependingListener.class);
42 addListener(ComboViewer.class, ViewerEnablesDependingListener.class);
43 }
44
45 private EnablesDependingListenerFactory() {
46
47 }
48
49
50
51
52
53
54
55
56
57
58
59
60
61 public static EnablesDependingListener getListener(
62 final WidgetHandle target, final WidgetHandle enabled,
63 final EnablesForType type) {
64 Class<? extends EnablesDependingListener> listenerType = listenerMap
65 .get(target.getWidgetClass());
66
67 if (listenerType != null) {
68 return ClassUtil.newInstance(listenerType, target, enabled, type);
69 } else {
70 throw new EnablesDependingException(target.getWidgetClass());
71 }
72 }
73
74
75
76
77
78
79
80
81
82
83 public static void addListener(final Class<?> clazz,
84 final Class<? extends EnablesDependingListener> listenerType) {
85 AssertionUtil.assertNotNull("clazz", clazz);
86 AssertionUtil.assertNotNull("listenerType", listenerType);
87
88 listenerMap.put(clazz, listenerType);
89 }
90 }