DWT event handling
bobef
bobef at nospam-abv.bg
Sun May 18 06:37:07 PDT 2008
Lester L. Martin II Wrote:
> Frank Benoit Wrote:
>
> > bobef schrieb:
> > > void handleTextEvent (Event e, Composite composite, TreeItem item, TreeEditor editor,Text text, int inset )
> > >
> > > This is longer to write than new class {blah blah} :)
> >
> > No, the additional arguments make the delegate a closure. If you would
> > write that as a anonymous class it would look like that:
> >
> > In Java final vars are accessible for the anonymous class after the
> > surrounding method ends:
> >
> > final Text text = ...
> > final TreeEditor editor = ...
> >
> > Listener l = new Listener {
> > public void handleEvent( Event e ){
> > // use text, editor as you want
> > }
> > }
> >
> > In D1, this would create crashes. The workaround is, to create explicit
> > member variable in the anonymous class. This is really ugly and very
> > tedious and error-prone.
> >
> > Listener l = new class( composite, item, editor, text, inset ) Listener {
> > Composite composite_;
> > TreeEditor editor_;
> > Text text_;
> > int inset_;
> > public this( Composite a, TreeItem b, TreeEditor c,Text d, int e ) {
> > this.composite_ = a;
> > this.editor_ = b;
> > this.text_ = d;
> > this.inset_ = e;
> > }
> > public void handleEvent( Event e ){
> > // use the test_, editor_ ...
> > // underscore to clearly separate them from
> > // the variable used in the surounding method
> > }
> > }
> >
> > Now you see what is the advantage of the dgListener?
> >
>
> In our code we just created a class that accepted a delegate. This class inherited Listener. It defined a generic event handler that it would use if no event delegate was passed to it. What are the advantages of this template over such a design (If you need real code will post).
>
> Lester L. Martin II
>
This was basically my point too. This way seems shorter than having to write all these arguments and having to remember them :)
More information about the Digitalmars-d-dwt
mailing list