Add static factory methods to Ajax** behaviors which create instances by using Java 8 (Bi)Consumer got the callbacks
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/1d9bfd73 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/1d9bfd73 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/1d9bfd73 Branch: refs/heads/static-factories-for-lambdas Commit: 1d9bfd737db397f7e83f116e0302b2e435f75f1d Parents: e6851ac Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Sat Mar 12 10:25:03 2016 +0100 Committer: Martin Tzvetanov Grigorov <[email protected]> Committed: Sat Mar 12 10:25:03 2016 +0100 ---------------------------------------------------------------------- .../wicket/ajax/AbstractAjaxTimerBehavior.java | 16 ++++++++ .../wicket/ajax/AjaxClientInfoBehavior.java | 16 ++++++++ .../apache/wicket/ajax/AjaxEventBehavior.java | 15 +++++++ .../ajax/AjaxNewWindowNotifyingBehavior.java | 24 ++++++++++++ .../ajax/AjaxSelfUpdatingTimerBehavior.java | 16 ++++++++ ...AjaxFormChoiceComponentUpdatingBehavior.java | 37 ++++++++++++++++++ .../form/AjaxFormComponentUpdatingBehavior.java | 41 ++++++++++++++++++++ .../ajax/form/AjaxFormSubmitBehavior.java | 39 +++++++++++++++++++ .../wicket/ajax/form/OnChangeAjaxBehavior.java | 41 ++++++++++++++++++++ 9 files changed, 245 insertions(+) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/1d9bfd73/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java b/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java index ec1ef4e..aef5591 100644 --- a/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java +++ b/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractAjaxTimerBehavior.java @@ -21,6 +21,8 @@ import org.apache.wicket.Page; import org.apache.wicket.core.request.handler.IPartialPageRequestHandler; import org.apache.wicket.markup.head.IHeaderResponse; import org.apache.wicket.markup.head.OnLoadHeaderItem; +import org.apache.wicket.model.lambda.WicketConsumer; +import org.apache.wicket.util.lang.Args; import org.apache.wicket.util.time.Duration; /** @@ -161,6 +163,20 @@ public abstract class AbstractAjaxTimerBehavior extends AbstractDefaultAjaxBehav */ protected abstract void onTimer(final AjaxRequestTarget target); + public static AbstractAjaxTimerBehavior onTimer(Duration interval, WicketConsumer<AjaxRequestTarget> onTimer) + { + Args.notNull(onTimer, "onTimer"); + + return new AbstractAjaxTimerBehavior(interval) + { + @Override + protected void onTimer(AjaxRequestTarget target) + { + onTimer.accept(target); + } + }; + } + /** * @return {@code true} if has been stopped via {@link #stop(IPartialPageRequestHandler)} */ http://git-wip-us.apache.org/repos/asf/wicket/blob/1d9bfd73/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxClientInfoBehavior.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxClientInfoBehavior.java b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxClientInfoBehavior.java index a2fc41a..22c9316 100644 --- a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxClientInfoBehavior.java +++ b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxClientInfoBehavior.java @@ -22,10 +22,12 @@ import org.apache.wicket.ajax.attributes.AjaxRequestAttributes; import org.apache.wicket.markup.head.IHeaderResponse; import org.apache.wicket.markup.head.JavaScriptHeaderItem; import org.apache.wicket.markup.html.pages.BrowserInfoForm; +import org.apache.wicket.model.lambda.WicketBiConsumer; import org.apache.wicket.protocol.http.ClientProperties; import org.apache.wicket.protocol.http.request.WebClientInfo; import org.apache.wicket.request.IRequestParameters; import org.apache.wicket.request.cycle.RequestCycle; +import org.apache.wicket.util.lang.Args; import org.apache.wicket.util.time.Duration; /** @@ -118,6 +120,20 @@ public class AjaxClientInfoBehavior extends AbstractAjaxTimerBehavior { } + public static AjaxClientInfoBehavior onClientInfo(WicketBiConsumer<AjaxRequestTarget, WebClientInfo> onClientInfo) + { + Args.notNull(onClientInfo, "onClientInfo"); + + return new AjaxClientInfoBehavior() + { + @Override + protected void onClientInfo(AjaxRequestTarget target, WebClientInfo clientInfo) + { + onClientInfo.accept(target, clientInfo); + } + }; + } + @Override protected void updateAjaxAttributes(AjaxRequestAttributes attributes) { http://git-wip-us.apache.org/repos/asf/wicket/blob/1d9bfd73/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxEventBehavior.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxEventBehavior.java b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxEventBehavior.java index 6dde195..7a11b2d 100644 --- a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxEventBehavior.java +++ b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxEventBehavior.java @@ -23,6 +23,7 @@ import org.apache.wicket.Component; import org.apache.wicket.ajax.attributes.AjaxRequestAttributes; import org.apache.wicket.markup.head.IHeaderResponse; import org.apache.wicket.markup.head.OnDomReadyHeaderItem; +import org.apache.wicket.model.lambda.WicketConsumer; import org.apache.wicket.util.lang.Args; import org.apache.wicket.util.lang.Checks; import org.apache.wicket.util.string.Strings; @@ -162,4 +163,18 @@ public abstract class AjaxEventBehavior extends AbstractDefaultAjaxBehavior * the current request handler */ protected abstract void onEvent(final AjaxRequestTarget target); + + public static AjaxEventBehavior onEvent(String eventName, WicketConsumer<AjaxRequestTarget> onEvent) + { + Args.notNull(onEvent, "onEvent"); + + return new AjaxEventBehavior(eventName) + { + @Override + protected void onEvent(AjaxRequestTarget target) + { + onEvent.accept(target); + } + }; + } } http://git-wip-us.apache.org/repos/asf/wicket/blob/1d9bfd73/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxNewWindowNotifyingBehavior.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxNewWindowNotifyingBehavior.java b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxNewWindowNotifyingBehavior.java index 79494af..932d54e 100644 --- a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxNewWindowNotifyingBehavior.java +++ b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxNewWindowNotifyingBehavior.java @@ -25,7 +25,12 @@ import org.apache.wicket.markup.head.IHeaderResponse; import org.apache.wicket.markup.head.OnDomReadyHeaderItem; import org.apache.wicket.markup.head.OnLoadHeaderItem; import org.apache.wicket.markup.html.WebPage; +import org.apache.wicket.model.lambda.WicketBiConsumer; +import org.apache.wicket.model.lambda.WicketConsumer; +import org.apache.wicket.protocol.http.request.WebClientInfo; +import org.apache.wicket.util.lang.Args; import org.apache.wicket.util.string.StringValue; +import org.apache.wicket.util.string.Strings; /** * An Ajax behavior that notifies when a new browser window/tab is opened with @@ -126,4 +131,23 @@ public abstract class AjaxNewWindowNotifyingBehavior extends AbstractDefaultAjax */ protected abstract void onNewWindow(AjaxRequestTarget target); + public static AjaxNewWindowNotifyingBehavior onNewWindow(String windowName, WicketConsumer<AjaxRequestTarget> onNewWindow) + { + Args.notNull(onNewWindow, "onNewWindow"); + + if (Strings.isEmpty(windowName)) + { + windowName = UUID.randomUUID().toString(); + } + + return new AjaxNewWindowNotifyingBehavior(windowName) + { + @Override + protected void onNewWindow(AjaxRequestTarget target) + { + onNewWindow.accept(target); + } + }; + } + } http://git-wip-us.apache.org/repos/asf/wicket/blob/1d9bfd73/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxSelfUpdatingTimerBehavior.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxSelfUpdatingTimerBehavior.java b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxSelfUpdatingTimerBehavior.java index 595345e..479a6b9 100644 --- a/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxSelfUpdatingTimerBehavior.java +++ b/wicket-core/src/main/java/org/apache/wicket/ajax/AjaxSelfUpdatingTimerBehavior.java @@ -16,6 +16,8 @@ */ package org.apache.wicket.ajax; +import org.apache.wicket.model.lambda.WicketConsumer; +import org.apache.wicket.util.lang.Args; import org.apache.wicket.util.time.Duration; /** @@ -62,4 +64,18 @@ public class AjaxSelfUpdatingTimerBehavior extends AbstractAjaxTimerBehavior protected void onPostProcessTarget(final AjaxRequestTarget target) { } + + public static AbstractAjaxTimerBehavior onSelfUpdate(Duration interval, WicketConsumer<AjaxRequestTarget> onTimer) + { + Args.notNull(onTimer, "onTimer"); + + return new AjaxSelfUpdatingTimerBehavior(interval) + { + @Override + protected void onPostProcessTarget(AjaxRequestTarget target) + { + onTimer.accept(target); + } + }; + } } http://git-wip-us.apache.org/repos/asf/wicket/blob/1d9bfd73/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormChoiceComponentUpdatingBehavior.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormChoiceComponentUpdatingBehavior.java b/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormChoiceComponentUpdatingBehavior.java index c57db59..e5bc69a 100644 --- a/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormChoiceComponentUpdatingBehavior.java +++ b/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormChoiceComponentUpdatingBehavior.java @@ -18,6 +18,7 @@ package org.apache.wicket.ajax.form; import org.apache.wicket.Component; import org.apache.wicket.WicketRuntimeException; +import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.attributes.AjaxCallListener; import org.apache.wicket.ajax.attributes.AjaxRequestAttributes; import org.apache.wicket.markup.html.form.CheckBoxMultipleChoice; @@ -25,6 +26,9 @@ import org.apache.wicket.markup.html.form.CheckGroup; import org.apache.wicket.markup.html.form.FormComponent; import org.apache.wicket.markup.html.form.RadioChoice; import org.apache.wicket.markup.html.form.RadioGroup; +import org.apache.wicket.model.lambda.WicketBiConsumer; +import org.apache.wicket.model.lambda.WicketConsumer; +import org.apache.wicket.util.lang.Args; /** * This is a Ajax Component Update Behavior that is meant for choices/groups that are not one @@ -109,4 +113,37 @@ public abstract class AjaxFormChoiceComponentUpdatingBehavior extends (component instanceof CheckBoxMultipleChoice) || (component instanceof RadioGroup) || (component instanceof CheckGroup); } + + + public static AjaxFormChoiceComponentUpdatingBehavior onUpdateChoice(WicketConsumer<AjaxRequestTarget> onUpdateChoice) { + Args.notNull(onUpdateChoice, "onUpdateChoice"); + return new AjaxFormChoiceComponentUpdatingBehavior() + { + @Override + protected void onUpdate(AjaxRequestTarget target) + { + onUpdateChoice.accept(target); + } + }; + } + + public static AjaxFormChoiceComponentUpdatingBehavior onUpdateChoice(WicketConsumer<AjaxRequestTarget> onUpdateChoice, + WicketBiConsumer<AjaxRequestTarget, RuntimeException> onError) { + Args.notNull(onUpdateChoice, "onUpdateChoice"); + Args.notNull(onError, "onError"); + return new AjaxFormChoiceComponentUpdatingBehavior() + { + @Override + protected void onUpdate(AjaxRequestTarget target) + { + onUpdateChoice.accept(target); + } + + @Override + protected void onError(AjaxRequestTarget target, RuntimeException e) + { + onError.accept(target, e); + } + }; + } } http://git-wip-us.apache.org/repos/asf/wicket/blob/1d9bfd73/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormComponentUpdatingBehavior.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormComponentUpdatingBehavior.java b/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormComponentUpdatingBehavior.java index b4de626..97b31a3 100644 --- a/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormComponentUpdatingBehavior.java +++ b/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormComponentUpdatingBehavior.java @@ -25,6 +25,9 @@ import org.apache.wicket.ajax.attributes.AjaxRequestAttributes; import org.apache.wicket.ajax.attributes.AjaxRequestAttributes.Method; import org.apache.wicket.markup.html.form.FormComponent; import org.apache.wicket.markup.html.form.validation.IFormValidator; +import org.apache.wicket.model.lambda.WicketBiConsumer; +import org.apache.wicket.model.lambda.WicketConsumer; +import org.apache.wicket.util.lang.Args; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -199,6 +202,44 @@ public abstract class AjaxFormComponentUpdatingBehavior extends AjaxEventBehavio */ protected abstract void onUpdate(AjaxRequestTarget target); + + public static AjaxFormComponentUpdatingBehavior onUpdate(String eventName, WicketConsumer<AjaxRequestTarget> onUpdate) + { + Args.notNull(onUpdate, "onUpdate"); + + return new AjaxFormComponentUpdatingBehavior(eventName) + { + @Override + protected void onUpdate(AjaxRequestTarget target) + { + onUpdate.accept(target); + } + }; + } + + public static AjaxFormComponentUpdatingBehavior onUpdate(String eventName, + WicketConsumer<AjaxRequestTarget> onUpdate, + WicketBiConsumer<AjaxRequestTarget, RuntimeException> onError) + { + Args.notNull(onUpdate, "onUpdate"); + Args.notNull(onError, "onError"); + + return new AjaxFormComponentUpdatingBehavior(eventName) + { + @Override + protected void onUpdate(AjaxRequestTarget target) + { + onUpdate.accept(target); + } + + @Override + protected void onError(AjaxRequestTarget target, RuntimeException e) + { + onError.accept(target, e); + } + }; + } + /** * Called to handle any error resulting from updating form component. Errors thrown from * {@link #onUpdate(org.apache.wicket.ajax.AjaxRequestTarget)} will not be caught here. http://git-wip-us.apache.org/repos/asf/wicket/blob/1d9bfd73/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormSubmitBehavior.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormSubmitBehavior.java b/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormSubmitBehavior.java index c734e9b..7b7c4a0 100644 --- a/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormSubmitBehavior.java +++ b/wicket-core/src/main/java/org/apache/wicket/ajax/form/AjaxFormSubmitBehavior.java @@ -25,6 +25,8 @@ import org.apache.wicket.markup.html.form.Button; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.markup.html.form.IFormSubmitter; import org.apache.wicket.markup.html.form.IFormSubmittingComponent; +import org.apache.wicket.model.lambda.WicketConsumer; +import org.apache.wicket.util.lang.Args; /** * Ajax event behavior that submits a form via ajax when the event it is attached to, is invoked. @@ -266,4 +268,41 @@ public abstract class AjaxFormSubmitBehavior extends AjaxEventBehavior { this.defaultProcessing = defaultProcessing; } + + + public static AjaxFormSubmitBehavior onSubmit(String eventName, WicketConsumer<AjaxRequestTarget> onSubmit) + { + Args.notNull(onSubmit, "onSubmit"); + + return new AjaxFormSubmitBehavior(eventName) + { + @Override + protected void onSubmit(AjaxRequestTarget target) + { + onSubmit.accept(target); + } + }; + } + + public static AjaxFormSubmitBehavior onSubmit(String eventName, + WicketConsumer<AjaxRequestTarget> onSubmit, + WicketConsumer<AjaxRequestTarget> onError) { + Args.notNull(onSubmit, "onSubmit"); + Args.notNull(onError, "onError"); + + return new AjaxFormSubmitBehavior(eventName) + { + @Override + protected void onSubmit(AjaxRequestTarget target) + { + onSubmit.accept(target); + } + + @Override + protected void onError(AjaxRequestTarget target) + { + onError.accept(target); + } + }; + } } http://git-wip-us.apache.org/repos/asf/wicket/blob/1d9bfd73/wicket-core/src/main/java/org/apache/wicket/ajax/form/OnChangeAjaxBehavior.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/form/OnChangeAjaxBehavior.java b/wicket-core/src/main/java/org/apache/wicket/ajax/form/OnChangeAjaxBehavior.java index 27c229c..e1f2d9b 100644 --- a/wicket-core/src/main/java/org/apache/wicket/ajax/form/OnChangeAjaxBehavior.java +++ b/wicket-core/src/main/java/org/apache/wicket/ajax/form/OnChangeAjaxBehavior.java @@ -17,10 +17,14 @@ package org.apache.wicket.ajax.form; import org.apache.wicket.Component; +import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.attributes.AjaxRequestAttributes; import org.apache.wicket.markup.html.form.FormComponent; import org.apache.wicket.markup.html.form.TextArea; import org.apache.wicket.markup.html.form.TextField; +import org.apache.wicket.model.lambda.WicketBiConsumer; +import org.apache.wicket.model.lambda.WicketConsumer; +import org.apache.wicket.util.lang.Args; /** * A behavior that updates the hosting {@link FormComponent} via Ajax when value of the component is @@ -73,4 +77,41 @@ public abstract class OnChangeAjaxBehavior extends AjaxFormComponentUpdatingBeha attributes.setEventNames(EVENT_CHANGE); } } + + public static OnChangeAjaxBehavior onChange(WicketConsumer<AjaxRequestTarget> onChange) + { + Args.notNull(onChange, "onChange"); + + return new OnChangeAjaxBehavior() + { + @Override + protected void onUpdate(AjaxRequestTarget target) + { + onChange.accept(target); + } + }; + } + + public static OnChangeAjaxBehavior onChange(WicketConsumer<AjaxRequestTarget> onChange, + WicketBiConsumer<AjaxRequestTarget, RuntimeException> onError) + { + Args.notNull(onChange, "onChange"); + Args.notNull(onError, "onError"); + + return new OnChangeAjaxBehavior() + { + @Override + protected void onUpdate(AjaxRequestTarget target) + { + onChange.accept(target); + } + + @Override + protected void onError(AjaxRequestTarget target, RuntimeException e) + { + onError.accept(target, e); + } + }; + } + }
