001: /*******************************************************************************
002: * Copyright (c) 2000, 2007 IBM Corporation and others.
003: * All rights reserved. This program and the accompanying materials
004: * are made available under the terms of the Eclipse Public License v1.0
005: * which accompanies this distribution, and is available at
006: * http://www.eclipse.org/legal/epl-v10.html
007: *
008: * Contributors:
009: * IBM Corporation - initial API and implementation
010: *******************************************************************************/package org.eclipse.swt.widgets;
011:
012: import org.eclipse.swt.internal.SWTEventListener;
013: import org.eclipse.swt.*;
014: import org.eclipse.swt.events.*;
015:
016: /**
017: * Instances of this class are <em>internal SWT implementation</em>
018: * objects which provide a mapping between the typed and untyped
019: * listener mechanisms that SWT supports.
020: * <p>
021: * <b>IMPORTANT:</b> This class is <em>not</em> part of the SWT
022: * public API. It is marked public only so that it can be shared
023: * within the packages provided by SWT. It should never be
024: * referenced from application code.
025: * </p>
026: *
027: * @see Listener
028: */
029: public class TypedListener implements Listener {
030:
031: /**
032: * The receiver's event listener
033: */
034: protected SWTEventListener eventListener;
035:
036: /**
037: * Constructs a new instance of this class for the given event listener.
038: * <p>
039: * <b>IMPORTANT:</b> This method is <em>not</em> part of the SWT
040: * public API. It is marked public only so that it can be shared
041: * within the packages provided by SWT. It should never be
042: * referenced from application code.
043: * </p>
044: *
045: * @param listener the event listener to store in the receiver
046: */
047: public TypedListener(SWTEventListener listener) {
048: eventListener = listener;
049: }
050:
051: /**
052: * Returns the receiver's event listener.
053: * <p>
054: * <b>IMPORTANT:</b> This method is <em>not</em> part of the SWT
055: * public API. It is marked public only so that it can be shared
056: * within the packages provided by SWT. It should never be
057: * referenced from application code.
058: * </p>
059: *
060: * @return the receiver's event listener
061: */
062: public SWTEventListener getEventListener() {
063: return eventListener;
064: }
065:
066: /**
067: * Handles the given event.
068: * <p>
069: * <b>IMPORTANT:</b> This method is <em>not</em> part of the SWT
070: * public API. It is marked public only so that it can be shared
071: * within the packages provided by SWT. It should never be
072: * referenced from application code.
073: * </p>
074: * @param e the event to handle
075: */
076: public void handleEvent(Event e) {
077: switch (e.type) {
078: case SWT.Activate: {
079: ((ShellListener) eventListener)
080: .shellActivated(new ShellEvent(e));
081: break;
082: }
083: case SWT.Arm: {
084: ((ArmListener) eventListener).widgetArmed(new ArmEvent(e));
085: break;
086: }
087: case SWT.Close: {
088: /* Fields set by Decorations */
089: ShellEvent event = new ShellEvent(e);
090: ((ShellListener) eventListener).shellClosed(event);
091: e.doit = event.doit;
092: break;
093: }
094: case SWT.Collapse: {
095: if (eventListener instanceof TreeListener) {
096: ((TreeListener) eventListener)
097: .treeCollapsed(new TreeEvent(e));
098: } else {
099: ((ExpandListener) eventListener)
100: .itemCollapsed(new ExpandEvent(e));
101: }
102: break;
103: }
104: case SWT.Deactivate: {
105: ((ShellListener) eventListener)
106: .shellDeactivated(new ShellEvent(e));
107: break;
108: }
109: case SWT.Deiconify: {
110: ((ShellListener) eventListener)
111: .shellDeiconified(new ShellEvent(e));
112: break;
113: }
114: case SWT.DefaultSelection: {
115: ((SelectionListener) eventListener)
116: .widgetDefaultSelected(new SelectionEvent(e));
117: break;
118: }
119: case SWT.Dispose: {
120: ((DisposeListener) eventListener)
121: .widgetDisposed(new DisposeEvent(e));
122: break;
123: }
124: case SWT.DragDetect: {
125: ((DragDetectListener) eventListener)
126: .dragDetected(new DragDetectEvent(e));
127: break;
128: }
129: case SWT.Expand: {
130: if (eventListener instanceof TreeListener) {
131: ((TreeListener) eventListener)
132: .treeExpanded(new TreeEvent(e));
133: } else {
134: ((ExpandListener) eventListener)
135: .itemExpanded(new ExpandEvent(e));
136: }
137: break;
138: }
139: case SWT.FocusIn: {
140: ((FocusListener) eventListener).focusGained(new FocusEvent(
141: e));
142: break;
143: }
144: case SWT.FocusOut: {
145: ((FocusListener) eventListener)
146: .focusLost(new FocusEvent(e));
147: break;
148: }
149: case SWT.Help: {
150: ((HelpListener) eventListener).helpRequested(new HelpEvent(
151: e));
152: break;
153: }
154: case SWT.Hide: {
155: ((MenuListener) eventListener).menuHidden(new MenuEvent(e));
156: break;
157: }
158: case SWT.Iconify: {
159: ((ShellListener) eventListener)
160: .shellIconified(new ShellEvent(e));
161: break;
162: }
163: case SWT.KeyDown: {
164: /* Fields set by Control */
165: KeyEvent event = new KeyEvent(e);
166: ((KeyListener) eventListener).keyPressed(event);
167: e.doit = event.doit;
168: break;
169: }
170: case SWT.KeyUp: {
171: /* Fields set by Control */
172: KeyEvent event = new KeyEvent(e);
173: ((KeyListener) eventListener).keyReleased(event);
174: e.doit = event.doit;
175: break;
176: }
177: case SWT.Modify: {
178: ((ModifyListener) eventListener)
179: .modifyText(new ModifyEvent(e));
180: break;
181: }
182: case SWT.MenuDetect: {
183: MenuDetectEvent event = new MenuDetectEvent(e);
184: ((MenuDetectListener) eventListener).menuDetected(event);
185: e.x = event.x;
186: e.y = event.y;
187: e.doit = event.doit;
188: break;
189: }
190: case SWT.MouseDown: {
191: ((MouseListener) eventListener)
192: .mouseDown(new MouseEvent(e));
193: break;
194: }
195: case SWT.MouseDoubleClick: {
196: ((MouseListener) eventListener)
197: .mouseDoubleClick(new MouseEvent(e));
198: break;
199: }
200: case SWT.MouseEnter: {
201: ((MouseTrackListener) eventListener)
202: .mouseEnter(new MouseEvent(e));
203: break;
204: }
205: case SWT.MouseExit: {
206: ((MouseTrackListener) eventListener)
207: .mouseExit(new MouseEvent(e));
208: break;
209: }
210: case SWT.MouseHover: {
211: ((MouseTrackListener) eventListener)
212: .mouseHover(new MouseEvent(e));
213: break;
214: }
215: case SWT.MouseMove: {
216: ((MouseMoveListener) eventListener)
217: .mouseMove(new MouseEvent(e));
218: return;
219: }
220: case SWT.MouseWheel: {
221: ((MouseWheelListener) eventListener)
222: .mouseScrolled(new MouseEvent(e));
223: return;
224: }
225: case SWT.MouseUp: {
226: ((MouseListener) eventListener).mouseUp(new MouseEvent(e));
227: break;
228: }
229: case SWT.Move: {
230: ((ControlListener) eventListener)
231: .controlMoved(new ControlEvent(e));
232: break;
233: }
234: case SWT.Paint: {
235: /* Fields set by Control */
236: PaintEvent event = new PaintEvent(e);
237: ((PaintListener) eventListener).paintControl(event);
238: e.gc = event.gc;
239: break;
240: }
241: case SWT.Resize: {
242: ((ControlListener) eventListener)
243: .controlResized(new ControlEvent(e));
244: break;
245: }
246: case SWT.Selection: {
247: /* Fields set by Sash */
248: SelectionEvent event = new SelectionEvent(e);
249: ((SelectionListener) eventListener).widgetSelected(event);
250: e.x = event.x;
251: e.y = event.y;
252: e.doit = event.doit;
253: break;
254: }
255: case SWT.Show: {
256: ((MenuListener) eventListener).menuShown(new MenuEvent(e));
257: break;
258: }
259: case SWT.Traverse: {
260: /* Fields set by Control */
261: TraverseEvent event = new TraverseEvent(e);
262: ((TraverseListener) eventListener).keyTraversed(event);
263: e.detail = event.detail;
264: e.doit = event.doit;
265: break;
266: }
267: case SWT.Verify: {
268: /* Fields set by Text, RichText */
269: VerifyEvent event = new VerifyEvent(e);
270: ((VerifyListener) eventListener).verifyText(event);
271: e.text = event.text;
272: e.doit = event.doit;
273: break;
274: }
275: }
276: }
277:
278: }
|