Changeset 311:02332a154347

Show
Ignore:
Timestamp:
09/16/08 09:19:38 (2 months ago)
Author:
Frank Benoit <benoit@tionex.de>
branch:
default
Message:

Improved Listeners access functions.

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • dwt/custom/CTabFolder2Listener.d

    r155 r311  
    1515import dwt.internal.DWTEventListener; 
    1616import dwt.custom.CTabFolderEvent; 
     17 
     18import tango.core.Traits; 
     19import tango.core.Tuple; 
    1720 
    1821/** 
     
    3538 */ 
    3639public interface CTabFolder2Listener : DWTEventListener { 
     40    public enum { 
     41        MINIMIZE, 
     42        MAXIMIZE, 
     43        SHOWLIST, 
     44        RESTORE, 
     45        CLOSE 
     46    } 
    3747 
    3848/** 
     
    114124public void showList(CTabFolderEvent event); 
    115125} 
     126 
     127 
     128 
     129/// Helper class for the dgListener template function 
     130private class _DgCTabFolder2ListenerT(Dg,T...) : CTabFolder2Listener { 
     131 
     132    alias ParameterTupleOf!(Dg) DgArgs; 
     133    static assert( is(DgArgs == Tuple!(CTabFolderEvent,T)), 
     134                "Delegate args not correct: "~DgArgs.stringof~" vs. (Event,"~T.stringof~")" ); 
     135 
     136    Dg dg; 
     137    T  t; 
     138    int type; 
     139 
     140    private this( int type, Dg dg, T t ){ 
     141        this.type = type; 
     142        this.dg = dg; 
     143        static if( T.length > 0 ){ 
     144            this.t = t; 
     145        } 
     146    } 
     147 
     148    void itemClosed( CTabFolderEvent e ){ 
     149        dg(e,t); 
     150    } 
     151    public void close(CTabFolderEvent e){ 
     152        if( type is CTabFolder2Listener.CLOSE ){ 
     153            dg(e,t); 
     154        } 
     155    } 
     156    public void minimize(CTabFolderEvent e){ 
     157        if( type is CTabFolder2Listener.MINIMIZE ){ 
     158            dg(e,t); 
     159        } 
     160    } 
     161    public void maximize(CTabFolderEvent e){ 
     162        if( type is CTabFolder2Listener.MAXIMIZE ){ 
     163            dg(e,t); 
     164        } 
     165    } 
     166    public void restore(CTabFolderEvent e){ 
     167        if( type is CTabFolder2Listener.RESTORE ){ 
     168            dg(e,t); 
     169        } 
     170    } 
     171    public void showList(CTabFolderEvent e){ 
     172        if( type is CTabFolder2Listener.SHOWLIST ){ 
     173            dg(e,t); 
     174        } 
     175    } 
     176} 
     177 
     178/++ 
     179 + dgListener creates a class implementing the Listener interface and delegating the call to 
     180 + handleEvent to the users delegate. This template function will store also additional parameters. 
     181 + 
     182 + Examle of usage: 
     183 + --- 
     184 + void handleTextEvent ( Event e, int inset ) { 
     185 +     // ... 
     186 + } 
     187 + text.addListener (DWT.FocusOut, dgListener( &handleTextEvent, inset )); 
     188 + --- 
     189 +/ 
     190CTabFolder2Listener dgCTabFolder2Listener( Dg, T... )( int type, Dg dg, T args ){ 
     191    return new _DgCTabFolder2ListenerT!( Dg, T )( type, dg, args ); 
     192} 
     193 
     194 
     195 
  • dwt/custom/CTabFolderListener.d

    r155 r311  
    1515import dwt.internal.DWTEventListener; 
    1616import dwt.custom.CTabFolderEvent; 
     17 
     18import tango.core.Traits; 
     19import tango.core.Tuple; 
    1720 
    1821/** 
     
    4346public void itemClosed(CTabFolderEvent event); 
    4447} 
     48 
     49 
     50 
     51/// Helper class for the dgListener template function 
     52private 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 +/ 
     85CTabFolderListener dgCTabFolderListener( Dg, T... )( Dg dg, T args ){ 
     86    return new _DgCTabFolderListenerT!( Dg, T )( dg, args ); 
     87} 
     88 
     89 
     90 
  • dwt/dwthelper/Runnable.d

    r248 r311  
    1818    alias ParameterTupleOf!(Dg) DgArgs; 
    1919    static assert( is(DgArgs == Tuple!(T)), 
    20                 "Delegate args not correct" ); 
     20                "Delegate args not correct: "~DgArgs.stringof~" vs "~T.stringof ); 
    2121 
    2222    Dg dg; 
  • dwt/events/SelectionListener.d

    r253 r311  
    1616public import dwt.internal.DWTEventListener; 
    1717public import dwt.events.SelectionEvent; 
     18 
     19import tango.core.Traits; 
     20import tango.core.Tuple; 
    1821 
    1922/** 
     
    3538public interface SelectionListener : DWTEventListener { 
    3639 
     40    public enum { 
     41        SELECTION, 
     42        DEFAULTSELECTION 
     43    } 
    3744/** 
    3845 * Sent when selection occurs in the control. 
     
    6673 
    6774 
     75/// DWT extension 
     76private class _DgSelectionListenerT(Dg,T...) : SelectionListener { 
    6877 
    69 /// Helper class for the dgListener template function 
    70 private class _DgSelectionListenerWidgetSelectedT(Dg,T...) : SelectionListener { 
    71  
    72     alias ParameterTupleOf!(DgSel) DgArgs; 
     78    alias ParameterTupleOf!(Dg) DgArgs; 
    7379    static assert( is(DgArgs == Tuple!(SelectionEvent,T)), 
    74                 "Delegate args not correct" ); 
     80                "Delegate args not correct: "~DgArgs.stringof~" vs. (Event,"~T.stringof~")" ); 
    7581 
    7682    Dg dg; 
    7783    T  t; 
     84    int type; 
    7885 
    79     private this( Dg dg, T t ){ 
     86    private this( int type, Dg dg, T t ){ 
     87        this.type = type; 
    8088        this.dg = dg; 
    8189        static if( T.length > 0 ){ 
     
    8593 
    8694    public void widgetSelected(SelectionEvent e){ 
    87         dg(e,t); 
     95        if( type is SelectionListener.SELECTION ){ 
     96            dg(e,t); 
     97        } 
    8898    } 
    8999    public void widgetDefaultSelected(SelectionEvent e){ 
     100        if( type is SelectionListener.DEFAULTSELECTION ){ 
     101            dg(e,t); 
     102        } 
    90103    } 
    91104} 
    92105 
    93 private class _DgSelectionListenerWidgetDefaultSelectedT(Dg,T...) : SelectionListener { 
    94  
    95     alias ParameterTupleOf!(DgSel) DgArgs; 
    96     static assert( is(DgArgs == Tuple!(SelectionEvent,T)), 
    97                 "Delegate args not correct" ); 
    98  
    99     Dg dg; 
    100     T  t; 
    101  
    102     private this( Dg dg, T t ){ 
    103         this.dg = dg; 
    104         static if( T.length > 0 ){ 
    105             this.t = t; 
    106         } 
    107     } 
    108  
    109     public void widgetSelected(SelectionEvent e){ 
    110     } 
    111     public void widgetDefaultSelected(SelectionEvent e){ 
    112         dg(e,t); 
    113     } 
     106SelectionListener dgSelectionListener( Dg, T... )( int type, Dg dg, T args ){ 
     107    return new _DgSelectionListenerT!( Dg, T )( type, dg, args ); 
    114108} 
    115109 
    116110SelectionListener dgSelectionListenerWidgetSelected( Dg, T... )( Dg dg, T args ){ 
    117     return new _DgSelectionListenerWidgetSelectedT!( Dg, T )( dg, args ); 
     111    return dgSelectionListener( SelectionListener.SELECTION, dg, args ); 
    118112} 
    119113SelectionListener dgSelectionListenerWidgetDefaultSelected( Dg, T... )( Dg dg, T args ){ 
    120     return new _DgSelectionListenerWidgetDefaultSelectedT!( Dg, T )( dg, args ); 
     114    return dgSelectionListener( SelectionListener.DEFAULTSELECTION, dg, args ); 
    121115} 
    122116 
    123  
    124  
  • dwt/widgets/Listener.d

    r216 r311  
    6464    alias ParameterTupleOf!(Dg) DgArgs; 
    6565    static assert( is(DgArgs == Tuple!(Event,T)), 
    66                 "Delegate args not correct" ); 
     66                "Delegate args not correct: delegate args: ("~DgArgs.stringof~") vs. passed args: ("~Tuple!(Event,T).stringof~")" ); 
    6767 
    6868    Dg dg;