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

Marcel Taeumel marcel.taeumel at hpi.de
Tue Jan 16 11:22:14 UTC 2018


Hi, there.

Try using the Tool Builder for that. Take a look at the change set attached to this mail.


Best,
Marcel
Am 15.01.2018 18:54:49 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!

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 [mailto: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 [mailto:jrmaffeo at gmail.com]>:
_______________________________________________ Beginners mailing list Beginners at lists.squeakfoundation.org [mailto:Beginners at lists.squeakfoundation.org] http://lists.squeakfoundation.org/mailman/listinfo/beginners [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 [mailto: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 [mailto:jrmaffeo at gmail.com]>:
_______________________________________________ Beginners mailing list Beginners at lists.squeakfoundation.org [mailto:Beginners at lists.squeakfoundation.org] http://lists.squeakfoundation.org/mailman/listinfo/beginners [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 [mailto:Beginners at lists.squeakfoundation.org]
http://lists.squeakfoundation.org/mailman/listinfo/beginners [http://lists.squeakfoundation.org/mailman/listinfo/beginners]




_______________________________________________
Beginners mailing list
Beginners at lists.squeakfoundation.org [mailto:Beginners at lists.squeakfoundation.org]
http://lists.squeakfoundation.org/mailman/listinfo/beginners [http://lists.squeakfoundation.org/mailman/listinfo/beginners]


-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.squeakfoundation.org/pipermail/beginners/attachments/20180116/bd2e15ba/attachment-0001.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 17580 bytes
Desc: not available
URL: <http://lists.squeakfoundation.org/pipermail/beginners/attachments/20180116/bd2e15ba/attachment-0001.png>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: toolbuilder-example.1.cs
URL: <http://lists.squeakfoundation.org/pipermail/beginners/attachments/20180116/bd2e15ba/attachment-0001.ksh>


More information about the Beginners mailing list