Mercurial > projects > dwt-addons
diff dwtx/draw2d/EventDispatcher.d @ 98:95307ad235d9
Added Draw2d code, still work in progress
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Sun, 03 Aug 2008 00:52:14 +0200 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/dwtx/draw2d/EventDispatcher.d Sun Aug 03 00:52:14 2008 +0200 @@ -0,0 +1,190 @@ +/******************************************************************************* + * Copyright (c) 2000, 2005 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 + * Port to the D programming language: + * Frank Benoit <benoit@tionex.de> + *******************************************************************************/ +module dwtx.draw2d.EventDispatcher; + +import dwt.dwthelper.utils; + +import dwt.accessibility.AccessibleControlEvent; +import dwt.accessibility.AccessibleControlListener; +import dwt.accessibility.AccessibleListener; +import dwt.events.FocusEvent; +import dwt.events.KeyEvent; +import dwt.events.MouseEvent; +import dwt.events.TraverseEvent; +import dwt.widgets.Control; +import dwt.widgets.Event; + +import dwtx.draw2d.IFigure; + +/** + * Listens to various DWT events and dispatches these events to interested Draw2d objects. + */ +public abstract class EventDispatcher { + + /** + * Combines {@link AccessibleControlListener} and {@link AccessibleListener}. + * Implements {@link AccessibleControlListener#getChild(AccessibleControlEvent)} to do + * nothing. + */ + public abstract static class AccessibilityDispatcher + : AccessibleControlListener, AccessibleListener + { + /** @see AccessibleControlListener#getChild(AccessibleControlEvent) */ + public void getChild(AccessibleControlEvent e) { } + } + +/** + * Dispatches a focus gained event. + * @param e the event + */ +public abstract void dispatchFocusGained(FocusEvent e); + +/** + * Dispatches a focus lost event. + * @param e the event + */ +public abstract void dispatchFocusLost(FocusEvent e); + +/** + * Dispatches a key pressed event. + * @param e the event + */ +public abstract void dispatchKeyPressed(KeyEvent e); + +/** + * Dispatches a key released event. + * @param e the event + */ +public abstract void dispatchKeyReleased(KeyEvent e); + +/** + * Dispatches a key traversed event. + * @param e the event + */ +public abstract void dispatchKeyTraversed(TraverseEvent e); + +/** + * Dispatches a mouse double clicked event. + * @param me the event + */ +public abstract void dispatchMouseDoubleClicked(MouseEvent me); + +/** + * Dispatches a mouse entered event. + * @param e the event + */ +public abstract void dispatchMouseEntered(MouseEvent e); + +/** + * Dispatches a mouse exited event. + * @param e the event + */ +public abstract void dispatchMouseExited(MouseEvent e); + +/** + * Dispatches a mouse hover event. + * @param me the event + */ +public abstract void dispatchMouseHover(MouseEvent me); + +/** + * Dispatches a moved event event. + * @param me the event + */ +public abstract void dispatchMouseMoved(MouseEvent me); + +/** + * Dispatches a mouse pressed event. + * @param me the event + */ +public abstract void dispatchMousePressed(MouseEvent me); + +/** + * Dispatches a mouse released event. + * @param me the event + */ +public abstract void dispatchMouseReleased(MouseEvent me); + +/** + * Dispatches a MouseWheel event. Does nothing by default. + * @param event the DWT event + * @since 3.1 + */ +public void dispatchMouseWheelScrolled(Event event) { } + +/** + * Returns the AccessibilityDispatcher. + * @return the AccessibilityDispatcher + */ +protected abstract AccessibilityDispatcher getAccessibilityDispatcher(); +package AccessibilityDispatcher getAccessibilityDispatcher_package(){ + return getAccessibilityDispatcher(); +} + +/** + * @return the IFigure that currently has focus + */ +/*package*/ abstract IFigure getFocusOwner(); + +/** + * @return whether events are captured by a figure + */ +public abstract bool isCaptured(); + +/** + * Releases capture initiated by {@link #setCapture(IFigure)}. + */ +protected abstract void releaseCapture(); + +/** + * Requests focus for the given figure. + * @param fig the figure requesting focus + */ +public abstract void requestFocus(IFigure fig); + +/** + * Requests focus to be removed from the given figure. + * @param fig the figure requesting focus be removed + */ +public abstract void requestRemoveFocus(IFigure fig); + +/** + * Sets capture to the given figure. All subsequent events will be sent to the given + * figure until {@link #releaseCapture()} is called. + * + * @param figure the figure capturing the events + */ +protected abstract void setCapture(IFigure figure); + +/** + * Sets the contol associated with this event dispatcher. + * @param control the control + */ +public abstract void setControl(Control control); + +/** + * Sets the root figure for this dispatcher. + * @param figure the root figure + */ +public abstract void setRoot(IFigure figure); + +/** + * Updates the cursor. + */ +protected abstract void updateCursor(); + +package void updateCursor_package(){ + updateCursor(); +} + +}