Author: jcompagner
Date: Mon Jun  2 02:14:13 2008
New Revision: 662371

URL: http://svn.apache.org/viewvc?rev=662371&view=rev
Log:
merged various checkings until: 662360

Modified:
    wicket/trunk/wicket/   (props changed)
    wicket/trunk/wicket-extensions/   (props changed)
    
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
    
wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java
    wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/wicket-ajax.js
    
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/basic/StringRequestTarget.java

Propchange: wicket/trunk/wicket/
------------------------------------------------------------------------------
--- svn:mergeinfo (original)
+++ svn:mergeinfo Mon Jun  2 02:14:13 2008
@@ -1 +1 @@
-/wicket/branches/wicket-1.3.x/jdk-1.4/wicket:653208,653212,653215,653226,653231,654304,655446,655466,655786
+/wicket/branches/wicket-1.3.x/jdk-1.4/wicket:653208,653212,653215,653226,653231,654304,655446,655466,655786,658141,659118,659120,662360

Propchange: wicket/trunk/wicket-extensions/
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Mon Jun  2 02:14:13 2008
@@ -0,0 +1 @@
+/wicket/branches/wicket-1.3.x/jdk-1.4/wicket-extensions:659248,661657,662360

Modified: 
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js?rev=662371&r1=662370&r2=662371&view=diff
==============================================================================
--- 
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
 (original)
+++ 
wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
 Mon Jun  2 02:14:13 2008
@@ -52,8 +52,26 @@
        var objonkeypress;
        var objonchange;
        var objonchangeoriginal;
-
-    function initialize(){     
+       
+       // holds the eventual margins, padding, etc. of the menu container.
+       // it is computed when the menu is first rendered, and then reused.
+       var initialDelta = -1;
+
+       // holds a throttler, for not sending many requests if the user types
+       // too quickly.
+       var localThrottler = new Wicket.Throttler(true);
+       var throttleDelay = 300;
+
+    function initialize(){
+               // Remove the autocompletion menu if still present from
+               // a previous call. This is required to properly register
+               // the mouse event handler again (using the new stateful 
'mouseactive'
+               // variable which just gets created)
+        var choiceDiv=document.getElementById(getMenuId());
+        if (choiceDiv != null) {
+            choiceDiv.parentNode.parentNode.removeChild(choiceDiv.parentNode);
+        } 
+               
         var obj=wicketGet(elementId);
 
         objonkeydown=obj.onkeydown;
@@ -223,6 +241,11 @@
         else{
                selected=-1;
         }
+        localThrottler.throttle(getMenuId(), throttleDelay, 
actualUpdateChoices);
+    }
+
+    function actualUpdateChoices()
+    {
         var value = wicketGet(elementId).value;
                var request = new 
Wicket.Ajax.Request(callbackUrl+"&q="+processValue(value), doUpdateChoices, 
false, true, false, "wicket-autocomplete|d");
                request.get();
@@ -279,23 +302,26 @@
         var element = getAutocompleteMenu();
         element.innerHTML=resp;
         if(element.firstChild && element.firstChild.childNodes) {
-            elementCount=element.firstChild.childNodes.length;
+               elementCount=element.firstChild.childNodes.length;
 
-            for(var i=0;i<elementCount;i++){
-                   var node=element.firstChild.childNodes[i];
-
-                               node.onclick = function(event){
-                                       mouseactive=0;
-                                       
wicketGet(elementId).value=getSelectedValue();
-                                       if(typeof 
objonchange=="function")objonchange();
-                                       hideAutoComplete();
-                               }
-
-                               node.onmouseover = function(event){             
                        
-                                       selected = getElementIndex(this);
-                                       render();
-                                       showAutoComplete();
-                               }
+               var clickFunc = function(event){
+                       mouseactive=0;
+                       wicketGet(elementId).value=getSelectedValue();
+                       if(typeof objonchange=="function")objonchange();
+                               hideAutoComplete();
+               };
+                       
+               var mouseOverFunc = function(event){
+                       selected = getElementIndex(this);
+                       render();
+                       showAutoComplete();
+               };
+
+               var node=element.firstChild.childNodes[0];
+               for(var i=0;i<elementCount;i++){
+                       node.onclick = clickFunc;
+                       node.onmouseover = mouseOverFunc;
+                       node = node.nextSibling;
                        }
         } else {
             elementCount=0;
@@ -360,26 +386,30 @@
     function render(){
         var menu=getAutocompleteMenu();
         var height=0;
-        for(var i=0;i<elementCount;i++){
-            var node=menu.firstChild.childNodes[i];
-
-            var classNames=node.className.split(" ");
-            for (var j=0; j<classNames.length; j++) {
-                if (classNames[j]=='selected') {
-                    classNames[j]='';
-                }
-            }
-
-            if(selected==i){
-                classNames.push('selected');
-                adjustScrollOffset(menu.parentNode, node);
-            }
-            
-            node.className=classNames.join(" ");
-            height+=node.offsetHeight;
-        }
+               var node=menu.firstChild.childNodes[0];
+               var re = /\bselected\b/gi;
+        for(var i=0;i<elementCount;i++)
+               {
+            var origClassNames = node.className;
+                       var classNames = origClassNames.replace(re, "");
+                       if(selected==i){
+                               classNames += " selected";
+                               adjustScrollOffset(menu.parentNode, node);
+                       }
+                       if (classNames != origClassNames)
+                node.className = classNames;
+       
+                       if ((cfg.maxHeight > -1) && (height < cfg.maxHeight))
+                               height+=node.offsetHeight;
+       
+                       node = node.nextSibling;
+               }
         if (cfg.maxHeight > -1) {
-               height = height<cfg.maxHeight?height:cfg.maxHeight;
+                       // If we don't exceed the maximum size, we add the 
extra space 
+                       // that may be there due to padding, margins, etc.
+                       if (initialDelta == -1)
+                               initialDelta = menu.parentNode.offsetHeight - 
height;
+               height = height<cfg.maxHeight ? height+initialDelta : 
cfg.maxHeight;
                menu.parentNode.style.height=height+"px";
         }
     }
@@ -464,4 +494,4 @@
     }
 
     initialize();
-}
\ No newline at end of file
+}

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java?rev=662371&r1=662370&r2=662371&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java 
(original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/AjaxRequestTarget.java 
Mon Jun  2 02:14:13 2008
@@ -732,7 +732,7 @@
                RequestCycle.get().setResponse(encodingBodyResponse);
 
                // Initialize temporary variables
-               final Page<?> page = component.getPage();
+               final Page page = (Page)component.findParent(Page.class);
                if (page == null)
                {
                        // dont throw an exception but just ignore this 
component, somehow

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/wicket-ajax.js
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/wicket-ajax.js?rev=662371&r1=662370&r2=662371&view=diff
==============================================================================
--- wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/wicket-ajax.js 
(original)
+++ wicket/trunk/wicket/src/main/java/org/apache/wicket/ajax/wicket-ajax.js Mon 
Jun  2 02:14:13 2008
@@ -1561,6 +1561,7 @@
        initialize: function(func) {
                this.func = func;
                this.timestamp = new Date().getTime();
+               this.timeoutVar = undefined;
        },
        
        getTimestamp: function() {
@@ -1573,13 +1574,30 @@
        
        setFunc: function(func) {
                this.func = func;
+       },
+
+       getTimeoutVar: function() {
+        return this.timeoutVar;
+       },
+
+       setTimeoutVar: function(timeoutVar) {
+        this.timeoutVar = timeoutVar;
        }
 };
 
 Wicket.Throttler = Wicket.Class.create();
 Wicket.Throttler.prototype = {
-       initialize: function() {
+
+    /* "postponeTimerOnUpdate" is an optional parameter. If it is set to true, 
then the timer is
+       reset each time the throttle function gets called. Use this behaviour 
if you want something
+       to happen at X milliseconds after the *last* call to throttle.
+       If the parameter is not set, or set to false, then the timer is not 
reset. */
+       initialize: function(postponeTimerOnUpdate) {
                this.entries = new Array();
+               if (postponeTimerOnUpdate != undefined)
+            this.postponeTimerOnUpdate = postponeTimerOnUpdate;
+        else
+            this.postponeTimerOnUpdate = false;
        },
        
        throttle: function(id, millis, func) {
@@ -1587,10 +1605,15 @@
                var me = this;
                if (entry == undefined) {
                        entry = new Wicket.ThrottlerEntry(func);
+                       entry.setTimeoutVar(window.setTimeout(function() { 
me.execute(id); }, millis));
                        this.entries[id] = entry;
-                       window.setTimeout(function() { me.execute(id); }, 
millis);
                } else {
                        entry.setFunc(func);
+            if (this.postponeTimerOnUpdate == true)
+            {
+                window.clearTimeout(entry.getTimeoutVar());
+                entry.setTimeoutVar(window.setTimeout(function() { 
me.execute(id); }, millis));
+            }
                }       
        },
        
@@ -1598,10 +1621,9 @@
                var entry = this.entries[id];
                if (entry != undefined) {
                        var func = entry.getFunc();
+            this.entries[id] = undefined;      
                        var tmp = func();
                }
-               
-               this.entries[id] = undefined;   
        }
 };
 
@@ -2074,4 +2096,4 @@
        if (e!=null) {
            e.style.display = "none";
        }
-}
\ No newline at end of file
+}

Modified: 
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/basic/StringRequestTarget.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/basic/StringRequestTarget.java?rev=662371&r1=662370&r2=662371&view=diff
==============================================================================
--- 
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/basic/StringRequestTarget.java
 (original)
+++ 
wicket/trunk/wicket/src/main/java/org/apache/wicket/request/target/basic/StringRequestTarget.java
 Mon Jun  2 02:14:13 2008
@@ -48,7 +48,7 @@
         */
        public StringRequestTarget(String string)
        {
-               this("text", string);
+               this("text/plain", string);
        }
 
        /**
@@ -84,6 +84,7 @@
        {
                // Get servlet response to use when responding with resource
                final Response response = requestCycle.getResponse();
+               response.setContentType(contentType);
                final StringBufferResourceStream stream = new 
StringBufferResourceStream(contentType);
                stream.append(string);
 


Reply via email to