Mercurial > projects > dwt-mac
diff dwt/widgets/TypedListener.d @ 0:380af2bdd8e5
Upload of whole dwt tree
author | Jacob Carlborg <doob@me.com> <jacob.carlborg@gmail.com> |
---|---|
date | Sat, 09 Aug 2008 17:00:02 +0200 |
parents | |
children | ab8b5765e3d1 2952d5604c0a |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dwt/widgets/TypedListener.d Sat Aug 09 17:00:02 2008 +0200 @@ -0,0 +1,296 @@ +/******************************************************************************* + * Copyright (c) 2000, 2007 IBM Corporation and others. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the Eclipse Public License v1.0 + * which accompanies this distribution, and is available at + * http://www.eclipse.org/legal/epl-v10.html + * + * Contributors: + * IBM Corporation - initial API and implementation + *******************************************************************************/ +module dwt.widgets.TypedListener; + +import dwt.dwthelper.utils; + + +import dwt.DWT; +import dwt.events.ArmEvent; +import dwt.events.ArmListener; +import dwt.events.ControlEvent; +import dwt.events.ControlListener; +import dwt.events.DisposeEvent; +import dwt.events.DisposeListener; +import dwt.events.DragDetectEvent; +import dwt.events.DragDetectListener; +import dwt.events.ExpandEvent; +import dwt.events.ExpandListener; +import dwt.events.FocusEvent; +import dwt.events.FocusListener; +import dwt.events.HelpEvent; +import dwt.events.HelpListener; +import dwt.events.KeyEvent; +import dwt.events.KeyListener; +import dwt.events.MenuDetectEvent; +import dwt.events.MenuDetectListener; +import dwt.events.MenuEvent; +import dwt.events.MenuListener; +import dwt.events.ModifyEvent; +import dwt.events.ModifyListener; +import dwt.events.MouseEvent; +import dwt.events.MouseListener; +import dwt.events.MouseMoveListener; +import dwt.events.MouseTrackListener; +import dwt.events.MouseWheelListener; +import dwt.events.PaintEvent; +import dwt.events.PaintListener; +import dwt.events.SelectionEvent; +import dwt.events.SelectionListener; +import dwt.events.ShellEvent; +import dwt.events.ShellListener; +import dwt.events.TraverseEvent; +import dwt.events.TraverseListener; +import dwt.events.TreeEvent; +import dwt.events.TreeListener; +import dwt.events.VerifyEvent; +import dwt.events.VerifyListener; +import dwt.internal.DWTEventListener; + +/** + * Instances of this class are <em>internal DWT implementation</em> + * objects which provide a mapping between the typed and untyped + * listener mechanisms that DWT supports. + * <p> + * <b>IMPORTANT:</b> This class is <em>not</em> part of the DWT + * public API. It is marked public only so that it can be shared + * within the packages provided by DWT. It should never be + * referenced from application code. + * </p> + * + * @see Listener + */ +public class TypedListener implements Listener { + + /** + * The receiver's event listener + */ + protected DWTEventListener eventListener; + +/** + * Constructs a new instance of this class for the given event listener. + * <p> + * <b>IMPORTANT:</b> This method is <em>not</em> part of the DWT + * public API. It is marked public only so that it can be shared + * within the packages provided by DWT. It should never be + * referenced from application code. + * </p> + * + * @param listener the event listener to store in the receiver + */ +public TypedListener (DWTEventListener listener) { + eventListener = listener; +} + +/** + * Returns the receiver's event listener. + * <p> + * <b>IMPORTANT:</b> This method is <em>not</em> part of the DWT + * public API. It is marked public only so that it can be shared + * within the packages provided by DWT. It should never be + * referenced from application code. + * </p> + * + * @return the receiver's event listener + */ +public DWTEventListener getEventListener () { + return eventListener; +} + +/** + * Handles the given event. + * <p> + * <b>IMPORTANT:</b> This method is <em>not</em> part of the DWT + * public API. It is marked public only so that it can be shared + * within the packages provided by DWT. It should never be + * referenced from application code. + * </p> + * @param e the event to handle + */ +public void handleEvent (Event e) { + switch (e.type) { + case DWT.Activate: { + ((ShellListener) eventListener).shellActivated(new ShellEvent(e)); + break; + } + case DWT.Arm: { + ((ArmListener) eventListener).widgetArmed (new ArmEvent (e)); + break; + } + case DWT.Close: { + /* Fields set by Decorations */ + ShellEvent event = new ShellEvent (e); + ((ShellListener) eventListener).shellClosed(event); + e.doit = event.doit; + break; + } + case DWT.Collapse: { + if (eventListener instanceof TreeListener) { + ((TreeListener) eventListener).treeCollapsed(new TreeEvent(e)); + } else { + ((ExpandListener) eventListener).itemCollapsed(new ExpandEvent(e)); + } + break; + } + case DWT.Deactivate: { + ((ShellListener) eventListener).shellDeactivated(new ShellEvent(e)); + break; + } + case DWT.Deiconify: { + ((ShellListener) eventListener).shellDeiconified(new ShellEvent(e)); + break; + } + case DWT.DefaultSelection: { + ((SelectionListener)eventListener).widgetDefaultSelected(new SelectionEvent(e)); + break; + } + case DWT.Dispose: { + ((DisposeListener) eventListener).widgetDisposed(new DisposeEvent(e)); + break; + } + case DWT.DragDetect: { + ((DragDetectListener) eventListener).dragDetected(new DragDetectEvent(e)); + break; + } + case DWT.Expand: { + if (eventListener instanceof TreeListener) { + ((TreeListener) eventListener).treeExpanded(new TreeEvent(e)); + } else { + ((ExpandListener) eventListener).itemExpanded(new ExpandEvent(e)); + } + break; + } + case DWT.FocusIn: { + ((FocusListener) eventListener).focusGained(new FocusEvent(e)); + break; + } + case DWT.FocusOut: { + ((FocusListener) eventListener).focusLost(new FocusEvent(e)); + break; + } + case DWT.Help: { + ((HelpListener) eventListener).helpRequested (new HelpEvent (e)); + break; + } + case DWT.Hide: { + ((MenuListener) eventListener).menuHidden(new MenuEvent(e)); + break; + } + case DWT.Iconify: { + ((ShellListener) eventListener).shellIconified(new ShellEvent(e)); + break; + } + case DWT.KeyDown: { + /* Fields set by Control */ + KeyEvent event = new KeyEvent(e); + ((KeyListener) eventListener).keyPressed(event); + e.doit = event.doit; + break; + } + case DWT.KeyUp: { + /* Fields set by Control */ + KeyEvent event = new KeyEvent(e); + ((KeyListener) eventListener).keyReleased(event); + e.doit = event.doit; + break; + } + case DWT.Modify: { + ((ModifyListener) eventListener).modifyText(new ModifyEvent(e)); + break; + } + case DWT.MenuDetect: { + MenuDetectEvent event = new MenuDetectEvent(e); + ((MenuDetectListener) eventListener).menuDetected(event); + e.x = event.x; + e.y = event.y; + e.doit = event.doit; + break; + } + case DWT.MouseDown: { + ((MouseListener) eventListener).mouseDown(new MouseEvent(e)); + break; + } + case DWT.MouseDoubleClick: { + ((MouseListener) eventListener).mouseDoubleClick(new MouseEvent(e)); + break; + } + case DWT.MouseEnter: { + ((MouseTrackListener) eventListener).mouseEnter (new MouseEvent (e)); + break; + } + case DWT.MouseExit: { + ((MouseTrackListener) eventListener).mouseExit (new MouseEvent (e)); + break; + } + case DWT.MouseHover: { + ((MouseTrackListener) eventListener).mouseHover (new MouseEvent (e)); + break; + } + case DWT.MouseMove: { + ((MouseMoveListener) eventListener).mouseMove(new MouseEvent(e)); + return; + } + case DWT.MouseWheel: { + ((MouseWheelListener) eventListener).mouseScrolled(new MouseEvent(e)); + return; + } + case DWT.MouseUp: { + ((MouseListener) eventListener).mouseUp(new MouseEvent(e)); + break; + } + case DWT.Move: { + ((ControlListener) eventListener).controlMoved(new ControlEvent(e)); + break; + } + case DWT.Paint: { + /* Fields set by Control */ + PaintEvent event = new PaintEvent (e); + ((PaintListener) eventListener).paintControl (event); + e.gc = event.gc; + break; + } + case DWT.Resize: { + ((ControlListener) eventListener).controlResized(new ControlEvent(e)); + break; + } + case DWT.Selection: { + /* Fields set by Sash */ + SelectionEvent event = new SelectionEvent (e); + ((SelectionListener) eventListener).widgetSelected (event); + e.x = event.x; + e.y = event.y; + e.doit = event.doit; + break; + } + case DWT.Show: { + ((MenuListener) eventListener).menuShown(new MenuEvent(e)); + break; + } + case DWT.Traverse: { + /* Fields set by Control */ + TraverseEvent event = new TraverseEvent (e); + ((TraverseListener) eventListener).keyTraversed (event); + e.detail = event.detail; + e.doit = event.doit; + break; + } + case DWT.Verify: { + /* Fields set by Text, RichText */ + VerifyEvent event = new VerifyEvent (e); + ((VerifyListener) eventListener).verifyText (event); + e.text = event.text; + e.doit = event.doit; + break; + } + } +} + +}