1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 package org.seasar.uruma.binding.method.impl;
17
18 import org.eclipse.jface.viewers.StructuredViewer;
19 import org.seasar.uruma.annotation.EventListenerType;
20 import org.seasar.uruma.binding.method.EventListenerDef;
21 import org.seasar.uruma.binding.method.GenericDoubleClickListener;
22 import org.seasar.uruma.binding.method.GenericSelectionChangedListener;
23 import org.seasar.uruma.binding.method.ListenerBinder;
24 import org.seasar.uruma.binding.method.MethodBinding;
25 import org.seasar.uruma.context.PartContext;
26 import org.seasar.uruma.context.WidgetHandle;
27
28
29
30
31
32
33 public class StructuredViewerListenerBinder implements ListenerBinder {
34 private static final EventListenerType[] SUPPORT_TYPES = new EventListenerType[] {
35 EventListenerType.SELECTION, EventListenerType.MOUSE_DOUBLE_CLICK };
36
37
38
39
40
41
42
43 public Class<?> bindListener(final WidgetHandle handle,
44 final PartContext context, final MethodBinding binding,
45 final EventListenerDef def) {
46 StructuredViewer viewer = handle.<StructuredViewer> getCastWidget();
47 if (def.getType() == EventListenerType.SELECTION) {
48 GenericSelectionChangedListener listener = new GenericSelectionChangedListener(
49 context, binding);
50 viewer.addSelectionChangedListener(listener);
51 return GenericSelectionChangedListener.class;
52 } else if (def.getType() == EventListenerType.MOUSE_DOUBLE_CLICK) {
53 GenericDoubleClickListener listener = new GenericDoubleClickListener(
54 context, binding);
55 viewer.addDoubleClickListener(listener);
56 return GenericDoubleClickListener.class;
57 }
58 return null;
59 }
60
61
62
63
64 public EventListenerType[] getEventTypes() {
65 return SUPPORT_TYPES;
66 }
67
68
69
70
71 public Class<?> getTargetCLass() {
72 return StructuredViewer.class;
73 }
74
75 }