Event handling
Frank Benoit
keinfarbton at googlemail.com
Fri Mar 21 13:32:41 PDT 2008
I think about how to do the event handling more D like, but also to
avoid adding/changing code in the ported code.
The dwt from Shawn made this possible:
table.addListener(
DWT.Selection,
&myHandler,
&myData
);
+ use of delegates
+ optionally add data that is passed to the delegate
- data must an "Object"
- adds code into the dwt
Now i think about adding this new class template to dwt.widgets.Listener:
/// start of addition to dwt.widgets.Listener
class DgListenerT( T... ) : Listener {
alias void delegate(Event, T) ADel;
ADel dg;
T t;
public this( ADel dg, T t ){
this.dg = dg;
this.t = t;
}
public void handleEvent( Event e ){
dg(e, t);
}
}
alias DgListenerT!() DgListener;
/// end of addition to dwt.widgets.Listener
table.addListener(
DWT.Selection,
new DgListener( &myHandler )
);
table.addListener(
DWT.Selection,
new DgListenerT!( int )( &myHandler, 23 )
);
+ use of delegates
+ optionally add data that is passed to the delegate
+ data count and types are not fix
+ adds only additional class outside existing classes
+ no dwt internals need to be changed and maintained
- need heap allocate the DgListenerT instance
Are there more arguments pro/cons?
Would you prefer another solution?
More information about the Digitalmars-d-dwt
mailing list