Pushed it to 'static-factories-for-lambdas' branch.

I remembered of Lambdas class by Martijn for all those, but some of them
are in wicket-extensions and this makes it a bit complicated.

Any help with implementation, tests and docs are welcome!

On Sat, Mar 12, 2016 at 10:56 AM, Martin Grigorov <[email protected]
> wrote:

> I'm working on this!
> On Mar 12, 2016 9:14 AM, "Tobias Soloschenko" <
> [email protected]> wrote:
>
>> Looking forward to this this in several other components! :-)
>>
>> kind regards
>>
>> Tobias
>>
>> Am 11.03.2016 um 23:03 schrieb Sven Meier <[email protected]>:
>>
>> >> 'onEvent' ... 'onUpdate' ... 'onUpdateChoice' from AFCCUB.
>> >
>> > Cool 8)
>> >
>> > Sven
>> >
>> >
>> >
>> >> On 11.03.2016 23:00, Martin Grigorov wrote:
>> >>> On Fri, Mar 11, 2016 at 10:33 PM, Sven Meier <[email protected]> wrote:
>> >>>
>> >>> Hi,
>> >>>
>> >>> I don't like to add additional classes and/or longer class names.
>> Neither
>> >>> should we deprecate any 'old' solutions.
>> >>> I'm not keen on the Component#on(String, AjaxListener) method either.
>> >>>
>> >>> My idea:
>> >>> 3)
>> >>>
>> >>>     public static AjaxEventBehavior lambda(String event,
>> >>> WicketConsumer<AjaxRequestTarget> consumer) {
>> >>>         return new AjaxEventBehavior(event) {
>> >>>             @Override
>> >>>             protected void onEvent(AjaxRequestTarget target)
>> >>>             {
>> >>>                 consumer.accept(target);
>> >>>             }
>> >>>         };
>> >>>     }
>> >> I like it!
>> >> The method name could be 'onEvent' though. This way one could import it
>> >> statically together with 'onUpdate' from
>> AjaxFormComponentUpdatingBehavior
>> >> and 'onUpdateChoice' from AFCCUB.
>> >>
>> >>
>> >>> Usage:
>> >>>
>> >>>    public MyPanel(String id) {
>> >>>      super(id);
>> >>>
>> >>>      label = ...;
>> >>>      label.add(AjaxEventBehavior.lambda("click", this::onDoAjax);
>> >>>    }
>> >>>
>> >>>    private void onDoAjax(AjaxRequestTarget target) { ... }
>> >>>
>> >>>
>> >>>
>> >>> Sven
>> >>>
>> >>>
>> >>>
>> >>>> On 11.03.2016 21:45, Martin Grigorov wrote:
>> >>>>
>> >>>> Hi,
>> >>>>
>> >>>> I'd like to ask you for your opinion on the following options:
>> >>>>
>> >>>> 1) introduce java.util.function.Consumer in the existing components
>> and
>> >>>> behaviors
>> >>>> Example:
>> >>>>
>> >>>>
>> https://github.com/apache/wicket/blob/lambdas-ajax/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxEventBehavior.java
>> >>>>
>> >>>> Pros:
>> >>>>   - reuse the same components/behaviors as before
>> >>>>
>> >>>> Cons:
>> >>>> - the components/behaviors are no more abstract and the developer may
>> >>>> forget to add implementation, i.e. provide consumer or override
>> #onXyz()
>> >>>> method
>> >>>>
>> >>>> 2) introduce new components and behaviors
>> >>>> Example:
>> >>>>
>> >>>>
>> https://github.com/apache/wicket/blob/lambdas-ajax-L/wicket-core/src/main/java/org/apache/wicket/ajax/LAjaxEventBehavior.java
>> >>>>
>> >>>> Pros:
>> >>>> - more cleaner API
>> >>>>
>> >>>> Cons:
>> >>>> - yet another class for the same functionality
>> >>>> - a bit uglier name. Whatever name I imagine doesn't sound better
>> than the
>> >>>> name of the original class
>> >>>>
>> >>>> 3) 2) but in separate module (e.g. wicket-java8)
>> >>>>
>> >>>> 4) 2) but in WicketStuff project
>> >>>>
>> >>>> 5) Other ideas ?
>> >>>>
>> >>>> Martin Grigorov
>> >>>> Wicket Training and Consulting
>> >>>> https://twitter.com/mtgrigorov
>> >
>>
>

Reply via email to