Mercurial > projects > dwt-win
diff dwt/custom/CTabFolderListener.d @ 311:02332a154347
Improved Listeners access functions.
author | Frank Benoit <benoit@tionex.de> |
---|---|
date | Tue, 16 Sep 2008 15:19:38 +0200 |
parents | a5afe31f5cdd |
children |
line wrap: on
line diff
--- a/dwt/custom/CTabFolderListener.d Mon Sep 15 03:41:14 2008 +0200 +++ b/dwt/custom/CTabFolderListener.d Tue Sep 16 15:19:38 2008 +0200 @@ -15,6 +15,9 @@ import dwt.internal.DWTEventListener; import dwt.custom.CTabFolderEvent; +import tango.core.Traits; +import tango.core.Tuple; + /** * Classes which implement this interface provide a method * that deals with events generated in the CTabFolder. @@ -42,3 +45,46 @@ */ public void itemClosed(CTabFolderEvent event); } + + + +/// Helper class for the dgListener template function +private class _DgCTabFolderListenerT(Dg,T...) : CTabFolderListener { + + alias ParameterTupleOf!(Dg) DgArgs; + static assert( is(DgArgs == Tuple!(CTabFolderEvent,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; + } + } + + void itemClosed( CTabFolderEvent e ){ + dg(e,t); + } +} + +/++ + + dgListener creates a class implementing the Listener interface and delegating the call to + + handleEvent to the users delegate. This template function will store also additional parameters. + + + + Examle of usage: + + --- + + void handleTextEvent (Event e, int inset ) { + + // ... + + } + + text.addListener (DWT.FocusOut, dgListener( &handleTextEvent, inset )); + + --- + +/ +CTabFolderListener dgCTabFolderListener( Dg, T... )( Dg dg, T args ){ + return new _DgCTabFolderListenerT!( Dg, T )( dg, args ); +} + + +