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 2013/02/19 08:55:29 UTC
[14/19] git commit: WICKET-4998 + WICKET-4990 behaviors might be
added via IComponentInstantiationListeners,
thus resulting in a NullPointerException if AutoCompleteTextField adds its
AutoCompleteBehavior :( - now using trick with HeaderItem to make sure
WICKET-4998 + WICKET-4990 behaviors might be added via
IComponentInstantiationListeners, thus resulting in a
NullPointerException if AutoCompleteTextField adds its
AutoCompleteBehavior :( - now using trick with HeaderItem to make sure
the auto-complete event handler is able to register first
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/6b62a507
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/6b62a507
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/6b62a507
Branch: refs/heads/reference-guide
Commit: 6b62a5077da354449a76ee209a4f0dea837bd919
Parents: 2672f88
Author: svenmeier <sv...@apache.org>
Authored: Fri Feb 15 12:44:26 2013 +0100
Committer: svenmeier <sv...@apache.org>
Committed: Fri Feb 15 12:44:26 2013 +0100
----------------------------------------------------------------------
.../autocomplete/AbstractAutoCompleteBehavior.java | 46 ++++++++++++++-
.../html/autocomplete/AutoCompleteTextField.java | 13 ----
2 files changed, 43 insertions(+), 16 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/6b62a507/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AbstractAutoCompleteBehavior.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AbstractAutoCompleteBehavior.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AbstractAutoCompleteBehavior.java
index 6218e65..1d754dc 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AbstractAutoCompleteBehavior.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AbstractAutoCompleteBehavior.java
@@ -20,13 +20,16 @@ package org.apache.wicket.extensions.ajax.markup.html.autocomplete;
import org.apache.wicket.Component;
import org.apache.wicket.ajax.AbstractDefaultAjaxBehavior;
import org.apache.wicket.ajax.AjaxRequestTarget;
+import org.apache.wicket.markup.head.HeaderItem;
import org.apache.wicket.markup.head.IHeaderResponse;
+import org.apache.wicket.markup.head.IWrappedHeaderItem;
import org.apache.wicket.markup.head.JavaScriptHeaderItem;
import org.apache.wicket.markup.head.OnDomReadyHeaderItem;
+import org.apache.wicket.markup.head.ResourceAggregator;
+import org.apache.wicket.request.Response;
import org.apache.wicket.request.cycle.RequestCycle;
import org.apache.wicket.request.resource.JavaScriptResourceReference;
import org.apache.wicket.request.resource.ResourceReference;
-import org.apache.wicket.resource.CoreLibrariesContributor;
import org.apache.wicket.util.string.Strings;
/**
@@ -36,6 +39,40 @@ import org.apache.wicket.util.string.Strings;
*/
public abstract class AbstractAutoCompleteBehavior extends AbstractDefaultAjaxBehavior
{
+ /**
+ * A wrapper for the auto-complete DOM-ready event handler.
+ * <p>
+ * A plain OnDomReadyItem would be aggregated by {@link ResourceAggregator}, possible coming
+ * after the event registration of other behaviors.
+ */
+ private static final class WrappedHeaderItem extends HeaderItem implements IWrappedHeaderItem
+ {
+ private final OnDomReadyHeaderItem item;
+
+ private WrappedHeaderItem(OnDomReadyHeaderItem onDomReady)
+ {
+ item = onDomReady;
+ }
+
+ @Override
+ public void render(Response response)
+ {
+ item.render(response);
+ }
+
+ @Override
+ public Iterable<?> getRenderTokens()
+ {
+ return item.getRenderTokens();
+ }
+
+ @Override
+ public HeaderItem getWrapped()
+ {
+ return item;
+ }
+ }
+
private static final ResourceReference AUTOCOMPLETE_JS = new JavaScriptResourceReference(
AutoCompleteBehavior.class, "wicket-autocomplete.js");
@@ -70,7 +107,7 @@ public abstract class AbstractAutoCompleteBehavior extends AbstractDefaultAjaxBe
public void renderHead(final Component component, final IHeaderResponse response)
{
super.renderHead(component, response);
- CoreLibrariesContributor.contributeAjax(component.getApplication(), response);
+
renderAutocompleteHead(response);
}
@@ -96,7 +133,10 @@ public abstract class AbstractAutoCompleteBehavior extends AbstractDefaultAjaxBe
String initJS = String.format("new Wicket.AutoComplete('%s','%s',%s,%s);", id,
getCallbackUrl(), constructSettingsJS(), indicatorId);
- response.render(OnDomReadyHeaderItem.forScript(initJS));
+
+ final OnDomReadyHeaderItem onDomReady = OnDomReadyHeaderItem.forScript(initJS);
+
+ response.render(new WrappedHeaderItem(onDomReady));
}
/**
http://git-wip-us.apache.org/repos/asf/wicket/blob/6b62a507/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteTextField.java
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteTextField.java b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteTextField.java
index 12e28af..b31bff3 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteTextField.java
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteTextField.java
@@ -18,7 +18,6 @@ package org.apache.wicket.extensions.ajax.markup.html.autocomplete;
import java.util.Iterator;
-import org.apache.wicket.Component;
import org.apache.wicket.ConverterLocator;
import org.apache.wicket.behavior.Behavior;
import org.apache.wicket.markup.ComponentTag;
@@ -265,18 +264,6 @@ public abstract class AutoCompleteTextField<T> extends TextField<T>
}
}
- /**
- * Initializes the {@link AutoCompleteBehavior} if it is not already there.
- */
- @Override
- public Component add(Behavior... behaviors)
- {
- // the AutoCompleteBehavior must be bound first, see wicket-autocomplete.js
- initializeAutoCompleteBehavior();
-
- return super.add(behaviors);
- }
-
@Override
protected void onComponentTag(final ComponentTag tag)
{