comparison 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
comparison
equal deleted inserted replaced
310:d650eede28b3 311:02332a154347
12 *******************************************************************************/ 12 *******************************************************************************/
13 module dwt.custom.CTabFolderListener; 13 module dwt.custom.CTabFolderListener;
14 14
15 import dwt.internal.DWTEventListener; 15 import dwt.internal.DWTEventListener;
16 import dwt.custom.CTabFolderEvent; 16 import dwt.custom.CTabFolderEvent;
17
18 import tango.core.Traits;
19 import tango.core.Tuple;
17 20
18 /** 21 /**
19 * Classes which implement this interface provide a method 22 * Classes which implement this interface provide a method
20 * that deals with events generated in the CTabFolder. 23 * that deals with events generated in the CTabFolder.
21 * <p> 24 * <p>
40 * 43 *
41 * @see CTabItem#setControl 44 * @see CTabItem#setControl
42 */ 45 */
43 public void itemClosed(CTabFolderEvent event); 46 public void itemClosed(CTabFolderEvent event);
44 } 47 }
48
49
50
51 /// Helper class for the dgListener template function
52 private class _DgCTabFolderListenerT(Dg,T...) : CTabFolderListener {
53
54 alias ParameterTupleOf!(Dg) DgArgs;
55 static assert( is(DgArgs == Tuple!(CTabFolderEvent,T)),
56 "Delegate args not correct" );
57
58 Dg dg;
59 T t;
60
61 private this( Dg dg, T t ){
62 this.dg = dg;
63 static if( T.length > 0 ){
64 this.t = t;
65 }
66 }
67
68 void itemClosed( CTabFolderEvent e ){
69 dg(e,t);
70 }
71 }
72
73 /++
74 + dgListener creates a class implementing the Listener interface and delegating the call to
75 + handleEvent to the users delegate. This template function will store also additional parameters.
76 +
77 + Examle of usage:
78 + ---
79 + void handleTextEvent (Event e, int inset ) {
80 + // ...
81 + }
82 + text.addListener (DWT.FocusOut, dgListener( &handleTextEvent, inset ));
83 + ---
84 +/
85 CTabFolderListener dgCTabFolderListener( Dg, T... )( Dg dg, T args ){
86 return new _DgCTabFolderListenerT!( Dg, T )( dg, args );
87 }
88
89
90