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/06 09:52:00 UTC
[1/38] git commit: WICKET-4998 + WICKET-4990 removed all inline event
handling,
use stopImmediatePropagation() to prevent other behaviors from firing
WICKET-4998 + WICKET-4990 removed all inline event handling, use
stopImmediatePropagation() to prevent other behaviors from firing
Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/acd93ba7
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/acd93ba7
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/acd93ba7
Branch: refs/heads/reference-guide
Commit: acd93ba76e90f16f0c07ff46de5381a82de709d2
Parents: 68a6c04
Author: svenmeier <sv...@apache.org>
Authored: Fri Jan 25 20:09:28 2013 +0100
Committer: svenmeier <sv...@apache.org>
Committed: Fri Jan 25 20:09:28 2013 +0100
----------------------------------------------------------------------
.../html/autocomplete/AutoCompleteTextField.java | 22 ++++++-
.../html/autocomplete/wicket-autocomplete.js | 45 ++++-----------
2 files changed, 30 insertions(+), 37 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/wicket/blob/acd93ba7/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 d554bdc..f821a61 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,9 @@ 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;
import org.apache.wicket.markup.html.form.TextField;
import org.apache.wicket.model.IModel;
@@ -235,9 +237,15 @@ public abstract class AutoCompleteTextField<T> extends TextField<T>
};
}
- /** {@inheritDoc} */
@Override
- protected void onBeforeRender()
+ protected void onInitialize()
+ {
+ super.onInitialize();
+
+ initializeAutoCompleteBehavior();
+ }
+
+ private void initializeAutoCompleteBehavior()
{
// add auto complete behavior to this component if its not already there
if (behavior == null)
@@ -245,7 +253,15 @@ public abstract class AutoCompleteTextField<T> extends TextField<T>
// we do this here instead of constructor so we can have an overridable factory method
add(behavior = newAutoCompleteBehavior(renderer, settings));
}
- super.onBeforeRender();
+ }
+
+ @Override
+ public Component add(Behavior... behaviors)
+ {
+ // the AutoCompleteBehavior must be bound first, see wicket-autocomplete.js
+ initializeAutoCompleteBehavior();
+
+ return super.add(behaviors);
}
@Override
http://git-wip-us.apache.org/repos/asf/wicket/blob/acd93ba7/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
----------------------------------------------------------------------
diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
index 32bedf5..7e32cfc 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
@@ -53,13 +53,6 @@
var mouseactive=0; // is mouse selection active
var hidingAutocomplete=0; // are we hiding the autocomplete list
- // pointers of the browser events
- var objonkeydown;
- var objonkeyup;
- var objonkeypress;
- var objonchange;
- var objonchangeoriginal;
- var objonfocus;
var initialElement;
// holds the eventual margins, padding, etc. of the menu container.
@@ -98,13 +91,6 @@
var obj = Wicket.$(elementId);
initialElement = obj;
- objonkeydown=obj.onkeydown;
- objonkeyup=obj.onkeyup;
- objonkeypress=obj.onkeypress;
- objonfocus=obj.onfocus;
-
- objonchange=obj.onchange;
-
Wicket.Event.add(obj, 'blur', function (jqEvent) {
if (mouseactive === 1) {
ignoreOneFocusGain = true;
@@ -130,10 +116,6 @@
}
}
ignoreOneFocusGain = false;
-
- if(typeof objonfocus==="function") {
- return objonfocus.apply(this,[jqEvent]);
- }
});
Wicket.Event.add(obj, 'keydown', function (jqEvent) {
@@ -180,32 +162,33 @@
hidingAutocomplete = 1;
if(value) {
obj.value = value;
- if (typeof(objonchange) === "function") {
- objonchange.apply(this,[jqEvent]);
- } else {
- jQuery(obj).triggerHandler('change');
- }
+ jQuery(obj).triggerHandler('change');
}
} else if (Wicket.AutoCompleteSettings.enterHidesWithNoSelection) {
hideAutoComplete();
hidingAutocomplete = 1;
}
mouseactive = 0;
- if (typeof objonkeydown === "function") {
- return objonkeydown.apply(this,[jqEvent]);
- }
+
return true;
default:
}
});
+ Wicket.Event.add(obj, 'change', function (jqEvent) {
+ if (mouseactive) {
+ // don't let any other change handler get this
+ jqEvent.stopImmediatePropagation();
+ }
+ });
+
Wicket.Event.add(obj, 'inputchange', function (jqEvent) {
var kc = Wicket.Event.keyCode(jqEvent);
switch(kc) {
case KEY_TAB:
case KEY_ENTER:
- return jqEvent.stopPropagation();
+ return jqEvent.stopImmediatePropagation();
case KEY_UP:
case KEY_DOWN:
case KEY_ESC:
@@ -218,22 +201,16 @@
default:
updateChoices();
}
- if(typeof objonkeyup === "function") {
- return objonkeyup.apply(this,[jqEvent]);
- }
});
Wicket.Event.add(obj, 'keypress', function (jqEvent) {
if(Wicket.Event.keyCode(jqEvent) === KEY_ENTER){
if(selected>-1 || hidingAutocomplete === 1){
hidingAutocomplete=0;
- jqEvent.stopPropagation();
+ jqEvent.stopImmediatePropagation();
return false;
}
}
- if(typeof objonkeypress==="function") {
- return objonkeypress.apply(this,[jqEvent]);
- }
});
if (Wicket.Focus.getFocusedElement() === obj && isShowing === true)