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