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 >> > >> >
