[M3devel] small design problem in ButtonVBT?

Tony Hosking hosking at cs.purdue.edu
Thu Aug 27 16:20:11 CEST 2009


I'll do it.

On 27 Aug 2009, at 08:17, Olaf Wagner wrote:

> Though I promised to do it, I have lost sight of this task while
> trying to build some RC3 archives on Windows. As I'm not at home this
> evening, can somebody else please commit Hendrik's extension?
>
> Is this something we should should have in the release branch, too?
> Probably not necessary?
>
> Olaf
>
> Quoting hendrik at topoi.pooq.com:
>
>> On Wed, Apr 01, 2009 at 12:03:47PM +0200, Olaf Wagner wrote:
>>> Quoting hendrik at topoi.pooq.com:
>>>
>>> >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?
>>>
>>> Sounds fine to me offhand. You should test your extensions with
>>> some of the existing larger applications, like mentor and Juno-2,
>>> of course.
>>
>> OK. Here's the patch.  Would it be possible for someone to check it  
>> in
>> for me?
>>
>> mentor runs fine with this change; I watched it animate a heap-sort.
>>
>> I have no idea what Juno is supposed to do, but it did respond to
>> button-pushes.
>>
>>
>> hendrik at lovesong:~/cm3/love-sq/cm3/m3-ui/ui/src/split$ cvs diff
>> cvs diff: Diffing .
>> Index: ButtonVBT.i3
>> ===================================================================
>> RCS file: /usr/cvs/cm3/m3-ui/ui/src/split/ButtonVBT.i3,v
>> retrieving revision 1.2
>> diff -r1.2 ButtonVBT.i3
>> 39a40
>>>    act(READONLY cd: VBT.MouseRec);
>> Index: ButtonVBT.m3
>> ===================================================================
>> RCS file: /usr/cvs/cm3/m3-ui/ui/src/split/ButtonVBT.m3,v
>> retrieving revision 1.2
>> diff -r1.2 ButtonVBT.m3
>> 28c28,29
>> <     init := Be
>> ---
>>>    init := Be;
>>>    act := act
>> 46a48,52
>>> PROCEDURE act(v : T; READONLY cd: VBT.MouseRec) =
>>>  BEGIN
>>>    v.action(v, cd);
>>>  END act;
>>>
>> 59c65
>> <         v.action(v, cd);
>> ---
>>>        v.act(cd);
>> hendrik at lovesong:~/cm3/love-sq/cm3/m3-ui/ui/src/split$
>>
>> -- hendrik
>>
>
>
>
> -- 
> Olaf Wagner -- elego Software Solutions GmbH
>               Gustav-Meyer-Allee 25 / Gebäude 12, 13355 Berlin,  
> Germany
> phone: +49 30 23 45 86 96  mobile: +49 177 2345 869  fax: +49 30 23  
> 45 86 95
>   http://www.elegosoft.com | Geschäftsführer: Olaf Wagner | Sitz:  
> Berlin
> Handelregister: Amtsgericht Charlottenburg HRB 77719 | USt-IdNr:  
> DE163214194
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://m3lists.elegosoft.com/pipermail/m3devel/attachments/20090827/67ac4265/attachment-0002.html>


More information about the M3devel mailing list