Mercurial > projects > dwt-win
view dwt/events/SelectionListener.d @ 253:fbb9174f2a2c
Reuse the tango windows api
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Fri, 11 Jul 2008 23:01:25 +0200 |
parents | bef1ed4ebc50 |
children | 02332a154347 |
line wrap: on
line source
/******************************************************************************* * 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 dwt.events.SelectionListener; public import dwt.internal.DWTEventListener; public import dwt.events.SelectionEvent; /** * Classes which implement this interface provide methods * that deal with the events that are generated when selection * occurs in a control. * <p> * After creating an instance of a class that : * this interface it can be added to a control using the * <code>addSelectionListener</code> method and removed using * the <code>removeSelectionListener</code> method. When * selection occurs in a control the appropriate method * will be invoked. * </p> * * @see SelectionAdapter * @see SelectionEvent */ public interface SelectionListener : DWTEventListener { /** * Sent when selection occurs in the control. * <p> * For example, selection occurs in a List when the user selects * an item or items with the keyboard or mouse. On some platforms, * the event occurs when a mouse button or key is pressed. On others, * it happens when the mouse or key is released. The exact key or * mouse gesture that causes this event is platform specific. * </p> * * @param e an event containing information about the selection */ public void widgetSelected(SelectionEvent e); /** * Sent when default selection occurs in the control. * <p> * For example, on some platforms default selection occurs in a List * when the user double-clicks an item or types return in a Text. * On some platforms, the event occurs when a mouse button or key is * pressed. On others, it happens when the mouse or key is released. * The exact key or mouse gesture that causes this event is platform * specific. * </p> * * @param e an event containing information about the default selection */ public void widgetDefaultSelected(SelectionEvent e); } /// Helper class for the dgListener template function private class _DgSelectionListenerWidgetSelectedT(Dg,T...) : SelectionListener { alias ParameterTupleOf!(DgSel) DgArgs; static assert( is(DgArgs == Tuple!(SelectionEvent,T)), "Delegate args not correct" ); Dg dg; T t; private this( Dg dg, T t ){ this.dg = dg; static if( T.length > 0 ){ this.t = t; } } public void widgetSelected(SelectionEvent e){ dg(e,t); } public void widgetDefaultSelected(SelectionEvent e){ } } private class _DgSelectionListenerWidgetDefaultSelectedT(Dg,T...) : SelectionListener { alias ParameterTupleOf!(DgSel) DgArgs; static assert( is(DgArgs == Tuple!(SelectionEvent,T)), "Delegate args not correct" ); Dg dg; T t; private this( Dg dg, T t ){ this.dg = dg; static if( T.length > 0 ){ this.t = t; } } public void widgetSelected(SelectionEvent e){ } public void widgetDefaultSelected(SelectionEvent e){ dg(e,t); } } SelectionListener dgSelectionListenerWidgetSelected( Dg, T... )( Dg dg, T args ){ return new _DgSelectionListenerWidgetSelectedT!( Dg, T )( dg, args ); } SelectionListener dgSelectionListenerWidgetDefaultSelected( Dg, T... )( Dg dg, T args ){ return new _DgSelectionListenerWidgetDefaultSelectedT!( Dg, T )( dg, args ); }