Changeset 216:48de87adead1

Show
Ignore:
Timestamp:
05/17/08 17:23:22 (3 months ago)
Author:
Frank Benoit <benoit@tionex.de>
branch:
default
Message:

Add dgListener template function for the Listener class

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • dwt/widgets/Listener.d

    r31 r216  
    1414 
    1515import dwt.widgets.Event; 
     16 
     17import tango.core.Traits; 
     18import tango.core.Tuple; 
    1619 
    1720/** 
     
    5457void handleEvent (Event event); 
    5558} 
     59 
     60 
     61/// Helper class for the dgListener template function 
     62private class _DgListenerT(Dg,T...) : Listener { 
     63 
     64    alias ParameterTupleOf!(Dg) DgArgs; 
     65    static assert( is(DgArgs == Tuple!(Event,T)), 
     66                "Delegate args not correct" ); 
     67 
     68    Dg dg; 
     69    T  t; 
     70 
     71    private this( Dg dg, T t ){ 
     72        this.dg = dg; 
     73        static if( T.length > 0 ){ 
     74            this.t = t; 
     75        } 
     76    } 
     77 
     78    void handleEvent( Event e ){ 
     79        dg(e,t); 
     80    } 
     81} 
     82 
     83/++ 
     84 + dgListener creates a class implementing the Listener interface and delegating the call to 
     85 + handleEvent to the users delegate. This template function will store also additional parameters. 
     86 + 
     87 + Examle of usage: 
     88 + --- 
     89 + void handleTextEvent (Event e, int inset ) { 
     90 +     // ... 
     91 + } 
     92 + text.addListener (DWT.FocusOut, dgListener( &handleTextEvent, inset )); 
     93 + --- 
     94 +/ 
     95Listener dgListener( Dg, T... )( Dg dg, T args ){ 
     96    return new _DgListenerT!( Dg, T )( dg, args ); 
     97} 
     98 
     99 
     100