Add static factory methods to various components 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/229fee82 Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/229fee82 Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/229fee82 Branch: refs/heads/static-factories-for-lambdas Commit: 229fee82205383f08118f47708501de0d84bca71 Parents: 1d9bfd7 Author: Martin Tzvetanov Grigorov <[email protected]> Authored: Sat Mar 12 10:52:19 2016 +0100 Committer: Martin Tzvetanov Grigorov <[email protected]> Committed: Sat Mar 12 10:52:19 2016 +0100 ---------------------------------------------------------------------- .../ajax/markup/html/AjaxFallbackLink.java | 2 + .../wicket/ajax/markup/html/AjaxLink.java | 16 +++++++ .../ajax/markup/html/form/AjaxButton.java | 38 ++++++++++++++++ .../ajax/markup/html/form/AjaxCheckBox.java | 16 +++++++ .../ajax/markup/html/form/AjaxSubmitLink.java | 39 +++++++++++++++++ .../apache/wicket/markup/html/link/Link.java | 16 +++++++ .../ajax/markup/html/IndicatingAjaxButton.java | 46 +++++++++++++++++--- .../ajax/markup/html/IndicatingAjaxLink.java | 17 ++++++++ 8 files changed, 185 insertions(+), 5 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/wicket/blob/229fee82/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/AjaxFallbackLink.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/AjaxFallbackLink.java b/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/AjaxFallbackLink.java index d4f95a3..29ccb99 100644 --- a/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/AjaxFallbackLink.java +++ b/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/AjaxFallbackLink.java @@ -24,6 +24,8 @@ import org.apache.wicket.ajax.attributes.AjaxRequestAttributes; import org.apache.wicket.markup.ComponentTag; import org.apache.wicket.markup.html.link.Link; import org.apache.wicket.model.IModel; +import org.apache.wicket.model.lambda.WicketConsumer; +import org.apache.wicket.util.lang.Args; /** * An ajax link that will degrade to a normal request if ajax is not available or javascript is http://git-wip-us.apache.org/repos/asf/wicket/blob/229fee82/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/AjaxLink.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/AjaxLink.java b/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/AjaxLink.java index c7e62e2..bf3d4d5 100644 --- a/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/AjaxLink.java +++ b/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/AjaxLink.java @@ -23,6 +23,8 @@ import org.apache.wicket.ajax.attributes.AjaxRequestAttributes; import org.apache.wicket.markup.ComponentTag; import org.apache.wicket.markup.html.link.AbstractLink; import org.apache.wicket.model.IModel; +import org.apache.wicket.model.lambda.WicketConsumer; +import org.apache.wicket.util.lang.Args; /** * A component that allows a trigger request to be triggered via html anchor tag @@ -132,4 +134,18 @@ public abstract class AjaxLink<T> extends AbstractLink implements IAjaxLink, IGe */ @Override public abstract void onClick(final AjaxRequestTarget target); + + public static <T> AjaxLink<T> ajaxLink(String id, WicketConsumer<AjaxRequestTarget> onClick) + { + Args.notNull(onClick, "onClick"); + + return new AjaxLink<T>(id) + { + @Override + public void onClick(AjaxRequestTarget target) + { + onClick.accept(target); + } + }; + } } http://git-wip-us.apache.org/repos/asf/wicket/blob/229fee82/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxButton.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxButton.java b/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxButton.java index 6feb38b..ce2fcf7 100644 --- a/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxButton.java +++ b/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxButton.java @@ -23,6 +23,8 @@ import org.apache.wicket.markup.ComponentTag; import org.apache.wicket.markup.html.form.Button; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.model.IModel; +import org.apache.wicket.model.lambda.WicketBiConsumer; +import org.apache.wicket.util.lang.Args; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -217,6 +219,42 @@ public abstract class AjaxButton extends Button { } + public static AjaxButton ajaxButton(String id, WicketBiConsumer<AjaxRequestTarget, Form<?>> onSubmit) + { + Args.notNull(onSubmit, "onSubmit"); + + return new AjaxButton(id) + { + @Override + public void onSubmit(AjaxRequestTarget target, Form<?> form) + { + onSubmit.accept(target, form); + } + }; + } + + public static AjaxButton ajaxButton(String id, WicketBiConsumer<AjaxRequestTarget, Form<?>> onSubmit, + WicketBiConsumer<AjaxRequestTarget, Form<?>> onError) + { + Args.notNull(onSubmit, "onSubmit"); + Args.notNull(onError, "onError"); + + return new AjaxButton(id) + { + @Override + public void onSubmit(AjaxRequestTarget target, Form<?> form) + { + onSubmit.accept(target, form); + } + + @Override + protected void onError(AjaxRequestTarget target, Form<?> form) + { + onError.accept(target, form); + } + }; + } + /** * Listener method invoked on form submit with no errors, after {@link Form#onSubmit()}. * http://git-wip-us.apache.org/repos/asf/wicket/blob/229fee82/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxCheckBox.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxCheckBox.java b/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxCheckBox.java index 0e20071..54e8b3d 100644 --- a/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxCheckBox.java +++ b/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxCheckBox.java @@ -21,6 +21,8 @@ import org.apache.wicket.ajax.attributes.AjaxRequestAttributes; import org.apache.wicket.ajax.form.AjaxFormComponentUpdatingBehavior; import org.apache.wicket.markup.html.form.CheckBox; import org.apache.wicket.model.IModel; +import org.apache.wicket.model.lambda.WicketConsumer; +import org.apache.wicket.util.lang.Args; /** * A CheckBox which is updated via ajax when the user changes its value @@ -89,4 +91,18 @@ public abstract class AjaxCheckBox extends CheckBox * @param target */ protected abstract void onUpdate(AjaxRequestTarget target); + + public static AjaxCheckBox ajaxCheckBox(String id, WicketConsumer<AjaxRequestTarget> onUpdate) + { + Args.notNull(onUpdate, "onUpdate"); + + return new AjaxCheckBox(id) + { + @Override + public void onUpdate(AjaxRequestTarget target) + { + onUpdate.accept(target); + } + }; + } } http://git-wip-us.apache.org/repos/asf/wicket/blob/229fee82/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxSubmitLink.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxSubmitLink.java b/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxSubmitLink.java index 619e289..f369bf6 100644 --- a/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxSubmitLink.java +++ b/wicket-core/src/main/java/org/apache/wicket/ajax/markup/html/form/AjaxSubmitLink.java @@ -22,6 +22,8 @@ import org.apache.wicket.ajax.form.AjaxFormSubmitBehavior; import org.apache.wicket.markup.ComponentTag; import org.apache.wicket.markup.html.form.AbstractSubmitLink; import org.apache.wicket.markup.html.form.Form; +import org.apache.wicket.model.lambda.WicketBiConsumer; +import org.apache.wicket.util.lang.Args; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -134,6 +136,43 @@ public abstract class AjaxSubmitLink extends AbstractSubmitLink { } + public static AjaxSubmitLink ajaxSubmitLink(String id, WicketBiConsumer<AjaxRequestTarget, Form<?>> onSubmit) + { + Args.notNull(onSubmit, "onSubmit"); + + return new AjaxSubmitLink(id) + { + @Override + public void onSubmit(AjaxRequestTarget target, Form<?> form) + { + onSubmit.accept(target, form); + } + }; + } + + public static AjaxSubmitLink ajaxSubmitLink(String id, + WicketBiConsumer<AjaxRequestTarget, Form<?>> onSubmit, + WicketBiConsumer<AjaxRequestTarget, Form<?>> onError) + { + Args.notNull(onSubmit, "onSubmit"); + Args.notNull(onError, "onError"); + + return new AjaxSubmitLink(id) + { + @Override + public void onSubmit(AjaxRequestTarget target, Form<?> form) + { + onSubmit.accept(target, form); + } + + @Override + protected void onError(AjaxRequestTarget target, Form<?> form) + { + onError.accept(target, form); + } + }; + } + protected void updateAjaxAttributes(AjaxRequestAttributes attributes) { } http://git-wip-us.apache.org/repos/asf/wicket/blob/229fee82/wicket-core/src/main/java/org/apache/wicket/markup/html/link/Link.java ---------------------------------------------------------------------- diff --git a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/Link.java b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/Link.java index b4ba44e..10e6396 100644 --- a/wicket-core/src/main/java/org/apache/wicket/markup/html/link/Link.java +++ b/wicket-core/src/main/java/org/apache/wicket/markup/html/link/Link.java @@ -22,7 +22,9 @@ import org.apache.wicket.Page; import org.apache.wicket.WicketRuntimeException; import org.apache.wicket.markup.ComponentTag; import org.apache.wicket.model.IModel; +import org.apache.wicket.model.lambda.WicketConsumer; import org.apache.wicket.request.mapper.parameter.PageParameters; +import org.apache.wicket.util.lang.Args; /** * Implementation of a hyperlink component. A link can be used with an anchor (<a href...) @@ -175,6 +177,20 @@ public abstract class Link<T> extends AbstractLink implements ILinkListener, IGe */ public abstract void onClick(); + public static <T> Link<T> link(String id, WicketConsumer<Void> onClick) + { + Args.notNull(onClick, "onClick"); + + return new Link<T>(id) + { + @Override + public void onClick() + { + onClick.accept((Void)null); + } + }; + } + /** * THIS METHOD IS NOT PART OF THE WICKET API. DO NOT ATTEMPT TO OVERRIDE OR CALL IT. * http://git-wip-us.apache.org/repos/asf/wicket/blob/229fee82/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/IndicatingAjaxButton.java ---------------------------------------------------------------------- diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/IndicatingAjaxButton.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/IndicatingAjaxButton.java index bd123a1..39da031 100644 --- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/IndicatingAjaxButton.java +++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/IndicatingAjaxButton.java @@ -16,10 +16,13 @@ */ package org.apache.wicket.extensions.ajax.markup.html; +import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.IAjaxIndicatorAware; import org.apache.wicket.ajax.markup.html.form.AjaxButton; import org.apache.wicket.markup.html.form.Form; import org.apache.wicket.model.IModel; +import org.apache.wicket.model.lambda.WicketBiConsumer; +import org.apache.wicket.util.lang.Args; /** * A variant of the {@link AjaxButton} that displays a busy indicator while the ajax request is in @@ -30,11 +33,8 @@ import org.apache.wicket.model.IModel; */ public abstract class IndicatingAjaxButton extends AjaxButton implements IAjaxIndicatorAware { - - /** - * - */ private static final long serialVersionUID = 1L; + private final AjaxIndicatorAppender indicatorAppender = new AjaxIndicatorAppender(); /** @@ -95,4 +95,40 @@ public abstract class IndicatingAjaxButton extends AjaxButton implements IAjaxIn return indicatorAppender.getMarkupId(); } -} \ No newline at end of file + + public static IndicatingAjaxButton indicatingAjaxButton(String id, WicketBiConsumer<AjaxRequestTarget, Form<?>> onSubmit) + { + Args.notNull(onSubmit, "onSubmit"); + + return new IndicatingAjaxButton(id) + { + @Override + public void onSubmit(AjaxRequestTarget target, Form<?> form) + { + onSubmit.accept(target, form); + } + }; + } + + public static IndicatingAjaxButton indicatingAjaxButton(String id, WicketBiConsumer<AjaxRequestTarget, Form<?>> onSubmit, + WicketBiConsumer<AjaxRequestTarget, Form<?>> onError) + { + Args.notNull(onSubmit, "onSubmit"); + Args.notNull(onError, "onError"); + + return new IndicatingAjaxButton(id) + { + @Override + public void onSubmit(AjaxRequestTarget target, Form<?> form) + { + onSubmit.accept(target, form); + } + + @Override + protected void onError(AjaxRequestTarget target, Form<?> form) + { + onError.accept(target, form); + } + }; + } +} http://git-wip-us.apache.org/repos/asf/wicket/blob/229fee82/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/IndicatingAjaxLink.java ---------------------------------------------------------------------- diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/IndicatingAjaxLink.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/IndicatingAjaxLink.java index 88cf293..dabd29a 100644 --- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/IndicatingAjaxLink.java +++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/IndicatingAjaxLink.java @@ -16,9 +16,12 @@ */ package org.apache.wicket.extensions.ajax.markup.html; +import org.apache.wicket.ajax.AjaxRequestTarget; import org.apache.wicket.ajax.IAjaxIndicatorAware; import org.apache.wicket.ajax.markup.html.AjaxLink; import org.apache.wicket.model.IModel; +import org.apache.wicket.model.lambda.WicketConsumer; +import org.apache.wicket.util.lang.Args; /** * A variant of the {@link AjaxLink} that displays a busy indicator while the ajax request is in @@ -66,4 +69,18 @@ public abstract class IndicatingAjaxLink<T> extends AjaxLink<T> implements IAjax return indicatorAppender.getMarkupId(); } + + public static <T> IndicatingAjaxLink<T> indicatingAjaxLink(String id, WicketConsumer<AjaxRequestTarget> onClick) + { + Args.notNull(onClick, "onClick"); + + return new IndicatingAjaxLink<T>(id) + { + @Override + public void onClick(AjaxRequestTarget target) + { + onClick.accept(target); + } + }; + } }
