Hi Sven

label1.add(Behavior.onTag(t->t.put(key, label1.getId()));         // 58
characters
label1.add(Behavior.onTag((c, t)->t.put(key, label1.getId()));   // 63
charactes

"I'd like to preserve the first one because it's syntactically shorter."

I thought that you say that the first example is much shorter than the
second and that's why you prefer to keep it.
It is just five 5 characters shorter. And all of them are auto-suggested by
my IDE.
My IDE actually auggests
label1.add(Behavior.onTag((component, tag)-> {_}));   // _ is the cursor
position

Or you meant something else ?


Martin Grigorov
Wicket Training and Consulting
https://twitter.com/mtgrigorov

On Sat, Dec 3, 2016 at 3:46 PM, Sven Meier <s...@meiers.net> wrote:

> >It is shorter with three chars "c, "
>
> Can you explain how that works?
>
> Thanks
> Sven
>
>
>
> On 03.12.2016 12:36, Martin Grigorov wrote:
>
>> On Sat, Dec 3, 2016 at 12:20 PM, Sven Meier <s...@meiers.net> wrote:
>>
>> Hi,
>>>
>>> I see your point.
>>>
>>> We could have both:
>>>
>>>    label1.add(Behavior.onTag(t->t.put(key, label1.getId()));
>>>    label1.add(Behavior.onTag((c, t)->t.put(key, c.getId()));
>>>
>>> Both the Eclipse and JDK compiler accept these.
>>> The component should come as first argument as in
>>> Behavior#onComponentTag(Component, ComponentTag) though.
>>>
>>> I'd like to preserve the first one because it's syntactically shorter.
>>>
>>> It is shorter with three chars  "c, ". IMO one method is enough. The IDE
>> helps anyway.
>>
>>
>> Have fun
>>> Sven
>>>
>>>
>>>
>>> On 02.12.2016 17:58, Martijn Dashorst wrote:
>>>
>>> But it would add another reference to the component, increasing the
>>>> footprint. It also enables you to 'bind' to another (unintended)
>>>> component that's available in the scope.
>>>>
>>>> Label label1 = new Label(...);
>>>> ...
>>>> Label label4 = new Label(...);
>>>>
>>>> label1.add(Behavior.onTag(t->t.put(key, label4.getId()));
>>>>
>>>>
>>>> When supplying the component as a second parameter in the onTag, you
>>>> direct the developer to know what the intention is:
>>>>
>>>> label1.add(Behavior.onTag(t,c -> t.put(key, c.getId()));
>>>>
>>>> Martijn
>>>>
>>>>
>>>>
>>>>
>>>> On Fri, Nov 25, 2016 at 9:27 PM, Sven Meier <s...@meiers.net> wrote:
>>>>
>>>> Hi,
>>>>>
>>>>> the behavior is added to a single component only and readily available
>>>>> anyway in scope:
>>>>>
>>>>>       component.add(onTag(tag -> tag.put(key, component.getId()));
>>>>>
>>>>> What do we gain when the same component is  given as argument?
>>>>>
>>>>>       component.add(onTag(component, tag -> tag.put(key,
>>>>> component.getId())));
>>>>>
>>>>> Note that the first component has a better type, the argument would
>>>>> just
>>>>> be
>>>>> a Component:
>>>>>
>>>>>       foo.add(onTag(tag -> tag.put(key, foo.getBar())));
>>>>>
>>>>> Regards
>>>>> Sven
>>>>>
>>>>>
>>>>>
>>>>> On 25.11.2016 20:51, Martin Grigorov wrote:
>>>>>
>>>>> Hi,
>>>>>>
>>>>>> At Martijn's slides from ApacheCon [1] I've noticed that critiques he
>>>>>> mention is that org.apache.wicket.behavior.Behavior#onTag() uses
>>>>>> SerializableConsumer<ComponentTag> and ignores the Component
>>>>>> parameter.
>>>>>> I agree that having the component would be handy!
>>>>>>
>>>>>> Any good reasons why it should be like this ?
>>>>>>
>>>>>> 1.
>>>>>>
>>>>>> http://events.linuxfoundation.org/sites/events/files/slides/
>>>>>> Whats%20up%20with%20Wicket%208%20and%20Java%208.pdf
>>>>>>
>>>>>>
>>>>>> Martin Grigorov
>>>>>> Wicket Training and Consulting
>>>>>> https://twitter.com/mtgrigorov
>>>>>>
>>>>>>
>>>>>>
>>>>
>

Reply via email to