28
|
1 /*******************************************************************************
|
|
2 * Copyright (c) 2000, 2007 IBM Corporation and others.
|
|
3 * All rights reserved. This program and the accompanying materials
|
|
4 * are made available under the terms of the Eclipse Public License v1.0
|
|
5 * which accompanies this distribution, and is available at
|
|
6 * http://www.eclipse.org/legal/epl-v10.html
|
|
7 *
|
|
8 * Contributors:
|
|
9 * IBM Corporation - initial API and implementation
|
|
10 *******************************************************************************/
|
|
11 module dwt.widgets.TypedListener;
|
|
12
|
|
13
|
|
14 import dwt.internal.SWTEventListener;
|
|
15 import dwt.SWT;
|
|
16 import dwt.widgets.Listener;
|
|
17 import dwt.widgets.Event;
|
|
18 import dwt.events.ArmEvent;
|
|
19 import dwt.events.ArmListener;
|
|
20 import dwt.events.ControlEvent;
|
|
21 import dwt.events.ControlListener;
|
|
22 import dwt.events.DisposeEvent;
|
|
23 import dwt.events.DisposeListener;
|
|
24 import dwt.events.DragDetectEvent;
|
|
25 import dwt.events.DragDetectListener;
|
|
26 import dwt.events.ExpandEvent;
|
|
27 import dwt.events.ExpandListener;
|
|
28 import dwt.events.FocusEvent;
|
|
29 import dwt.events.FocusListener;
|
|
30 import dwt.events.HelpEvent;
|
|
31 import dwt.events.HelpListener;
|
|
32 import dwt.events.KeyEvent;
|
|
33 import dwt.events.KeyListener;
|
|
34 import dwt.events.MenuEvent;
|
|
35 import dwt.events.MenuListener;
|
|
36 import dwt.events.MenuDetectEvent;
|
|
37 import dwt.events.MenuDetectListener;
|
|
38 import dwt.events.ModifyEvent;
|
|
39 import dwt.events.ModifyListener;
|
|
40 import dwt.events.MouseEvent;
|
|
41 import dwt.events.MouseListener;
|
|
42 import dwt.events.MouseMoveListener;
|
|
43 import dwt.events.MouseTrackListener;
|
|
44 import dwt.events.MouseWheelListener;
|
|
45 import dwt.events.PaintEvent;
|
|
46 import dwt.events.PaintListener;
|
|
47 import dwt.events.SelectionEvent;
|
|
48 import dwt.events.SelectionListener;
|
|
49 import dwt.events.ShellEvent;
|
|
50 import dwt.events.ShellListener;
|
|
51 import dwt.events.TraverseEvent;
|
|
52 import dwt.events.TraverseListener;
|
|
53 import dwt.events.TreeEvent;
|
|
54 import dwt.events.TreeListener;
|
|
55 import dwt.events.VerifyEvent;
|
|
56 import dwt.events.VerifyListener;
|
|
57 import dwt.graphics.GC;
|
|
58
|
|
59
|
|
60 /**
|
|
61 * Instances of this class are <em>internal SWT implementation</em>
|
|
62 * objects which provide a mapping between the typed and untyped
|
|
63 * listener mechanisms that SWT supports.
|
|
64 * <p>
|
|
65 * <b>IMPORTANT:</b> This class is <em>not</em> part of the SWT
|
|
66 * public API. It is marked public only so that it can be shared
|
|
67 * within the packages provided by SWT. It should never be
|
|
68 * referenced from application code.
|
|
69 * </p>
|
|
70 *
|
|
71 * @see Listener
|
|
72 */
|
|
73 public class TypedListener : Listener {
|
|
74
|
|
75 /**
|
|
76 * The receiver's event listener
|
|
77 */
|
|
78 protected SWTEventListener eventListener;
|
|
79
|
|
80 /**
|
|
81 * Constructs a new instance of this class for the given event listener.
|
|
82 * <p>
|
|
83 * <b>IMPORTANT:</b> This method is <em>not</em> part of the SWT
|
|
84 * public API. It is marked public only so that it can be shared
|
|
85 * within the packages provided by SWT. It should never be
|
|
86 * referenced from application code.
|
|
87 * </p>
|
|
88 *
|
|
89 * @param listener the event listener to store in the receiver
|
|
90 */
|
|
91 public this (SWTEventListener listener) {
|
|
92 eventListener = listener;
|
|
93 }
|
|
94
|
|
95 /**
|
|
96 * Returns the receiver's event listener.
|
|
97 * <p>
|
|
98 * <b>IMPORTANT:</b> This method is <em>not</em> part of the SWT
|
|
99 * public API. It is marked public only so that it can be shared
|
|
100 * within the packages provided by SWT. It should never be
|
|
101 * referenced from application code.
|
|
102 * </p>
|
|
103 *
|
|
104 * @return the receiver's event listener
|
|
105 */
|
|
106 public SWTEventListener getEventListener () {
|
|
107 return eventListener;
|
|
108 }
|
|
109
|
|
110 /**
|
|
111 * Handles the given event.
|
|
112 * <p>
|
|
113 * <b>IMPORTANT:</b> This method is <em>not</em> part of the SWT
|
|
114 * public API. It is marked public only so that it can be shared
|
|
115 * within the packages provided by SWT. It should never be
|
|
116 * referenced from application code.
|
|
117 * </p>
|
|
118 * @param e the event to handle
|
|
119 */
|
|
120 public void handleEvent (Event e) {
|
|
121 switch (e.type) {
|
|
122 case SWT.Activate: {
|
|
123 (cast(ShellListener) eventListener).shellActivated(new ShellEvent(e));
|
|
124 break;
|
|
125 }
|
|
126 case SWT.Arm: {
|
|
127 (cast(ArmListener) eventListener).widgetArmed (new ArmEvent (e));
|
|
128 break;
|
|
129 }
|
|
130 case SWT.Close: {
|
|
131 /* Fields set by Decorations */
|
|
132 ShellEvent event = new ShellEvent (e);
|
|
133 (cast(ShellListener) eventListener).shellClosed(event);
|
|
134 e.doit = event.doit;
|
|
135 break;
|
|
136 }
|
|
137 case SWT.Collapse: {
|
|
138 if ( auto l = cast(TreeListener)eventListener ) {
|
|
139 l.treeCollapsed(new TreeEvent(e));
|
|
140 } else {
|
|
141 (cast(ExpandListener) eventListener).itemCollapsed(new ExpandEvent(e));
|
|
142 }
|
|
143 break;
|
|
144 }
|
|
145 case SWT.Deactivate: {
|
|
146 (cast(ShellListener) eventListener).shellDeactivated(new ShellEvent(e));
|
|
147 break;
|
|
148 }
|
|
149 case SWT.Deiconify: {
|
|
150 (cast(ShellListener) eventListener).shellDeiconified(new ShellEvent(e));
|
|
151 break;
|
|
152 }
|
|
153 case SWT.DefaultSelection: {
|
|
154 (cast(SelectionListener)eventListener).widgetDefaultSelected(new SelectionEvent(e));
|
|
155 break;
|
|
156 }
|
|
157 case SWT.Dispose: {
|
|
158 (cast(DisposeListener) eventListener).widgetDisposed(new DisposeEvent(e));
|
|
159 break;
|
|
160 }
|
|
161 case SWT.DragDetect: {
|
|
162 (cast(DragDetectListener) eventListener).dragDetected(new DragDetectEvent(e));
|
|
163 break;
|
|
164 }
|
|
165 case SWT.Expand: {
|
|
166 if (auto l = cast(TreeListener)eventListener ) {
|
|
167 l.treeExpanded(new TreeEvent(e));
|
|
168 } else {
|
|
169 (cast(ExpandListener) eventListener).itemExpanded(new ExpandEvent(e));
|
|
170 }
|
|
171 break;
|
|
172 }
|
|
173 case SWT.FocusIn: {
|
|
174 (cast(FocusListener) eventListener).focusGained(new FocusEvent(e));
|
|
175 break;
|
|
176 }
|
|
177 case SWT.FocusOut: {
|
|
178 (cast(FocusListener) eventListener).focusLost(new FocusEvent(e));
|
|
179 break;
|
|
180 }
|
|
181 case SWT.Help: {
|
|
182 (cast(HelpListener) eventListener).helpRequested (new HelpEvent (e));
|
|
183 break;
|
|
184 }
|
|
185 case SWT.Hide: {
|
|
186 (cast(MenuListener) eventListener).menuHidden(new MenuEvent(e));
|
|
187 break;
|
|
188 }
|
|
189 case SWT.Iconify: {
|
|
190 (cast(ShellListener) eventListener).shellIconified(new ShellEvent(e));
|
|
191 break;
|
|
192 }
|
|
193 case SWT.KeyDown: {
|
|
194 /* Fields set by Control */
|
|
195 KeyEvent event = new KeyEvent(e);
|
|
196 (cast(KeyListener) eventListener).keyPressed(event);
|
|
197 e.doit = event.doit;
|
|
198 break;
|
|
199 }
|
|
200 case SWT.KeyUp: {
|
|
201 /* Fields set by Control */
|
|
202 KeyEvent event = new KeyEvent(e);
|
|
203 (cast(KeyListener) eventListener).keyReleased(event);
|
|
204 e.doit = event.doit;
|
|
205 break;
|
|
206 }
|
|
207 case SWT.Modify: {
|
|
208 (cast(ModifyListener) eventListener).modifyText(new ModifyEvent(e));
|
|
209 break;
|
|
210 }
|
|
211 case SWT.MenuDetect: {
|
|
212 MenuDetectEvent event = new MenuDetectEvent(e);
|
|
213 (cast(MenuDetectListener) eventListener).menuDetected(event);
|
|
214 e.x = event.x;
|
|
215 e.y = event.y;
|
|
216 e.doit = event.doit;
|
|
217 break;
|
|
218 }
|
|
219 case SWT.MouseDown: {
|
|
220 (cast(MouseListener) eventListener).mouseDown(new MouseEvent(e));
|
|
221 break;
|
|
222 }
|
|
223 case SWT.MouseDoubleClick: {
|
|
224 (cast(MouseListener) eventListener).mouseDoubleClick(new MouseEvent(e));
|
|
225 break;
|
|
226 }
|
|
227 case SWT.MouseEnter: {
|
|
228 (cast(MouseTrackListener) eventListener).mouseEnter (new MouseEvent (e));
|
|
229 break;
|
|
230 }
|
|
231 case SWT.MouseExit: {
|
|
232 (cast(MouseTrackListener) eventListener).mouseExit (new MouseEvent (e));
|
|
233 break;
|
|
234 }
|
|
235 case SWT.MouseHover: {
|
|
236 (cast(MouseTrackListener) eventListener).mouseHover (new MouseEvent (e));
|
|
237 break;
|
|
238 }
|
|
239 case SWT.MouseMove: {
|
|
240 (cast(MouseMoveListener) eventListener).mouseMove(new MouseEvent(e));
|
|
241 return;
|
|
242 }
|
|
243 case SWT.MouseWheel: {
|
|
244 (cast(MouseWheelListener) eventListener).mouseScrolled(new MouseEvent(e));
|
|
245 return;
|
|
246 }
|
|
247 case SWT.MouseUp: {
|
|
248 (cast(MouseListener) eventListener).mouseUp(new MouseEvent(e));
|
|
249 break;
|
|
250 }
|
|
251 case SWT.Move: {
|
|
252 (cast(ControlListener) eventListener).controlMoved(new ControlEvent(e));
|
|
253 break;
|
|
254 }
|
|
255 case SWT.Paint: {
|
|
256 /* Fields set by Control */
|
|
257 PaintEvent event = new PaintEvent (e);
|
|
258 (cast(PaintListener) eventListener).paintControl (event);
|
|
259 e.gc = event.gc;
|
|
260 break;
|
|
261 }
|
|
262 case SWT.Resize: {
|
|
263 (cast(ControlListener) eventListener).controlResized(new ControlEvent(e));
|
|
264 break;
|
|
265 }
|
|
266 case SWT.Selection: {
|
|
267 /* Fields set by Sash */
|
|
268 SelectionEvent event = new SelectionEvent (e);
|
|
269 (cast(SelectionListener) eventListener).widgetSelected (event);
|
|
270 e.x = event.x;
|
|
271 e.y = event.y;
|
|
272 e.doit = event.doit;
|
|
273 break;
|
|
274 }
|
|
275 case SWT.Show: {
|
|
276 (cast(MenuListener) eventListener).menuShown(new MenuEvent(e));
|
|
277 break;
|
|
278 }
|
|
279 case SWT.Traverse: {
|
|
280 /* Fields set by Control */
|
|
281 TraverseEvent event = new TraverseEvent (e);
|
|
282 (cast(TraverseListener) eventListener).keyTraversed (event);
|
|
283 e.detail = event.detail;
|
|
284 e.doit = event.doit;
|
|
285 break;
|
|
286 }
|
|
287 case SWT.Verify: {
|
|
288 /* Fields set by Text, RichText */
|
|
289 VerifyEvent event = new VerifyEvent (e);
|
|
290 (cast(VerifyListener) eventListener).verifyText (event);
|
|
291 e.text = event.text;
|
|
292 e.doit = event.doit;
|
|
293 break;
|
|
294 }
|
|
295 }
|
|
296 }
|
|
297
|
|
298 }
|