Repository: wicket
Updated Branches:
  refs/heads/wicket-6.x 0199bfab7 -> b3d2d8205


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/b3d2d820
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/b3d2d820
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/b3d2d820

Branch: refs/heads/wicket-6.x
Commit: b3d2d8205066818db68c3a413f4b14a22636a89e
Parents: 0199bfa
Author: Sven Meier <[email protected]>
Authored: Tue May 12 15:12:27 2015 +0200
Committer: Sven Meier <[email protected]>
Committed: Wed May 13 14:55:24 2015 +0200

----------------------------------------------------------------------
 .../ajax/AbstractDefaultAjaxBehavior.java       |  7 +++++
 .../ajax/attributes/AjaxAttributeName.java      |  7 +++++
 .../ajax/attributes/AjaxCallListener.java       | 30 ++++++++++++++++++++
 .../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 +
 7 files changed, 50 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/b3d2d820/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 a9d517c..d95330d 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
@@ -71,6 +71,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()
@@ -274,6 +275,12 @@ public abstract class AbstractDefaultAjaxBehavior extends 
AbstractAjaxBehavior
                        {
                                if (ajaxCallListener != null)
                                {
+                                       if (ajaxCallListener instanceof 
AjaxCallListener) {
+                                               CharSequence initHandler = 
((AjaxCallListener) 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(),

http://git-wip-us.apache.org/repos/asf/wicket/blob/b3d2d820/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 6f0508d..12edc71 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/b3d2d820/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..927c4d7 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.
         * 
@@ -195,6 +217,14 @@ public class AjaxCallListener implements 
IAjaxCallListener, IComponentAwareHeade
                return failure;
        }
 
+       /**
+        * TODO Wicket 7: pull up into IAjaxCallListener
+        */
+       public CharSequence getInitHandler(Component component)
+       {
+               return init;
+       }
+
        @Override
        public CharSequence getBeforeHandler(Component component)
        {

http://git-wip-us.apache.org/repos/asf/wicket/blob/b3d2d820/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 379f2af..a68d510 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
@@ -1950,6 +1950,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/b3d2d820/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 458b897..248c99b 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
@@ -315,6 +315,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/b3d2d820/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 a50ce06..8a50bfe 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
@@ -58,7 +58,7 @@ public class AjaxAttributeNameTest
                }
 
                Assert.assertEquals("all known json parameter names",
-                       
"tr|p|d|id|dt|wr|rt|ad|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|ad|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/b3d2d820/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 1837375..cda21c9 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