You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by ja...@apache.org on 2007/06/19 07:15:44 UTC

svn commit: r548592 - in /incubator/wicket/trunk/jdk-1.4/wicket/src: main/java/org/apache/wicket/ajax/ main/java/org/apache/wicket/ajax/form/ test/java/org/apache/wicket/ajax/form/

Author: janne
Date: Mon Jun 18 22:15:44 2007
New Revision: 548592

URL: http://svn.apache.org/viewvc?view=rev&rev=548592
Log:
improved OnChangeAjaxBehavior to better support cut/paste 

Modified:
    incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/ajax/form/OnChangeAjaxBehavior.java
    incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/ajax/wicket-ajax.js
    incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/ajax/form/OnChangeAjaxBehaviorTestPage_expected.html

Modified: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/ajax/form/OnChangeAjaxBehavior.java
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/ajax/form/OnChangeAjaxBehavior.java?view=diff&rev=548592&r1=548591&r2=548592
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/ajax/form/OnChangeAjaxBehavior.java (original)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/ajax/form/OnChangeAjaxBehavior.java Mon Jun 18 22:15:44 2007
@@ -16,18 +16,17 @@
  */
 package org.apache.wicket.ajax.form;
 
-import org.apache.wicket.Component;
 import org.apache.wicket.Response;
-import org.apache.wicket.markup.ComponentTag;
 import org.apache.wicket.markup.html.form.AbstractTextComponent;
+import org.apache.wicket.markup.html.form.FormComponent;
 import org.apache.wicket.util.string.JavascriptUtils;
 
 /**
- * A behavior that updates the hosting {@link FormComponent} via ajax when 
- * value of the component is changed.
+ * A behavior that updates the hosting {@link FormComponent} via ajax when value
+ * of the component is changed.
  * 
- * This behavior uses best available method to track changes on different 
- * types of form components. 
+ * This behavior uses best available method to track changes on different types
+ * of form components.
  * 
  * @author Janne Hietamäki (janne)
  * 
@@ -41,28 +40,7 @@
 	 */
 	public OnChangeAjaxBehavior()
 	{
-		super("onkeyup");
-	}
-
-	protected final void onComponentTag(final ComponentTag tag)
-	{
-		super.onComponentTag(tag);
-		if (this.getComponent().isEnabled())
-		{
-			tag.put(getEventForComponent(getComponent()), getEventHandler());
-		}
-	}
-
-	private String getEventForComponent(Component component)
-	{
-		if (component instanceof AbstractTextComponent)
-		{
-			return "onkeyup";
-		}
-		else
-		{
-			return "onchange";
-		}
+		super("onchange");
 	}
 
 	protected final void onComponentRendered()

Modified: incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/ajax/wicket-ajax.js
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/ajax/wicket-ajax.js?view=diff&rev=548592&r1=548591&r2=548592
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/ajax/wicket-ajax.js (original)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/main/java/org/apache/wicket/ajax/wicket-ajax.js Mon Jun 18 22:15:44 2007
@@ -1523,35 +1523,36 @@
     var KEY_CTRL=17;
     var KEY_ALT=18;
 
-	var objonkeyup;
+	var obj = Wicket.$(elementId);
+	obj.setAttribute("autocomplete", "off");
+	if (Wicket.Browser.isIE()) {
+		var objonchange = obj.onchange;
 
-    function initialize(){
-        var obj=wicketGet(elementId);
-
-        objonkeyup = obj.onkeyup;
-
-        obj.onkeyup=function(event){
-            switch(wicketKeyCode(Wicket.fixEvent(event))){
-                case KEY_ENTER:
-                case KEY_UP:
-                case KEY_DOWN:
-                case KEY_ESC:
-                case KEY_TAB:
-                case KEY_RIGHT:
-                case KEY_LEFT:
-                case KEY_SHIFT:
-                case KEY_ALT:
-                case KEY_CTRL:
-	                return Wicket.stopEvent(event);
-                break;
-                default:
-				if(typeof objonkeyup == "function")objonkeyup();
-            }
-            return null;
-        }
-    }
-    initialize();
-}
+		obj.onkeyup = function(event) {
+			switch (wicketKeyCode(Wicket.fixEvent(event))) {
+				case KEY_ENTER:
+				case KEY_UP:
+				case KEY_DOWN:
+				case KEY_ESC:
+				case KEY_TAB:
+				case KEY_RIGHT:
+				case KEY_LEFT:
+				case KEY_SHIFT:
+				case KEY_ALT:
+				case KEY_CTRL:
+					return Wicket.stopEvent(event);
+					break;
+				default:
+					if (typeof objonchange == "function")objonchange();
+			}
+			return null;
+		}
+		obj.attachEvent('onpaste', obj.onchange);
+		obj.attachEvent('oncut', obj.onchange);
+	} else {
+		obj.addEventListener('input', obj.onchange, true);
+	}
+} 
 
 /*
  * Compatibility layer to maintain the original wicket-ajax API.

Modified: incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/ajax/form/OnChangeAjaxBehaviorTestPage_expected.html
URL: http://svn.apache.org/viewvc/incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/ajax/form/OnChangeAjaxBehaviorTestPage_expected.html?view=diff&rev=548592&r1=548591&r2=548592
==============================================================================
--- incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/ajax/form/OnChangeAjaxBehaviorTestPage_expected.html (original)
+++ incubator/wicket/trunk/jdk-1.4/wicket/src/test/java/org/apache/wicket/ajax/form/OnChangeAjaxBehaviorTestPage_expected.html Mon Jun 18 22:15:44 2007
@@ -8,12 +8,12 @@
 <script type="text/javascript" src="resources/org.apache.wicket.ajax.AbstractDefaultAjaxBehavior/wicket-ajax-debug.js"></script>
 </head><body>
 		<form action="?wicket:interface=:0:form::IFormSubmitListener::" wicket:id="form" method="post" id="form0"><div style="display:none"><input type="hidden" name="form0_hf_0" id="form0_hf_0" /></div>
-			<input onkeyup="var wcall=wicketAjaxPost('?wicket:interface=:0:form:field::IBehaviorListener:0:', wicketSerialize(Wicket.$('field1')), function() { }.bind(this), function() { }.bind(this));" value="" type="text" wicket:id="field" name="field" id="field1"/><script type="text/javascript"><!--/*--><![CDATA[/*><!--*/
+			<input onchange="var wcall=wicketAjaxPost('?wicket:interface=:0:form:field::IBehaviorListener:0:', wicketSerialize(Wicket.$('field1')), function() { }.bind(this), function() { }.bind(this));" value="" type="text" wicket:id="field" name="field" id="field1"/><script type="text/javascript"><!--/*--><![CDATA[/*><!--*/
 new Wicket.ChangeHandler('field1');
 /*-->]]>*/</script>
 
 	
-			<select onkeyup="var wcall=wicketAjaxPost('?wicket:interface=:0:form:dropDown::IBehaviorListener:0:', wicketSerialize(Wicket.$('dropDown2')), function() { }.bind(this), function() { }.bind(this));" wicket:id="dropDown" name="dropDown" onchange="var wcall=wicketAjaxPost('?wicket:interface=:0:form:dropDown::IBehaviorListener:0:', wicketSerialize(Wicket.$('dropDown2')), function() { }.bind(this), function() { }.bind(this));" id="dropDown2">
+			<select wicket:id="dropDown" name="dropDown" onchange="var wcall=wicketAjaxPost('?wicket:interface=:0:form:dropDown::IBehaviorListener:0:', wicketSerialize(Wicket.$('dropDown2')), function() { }.bind(this), function() { }.bind(this));" id="dropDown2">
 <option selected="selected" value="">Choose One</option>
 </select>
 		</form>