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

John-Reed Maffeo jrmaffeo at gmail.com
Thu Jan 25 02:43:59 UTC 2018


Marcel, I have been working with the change set you provided and I am not
getting the same results you show in your mail (see attached).

If I make changes to name and date, those changes do not appear in the Note
pane either.

The email field value is the only one which propagates to the note,
because, I think, the method #checkMail: contains an invocation of #mail:
which invokes #changed:. I don't see in the code where any of the other
setters ( for username, message password, or date) are invoked.

The #accept method only displays the current values of the instance
variables. I don't know where I should put the code which would invoke the
setters. If the code you sent me is different than the code you used to
create your screen shot, please send it along, that will probably help me
understand.

Thanks again for your help,

jrm

On Tue, Jan 16, 2018 at 5:22 AM, Marcel Taeumel <marcel.taeumel at hpi.de>
wrote:

> 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>
> 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
>>
>>
>
> _______________________________________________
> 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/20180124/8e463eed/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/20180124/8e463eed/attachment-0002.png>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: MyBusinessApp.png
Type: image/png
Size: 17066 bytes
Desc: not available
URL: <http://lists.squeakfoundation.org/pipermail/beginners/attachments/20180124/8e463eed/attachment-0003.png>


More information about the Beginners mailing list