[M3devel] small design problem in ButtonVBT?

hendrik at topoi.pooq.com hendrik at topoi.pooq.com
Tue Mar 31 16:51:27 CEST 2009


The BottonVBT contains an action, which is a procedure rather than a 
method. b This makes it awkward to subclass ButtonVBT becaue the action 
will still expect its first parameter to be a ButtonVBT instead of 
belonging to the subclass, and an explicit downcast of some sort will be 
needed to acess the subclass's members.

The Trestle manual says this was a deliberate decision:

: The action procedure is a field rather than a method in order to allow 
: buttons with different action procedures to share their method suites.

I, however, find it massively inconvenient because it mans I have to 
resort to downcasting or the very kludgey VBT.GetProp to access what 
should be just there.  I'd rather the action procedure was a method.  

But it should be possible to have the best of both worlds.  Have an 
action2 (better name wanted here) method that is available for 
overriding, and by default calls the procedure in the existing action. 
field.  That action2 method wounl then be called by Trestle wherever 
action is now called.

Does anyone see problems with this?

-- hendrik




More information about the M3devel mailing list