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 );
+}
+
+
+