[Newbies] EventHandler "value parameters are passed as first of 3 arguments" ?

John-Reed Maffeo jrmaffeo at gmail.com
Mon Jan 15 17:54:38 UTC 2018


Marcel, Thanks!

Your example is very helpful. I think I can build on this :-)

It makes me think that  it would be reasonable to implement a variety of
sub-classes of #textMorph for different data objects within my Business
Model. By this I mean that I would have a DateTextMorp which would only
allow valid dates or IntegerTextMorph which would only accept integer
values or ProductNumberTextMorph which would only accept valid numbers from
a dictionary of product numbers?

Cheers,

jrm

On Fri, Jan 12, 2018 at 6:05 AM, Marcel Taeumel <marcel.taeumel at hpi.de>
wrote:

> Hi, there.
>
> Sorry for my apparently confusing explanation. :-)
>
> Please find a attached a change set to file-in via drag-drop into your
> image. It contains the class MyTextMorph. Then you can try out the
> following code in your workspace:
>
> | container fieldOne fieldTwo |
>
> container := Morph new.
> fieldOne := MyTextMorph new.
> fieldTwo := MyTextMorph new.
>
> container
> color: Color white;
> extent: 400 at 100;
> layoutPolicy: TableLayout new;
> layoutInset: 2;
> listDirection: #leftToRight.
>
> fieldOne
> hResizing: #spaceFill;
> vResizing: #spaceFill.
>
> fieldTwo
> hResizing: #spaceFill;
> vResizing: #spaceFill.
>
> fieldOne contents: 'Hello World!'.
> fieldTwo contents: '?????'.
>
> container
> addMorphBack: fieldOne;
> addMorphBack: fieldTwo.
>
> fieldOne addDependent: fieldTwo.
>
> container openInWorld.
>
> -----
>
> Note that TextMorph has actually NO support for #on:send:to: at the moment
> bc. it overrides various methods that ignore EventHandler. You have to
> implement #handlesMouseOver:, #mouseLeave, and #update:with:. See the
> attached changeset.
>
> Best,
> Marcel
>
> Am 12.01.2018 02:57:57 schrieb John-Reed Maffeo <jrmaffeo at gmail.com>:
> _______________________________________________ Beginners mailing list
> Beginners at lists.squeakfoundation.org http://lists.squeakfoundation.
> org/mailman/listinfo/beginners
> Marcel,
>
> Thanks for your reply.
>
> I don't know why it is so difficult for me to grock (does anyone say that
> anymore?) this stuff, however your answer does not clarify my
> understanding:-( I will attempt to use #on:send:to::in my solution,
> however, I would appreciate a Workspace example of #on:send:to:withValue to
> satisfy my curiosity. I will write something in the wiki for future
> reference once I understand it :-)
>
> Cheers,
> jrm
>
> On Thu, Jan 11, 2018 at 6:33 AM, Marcel Taeumel <marcel.taeumel at hpi.de>
> wrote:
>
>> Hi, there. :)
>>
>> Well, #on:send:to: works best if the target's source code is under your
>> control. In your example, you would implement something like
>> #setContentsEvent:from: in MyTextMorph. There, you have access to the mouse
>> event and to the source morph to access the contents.
>>
>> I would like to explain two other things, too:
>> 1) You only need to call #addDependent: in the source if you want to
>> implement or use #update: in the target. That's not the case in your
>> example. You do not need it here.
>> 2) The way #on:send:to:withValue: works is, in my opinion, broken. It
>> only supports you to configure a single, hard-coded value, to be passed as
>> first argument in a three-arg-selector. This is useless if you think about
>> having multiple callbacks configured via #on:send:to:withValue:. We should
>> fix that in the future.
>>
>> Best,
>> Marcel
>>
>> Am 11.01.2018 03:33:27 schrieb John-Reed Maffeo <jrmaffeo at gmail.com>:
>> _______________________________________________ Beginners mailing list
>> Beginners at lists.squeakfoundation.org http://lists.squeakfoundation.
>> org/mailman/listinfo/beginners
>> #EventHandler halts with this warning from the method
>> #on:send:to:withValue:
>>
>> How does this work? I can't find an example.
>>
>> I am trying to learn how to use TextMorph in an application. My simple
>> test case is a morph containing two TextMorphs. I want the second morph to
>> contain the contents of the first morph when that morph loses focus.
>>
>> start -------------------
>> |borMor tMor1 tMor2 |
>>
>> borMor := BorderedMorph new.
>> borMor color: Color white.
>> borMor width: 44.
>> tMor1 := TextMorph new.
>> tMor1 contents: 'Hello World!'.
>> tMor2 := TextMorph new.
>> tMor2 contents: '?????'.
>> tMor1 addDependent: tMor2.
>>
>> borMor  layoutPolicy: TableLayout new;
>> listDirection: #leftToRight;
>> wrapCentering: #topLeft;
>> hResizing: #spaceFill;
>> vResizing: #spaceFill;
>> layoutInset: 2;
>> rubberBandCells: true.
>>
>> borMor addMorph: tMor1.
>> tMor1 addDependent: tMor2.
>> borMor addMorph: tMor2.
>> tMor1 on: #mouseLeave send: #contents: to: tMore2 withValue: #(tMor1
>> contents nil).
>>
>>
>> borMor openInWorld.
>>
>> end -----------------
>>
>> This may not be the best way to approach the problem, but I would like to
>> know how to use the method in any case.
>>
>> Thanks,
>>
>> jrm
>>
>>
>>
>> _______________________________________________
>> Beginners mailing list
>> Beginners at lists.squeakfoundation.org
>> http://lists.squeakfoundation.org/mailman/listinfo/beginners
>>
>>
>
> _______________________________________________
> Beginners mailing list
> Beginners at lists.squeakfoundation.org
> http://lists.squeakfoundation.org/mailman/listinfo/beginners
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/beginners/attachments/20180115/4f97e888/attachment-0001.html>


More information about the Beginners mailing list