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

Reply via email to