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)