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');
