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 
(&lt;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);
+                       }
+               };
+       }
 }

Reply via email to