You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2012/07/10 14:39:17 UTC
git commit: WICKET-4649 Add an additional Ajax call listener point -
before the call
Updated Branches:
refs/heads/master 747a1b475 -> 9f8af183e
WICKET-4649 Add an additional Ajax call listener point - before the call
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/9f8af183
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/9f8af183
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/9f8af183
Branch: refs/heads/master
Commit: 9f8af183e745d91966ceb3081156883a330f9037
Parents: 747a1b4
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
Authored: Tue Jul 10 15:34:35 2012 +0300
Committer: Martin Tzvetanov Grigorov <mg...@apache.org>
Committed: Tue Jul 10 15:34:35 2012 +0300
----------------------------------------------------------------------
.../wicket/ajax/AbstractDefaultAjaxBehavior.java | 6 +++-
.../wicket/ajax/attributes/AjaxCallListener.java | 20 +++++++++++++++
.../wicket/ajax/attributes/IAjaxCallListener.java | 19 ++++++++++++-
.../wicket/ajax/res/js/wicket-ajax-jquery.js | 7 +++-
.../ajax/AbstractDefaultAjaxBehaviorTest.java | 2 +-
.../wicket/examples/ajax/builtin/LinksPage.java | 2 +-
.../captcha/kittens/KittenCaptchaPanel.java | 2 +-
7 files changed, 50 insertions(+), 8 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/9f8af183/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 899d5e8..6018ea7 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
@@ -67,7 +67,8 @@ public abstract class AbstractDefaultAjaxBehavior extends AbstractAjaxBehavior
private static final String FAILURE_HANDLER_FUNCTION_TEMPLATE = "function(attrs, jqXHR, errorMessage, textStatus){%s}";
private static final String SUCCESS_HANDLER_FUNCTION_TEMPLATE = "function(attrs, jqXHR, data, textStatus){%s}";
private static final String AFTER_HANDLER_FUNCTION_TEMPLATE = "function(attrs){%s}";
- private static final String BEFORE_HANDLER_FUNCTION_TEMPLATE = "function(attrs, jqXHR, settings){%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}";
/**
* Subclasses should call super.onBind()
@@ -251,6 +252,9 @@ public abstract class AbstractDefaultAjaxBehavior extends AbstractAjaxBehavior
CharSequence beforeHandler = ajaxCallListener.getBeforeHandler(component);
appendListenerHandler(beforeHandler, attributesJson, "bh", BEFORE_HANDLER_FUNCTION_TEMPLATE);
+ CharSequence beforeSendHandler = ajaxCallListener.getBeforeSendHandler(component);
+ appendListenerHandler(beforeSendHandler, attributesJson, "bsh", BEFORE_SEND_HANDLER_FUNCTION_TEMPLATE);
+
CharSequence afterHandler = ajaxCallListener.getAfterHandler(component);
appendListenerHandler(afterHandler, attributesJson, "ah", AFTER_HANDLER_FUNCTION_TEMPLATE);
http://git-wip-us.apache.org/repos/asf/wicket/blob/9f8af183/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 c69a1dc..1832786 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
@@ -31,6 +31,7 @@ public class AjaxCallListener implements IAjaxCallListener, IComponentAwareHeade
private StringBuilder success;
private StringBuilder failure;
private StringBuilder before;
+ private StringBuilder beforeSend;
private StringBuilder after;
private StringBuilder complete;
private StringBuilder precondition;
@@ -48,6 +49,19 @@ public class AjaxCallListener implements IAjaxCallListener, IComponentAwareHeade
return this;
}
+ public AjaxCallListener onBeforeSend(final CharSequence beforeSend)
+ {
+ if (Strings.isEmpty(beforeSend) == false)
+ {
+ if (this.beforeSend == null)
+ {
+ this.beforeSend = new StringBuilder();
+ }
+ this.beforeSend.append(beforeSend);
+ }
+ return this;
+ }
+
public AjaxCallListener onAfter(final CharSequence after)
{
if (Strings.isEmpty(after) == false)
@@ -133,6 +147,12 @@ public class AjaxCallListener implements IAjaxCallListener, IComponentAwareHeade
}
@Override
+ public CharSequence getBeforeSendHandler(Component component)
+ {
+ return beforeSend;
+ }
+
+ @Override
public CharSequence getAfterHandler(Component component)
{
return after;
http://git-wip-us.apache.org/repos/asf/wicket/blob/9f8af183/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 5fef9fa..534cc4e 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
@@ -63,7 +63,22 @@ public interface IAjaxCallListener
CharSequence getFailureHandler(Component component);
/**
- * The JavaScript that will be executed before the Ajax call.
+ * 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:
+ * <ol>
+ * <li>attrs - the AjaxRequestAttributes as JSON</li>
+ * </ol>
+ *
+ * @param component
+ * the Component with the Ajax behavior
+ * @return the JavaScript that will be executed before the Ajax call.
+ */
+ CharSequence getBeforeHandler(Component component);
+
+
+ /**
+ * The JavaScript that will be executed right before make of the the Ajax call,
+ * only if all preconditions pass.
* The script will be executed in a function that receives the following parameters:
* <ol>
* <li>attrs - the AjaxRequestAttributes as JSON</li>
@@ -75,7 +90,7 @@ public interface IAjaxCallListener
* the Component with the Ajax behavior
* @return the JavaScript that will be executed before the Ajax call.
*/
- CharSequence getBeforeHandler(Component component);
+ CharSequence getBeforeSendHandler(Component component);
/**
* The JavaScript that will be executed after the Ajax call.
http://git-wip-us.apache.org/repos/asf/wicket/blob/9f8af183/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 ebe2b48..d980754 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
@@ -453,6 +453,9 @@
headers["Wicket-FocusedElementId"] = Wicket.Focus.lastFocusId;
}
+ Wicket.Event.publish('/ajax/call/before', attrs);
+ self._executeHandlers(attrs.bh, attrs);
+
if (attrs.mp) { // multipart form. jQuery doesn't help here ...
// TODO Wicket.next - should we execute all handlers ?!
// Wicket 1.5 didn't support success/failure handlers for this, but we can do it
@@ -534,8 +537,8 @@
}
}
- Wicket.Event.publish('/ajax/call/before', attrs, jqXHR, settings);
- self._executeHandlers(attrs.bh, attrs, jqXHR, settings);
+ Wicket.Event.publish('/ajax/call/beforeSend', attrs, jqXHR, settings);
+ self._executeHandlers(attrs.bsh, attrs, jqXHR, settings);
if (attrs.i) {
// show the indicator
http://git-wip-us.apache.org/repos/asf/wicket/blob/9f8af183/wicket-core/src/test/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehaviorTest.java
----------------------------------------------------------------------
diff --git a/wicket-core/src/test/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehaviorTest.java b/wicket-core/src/test/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehaviorTest.java
index 1741127..bf947f5 100644
--- a/wicket-core/src/test/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehaviorTest.java
+++ b/wicket-core/src/test/java/org/apache/wicket/ajax/AbstractDefaultAjaxBehaviorTest.java
@@ -65,7 +65,7 @@ public class AbstractDefaultAjaxBehaviorTest extends Assert
CharSequence json = behavior.renderAjaxAttributes(component, attributes);
- String expected = "{\"coh\":[function(attrs, jqXHR, textStatus){alert('Complete!');}],\"u\":\"some/url\",\"pre\":[function(attrs, jqXHR, settings){return somePrecondition();}],\"fh\":[function(attrs, jqXHR, errorMessage, textStatus){alert('Failure!');}],\"bh\":[function(attrs, jqXHR, settings){alert('Before!');}],\"sh\":[function(attrs, jqXHR, data, textStatus){alert('Success!');}],\"ah\":[function(attrs){alert('After!');}]}";
+ String expected = "{\"coh\":[function(attrs, jqXHR, textStatus){alert('Complete!');}],\"u\":\"some/url\",\"pre\":[function(attrs, jqXHR, settings){return somePrecondition();}],\"fh\":[function(attrs, jqXHR, errorMessage, textStatus){alert('Failure!');}],\"bh\":[function(attrs){alert('Before!');}],\"sh\":[function(attrs, jqXHR, data, textStatus){alert('Success!');}],\"ah\":[function(attrs){alert('After!');}]}";
assertEquals(expected, json);
}
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/9f8af183/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/LinksPage.java
----------------------------------------------------------------------
diff --git a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/LinksPage.java b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/LinksPage.java
index 3055038..e15635c 100644
--- a/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/LinksPage.java
+++ b/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/LinksPage.java
@@ -150,7 +150,7 @@ public class LinksPage extends BasePage
}
@Override
- public CharSequence getBeforeHandler(Component component)
+ public CharSequence getBeforeSendHandler(Component component)
{
return "alert('Before ajax call');";
}
http://git-wip-us.apache.org/repos/asf/wicket/blob/9f8af183/wicket-extensions/src/main/java/org/apache/wicket/extensions/captcha/kittens/KittenCaptchaPanel.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/captcha/kittens/KittenCaptchaPanel.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/captcha/kittens/KittenCaptchaPanel.java
index d031571..bd0c33f 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/captcha/kittens/KittenCaptchaPanel.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/captcha/kittens/KittenCaptchaPanel.java
@@ -178,7 +178,7 @@ public class KittenCaptchaPanel extends Panel
super.updateAjaxAttributes(attributes);
IAjaxCallListener ajaxCallListener = new AjaxCallListener() {
@Override
- public CharSequence getBeforeHandler(Component component)
+ public CharSequence getBeforeSendHandler(Component component)
{
return "showLoadingIndicator();";
}