Repository: wicket
Updated Branches:
  refs/heads/master 8417af664 -> e73718fd4


WICKET-5905 new topic /ajax/call/init


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/e73718fd
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/e73718fd
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/e73718fd

Branch: refs/heads/master
Commit: e73718fd4ac52b5b9c8c652a87d5f76a8987a468
Parents: 8417af6
Author: Sven Meier <[email protected]>
Authored: Wed May 13 14:15:42 2015 +0200
Committer: Sven Meier <[email protected]>
Committed: Wed May 13 14:55:35 2015 +0200

----------------------------------------------------------------------
 .../ajax/AbstractDefaultAjaxBehavior.java       |  8 +++++-
 .../ajax/attributes/AjaxAttributeName.java      |  7 +++++
 .../ajax/attributes/AjaxCallListener.java       | 28 ++++++++++++++++++++
 .../ajax/attributes/IAjaxCallListener.java      | 14 ++++++++++
 .../wicket/ajax/res/js/wicket-ajax-jquery.js    |  3 +++
 .../wicket/ajax/res/js/wicket-event-jquery.js   |  1 +
 .../ajax/attributes/AjaxAttributeNameTest.java  |  2 +-
 wicket-core/src/test/js/ajax.js                 |  1 +
 8 files changed, 62 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/e73718fd/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java
 
b/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java
index b41a247..d49807c 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.java
@@ -70,6 +70,7 @@ public abstract class AbstractDefaultAjaxBehavior extends 
AbstractAjaxBehavior
        private static final String AFTER_HANDLER_FUNCTION_TEMPLATE = 
"function(attrs){%s}";
        private static final String BEFORE_SEND_HANDLER_FUNCTION_TEMPLATE = 
"function(attrs, jqXHR, settings){%s}";
        private static final String BEFORE_HANDLER_FUNCTION_TEMPLATE = 
"function(attrs){%s}";
+       private static final String INIT_HANDLER_FUNCTION_TEMPLATE = 
"function(attrs){%s}";
 
        /**
         * Subclasses should call super.onBind()
@@ -244,7 +245,12 @@ public abstract class AbstractDefaultAjaxBehavior extends 
AbstractAjaxBehavior
                        {
                                if (ajaxCallListener != null)
                                {
-                                       CharSequence beforeHandler = 
ajaxCallListener.getBeforeHandler(component);
+                                       CharSequence initHandler = 
ajaxCallListener.getInitHandler(component);
+                                       appendListenerHandler(initHandler, 
attributesJson,
+                                               
AjaxAttributeName.INIT_HANDLER.jsonName(),
+                                               INIT_HANDLER_FUNCTION_TEMPLATE);
+
+                                               CharSequence beforeHandler = 
ajaxCallListener.getBeforeHandler(component);
                                        appendListenerHandler(beforeHandler, 
attributesJson,
                                                
AjaxAttributeName.BEFORE_HANDLER.jsonName(),
                                                
BEFORE_HANDLER_FUNCTION_TEMPLATE);

http://git-wip-us.apache.org/repos/asf/wicket/blob/e73718fd/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxAttributeName.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxAttributeName.java
 
b/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxAttributeName.java
index 0429ec3..59ff7f8 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxAttributeName.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxAttributeName.java
@@ -174,6 +174,13 @@ public enum AjaxAttributeName {
        BEFORE_HANDLER("bh"),
 
        /**
+        * init handler (ih)
+        * 
+        * @see AjaxCallListener#getInitHandler(org.apache.wicket.Component)
+        */
+       INIT_HANDLER("ih"),
+
+       /**
         * the indicator id, if any found (i)
         * 
         * @see AbstractDefaultAjaxBehavior#findIndicatorId()

http://git-wip-us.apache.org/repos/asf/wicket/blob/e73718fd/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxCallListener.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxCallListener.java
 
b/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxCallListener.java
index b0e6be2..043ede1 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxCallListener.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/AjaxCallListener.java
@@ -28,6 +28,7 @@ import org.apache.wicket.util.string.Strings;
  */
 public class AjaxCallListener implements IAjaxCallListener, 
IComponentAwareHeaderContributor
 {
+       private StringBuilder init;
        private StringBuilder success;
        private StringBuilder failure;
        private StringBuilder before;
@@ -37,6 +38,27 @@ public class AjaxCallListener implements IAjaxCallListener, 
IComponentAwareHeade
        private StringBuilder precondition;
 
        /**
+        * Sets the JavaScript code that will be returned by {@link 
#getInitHandler(Component)}.
+        * If this code was already set, the new one will be appended to the 
existing one.
+        * 
+        * @param init
+        *                      the JavaScript code for the corresponding 
handler
+        * @return This
+        */
+       public AjaxCallListener onInit(final CharSequence init)
+       {
+               if (Strings.isEmpty(init) == false)
+               {
+                       if (this.init == null)
+                       {
+                               this.init = new StringBuilder();
+                       }
+                       this.init.append(init);
+               }
+               return this;
+       }
+
+       /**
         * Sets the JavaScript code that will be returned by {@link 
#getBeforeHandler(Component)}.
         * If this code was already set, the new one will be appended to the 
existing one.
         * 
@@ -196,6 +218,12 @@ public class AjaxCallListener implements 
IAjaxCallListener, IComponentAwareHeade
        }
 
        @Override
+       public CharSequence getInitHandler(Component component)
+       {
+               return init;
+       }
+
+       @Override
        public CharSequence getBeforeHandler(Component component)
        {
                return before;

http://git-wip-us.apache.org/repos/asf/wicket/blob/e73718fd/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/IAjaxCallListener.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/IAjaxCallListener.java
 
b/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/IAjaxCallListener.java
index 224f475..05a4760 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/IAjaxCallListener.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/ajax/attributes/IAjaxCallListener.java
@@ -37,6 +37,20 @@ import org.apache.wicket.Component;
 public interface IAjaxCallListener
 {
        /**
+        * The JavaScript that will be executed on initialization of the Ajax 
call, immediately after the causing event.
+        * The script will be executed in a function that receives the following
+        * parameters:
+        * <ol>
+        * <li>attrs - the AjaxRequestAttributes as JSON</li>
+        * </ol>
+        * 
+        * @param component
+        *            the Component with the Ajax behavior
+        * @return the JavaScript that will be executed on initialization of 
the Ajax call.
+        */
+       CharSequence getInitHandler(Component component);
+
+       /**
         * The JavaScript that will be executed before the Ajax call, as early 
as possible. Even before
         * the preconditions. The script will be executed in a function that 
receives the following
         * parameters:

http://git-wip-us.apache.org/repos/asf/wicket/blob/e73718fd/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js 
b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
index 56262ab..0261de3 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
+++ 
b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-ajax-jquery.js
@@ -1946,6 +1946,9 @@
                                                        
attributes.event.extraData = data;
                                                }
 
+                                               
call._executeHandlers(attributes.ih, attributes);
+                                               
Wicket.Event.publish(Wicket.Event.Topic.AJAX_CALL_INIT, attributes);
+
                                                var throttlingSettings = 
attributes.tr;
                                                if (throttlingSettings) {
                                                        var 
postponeTimerOnUpdate = throttlingSettings.p || false;

http://git-wip-us.apache.org/repos/asf/wicket/blob/e73718fd/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
 
b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
index 9ab25bb..93711a7 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
+++ 
b/wicket-core/src/main/java/org/apache/wicket/ajax/res/js/wicket-event-jquery.js
@@ -293,6 +293,7 @@
                        Topic: {
                                DOM_NODE_REMOVING      : '/dom/node/removing',
                                DOM_NODE_ADDED         : '/dom/node/added',
+                               AJAX_CALL_INIT         : '/ajax/call/init',
                                AJAX_CALL_BEFORE       : '/ajax/call/before',
                                AJAX_CALL_PRECONDITION : 
'/ajax/call/precondition',
                                AJAX_CALL_BEFORE_SEND  : 
'/ajax/call/beforeSend',

http://git-wip-us.apache.org/repos/asf/wicket/blob/e73718fd/wicket-core/src/test/java/org/apache/wicket/ajax/attributes/AjaxAttributeNameTest.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/test/java/org/apache/wicket/ajax/attributes/AjaxAttributeNameTest.java
 
b/wicket-core/src/test/java/org/apache/wicket/ajax/attributes/AjaxAttributeNameTest.java
index c689423..922e9a8 100644
--- 
a/wicket-core/src/test/java/org/apache/wicket/ajax/attributes/AjaxAttributeNameTest.java
+++ 
b/wicket-core/src/test/java/org/apache/wicket/ajax/attributes/AjaxAttributeNameTest.java
@@ -57,7 +57,7 @@ public class AjaxAttributeNameTest extends Assert
                }
 
                assertEquals("all known json parameter names",
-                       
"tr|p|d|id|dt|wr|rt|pd|sp|ch|e|async|dep|ep|pre|coh|fh|sh|ah|bsh|bh|i|sc|mp|f|c|m|u|sel|",
+                       
"tr|p|d|id|dt|wr|rt|pd|sp|ch|e|async|dep|ep|pre|coh|fh|sh|ah|bsh|bh|ih|i|sc|mp|f|c|m|u|sel|",
                        sb.toString());
        }
 }

http://git-wip-us.apache.org/repos/asf/wicket/blob/e73718fd/wicket-core/src/test/js/ajax.js
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/js/ajax.js b/wicket-core/src/test/js/ajax.js
index 49e6e87..b2a38fc 100644
--- a/wicket-core/src/test/js/ajax.js
+++ b/wicket-core/src/test/js/ajax.js
@@ -450,6 +450,7 @@ jQuery(document).ready(function() {
                                                ok(attributes.sc === undefined, 
'submitting component');
                                                ok(attributes.i === undefined, 
'indicator');
                                                ok(attributes.pre === 
undefined, 'preconditions');
+                                               ok(attributes.ih === undefined, 
'init handlers');
                                                ok(attributes.bh === undefined, 
'before handlers');
                                                ok(attributes.ah === undefined, 
'after handler');
                                                ok(attributes.sh === undefined, 
'success handlers');

Reply via email to