Highlighting/Preselecting the first item in the autocomplete list.
------------------------------------------------------------------

                 Key: WICKET-602
                 URL: https://issues.apache.org/jira/browse/WICKET-602
             Project: Wicket
          Issue Type: Improvement
          Components: wicket-extensions
            Reporter: Dipu C Seminlal


I have added a constructor to the Autocomplete textbox where we can specify if 
we need preselecting
public AutoCompleteTextField(String id,boolean preselect)
{
                this(id, (IModel)null,preselect);

}

please find the patch for the same below

Index: 
C:/wicket/wicket-svn/releases/wicket-1.2.6/wicket-extensions/src/main/java/wicket/extensions/ajax/markup/html/autocomplete/AbstractAutoCompleteBehavior.java
===================================================================
--- 
C:/wicket/wicket-svn/releases/wicket-1.2.6/wicket-extensions/src/main/java/wicket/extensions/ajax/markup/html/autocomplete/AbstractAutoCompleteBehavior.java
        (revision 541579)
+++ 
C:/wicket/wicket-svn/releases/wicket-1.2.6/wicket-extensions/src/main/java/wicket/extensions/ajax/markup/html/autocomplete/AbstractAutoCompleteBehavior.java
        (working copy)
@@ -34,6 +34,7 @@
        private static final ResourceReference AUTOCOMPLETE_JS = new 
CompressedResourceReference(
                        AutoCompleteBehavior.class, "wicket-autocomplete.js");
 
+       protected boolean preselect = false;
        /**
         * 
         */
@@ -66,7 +67,7 @@
                Response response = getComponent().getResponse();
                final String id = getComponent().getMarkupId();
                response.write(JavascriptUtils.SCRIPT_OPEN_TAG);
-               response.write("new Wicket.AutoComplete('" + id + "','" + 
getCallbackUrl() + "');");
+               response.write("new Wicket.AutoComplete('" + id + "','" + 
getCallbackUrl() +"',"+ preselect + ");");
                response.write(JavascriptUtils.SCRIPT_CLOSE_TAG);
        }
 
Index: 
C:/wicket/wicket-svn/releases/wicket-1.2.6/wicket-extensions/src/main/java/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteBehavior.java
===================================================================
--- 
C:/wicket/wicket-svn/releases/wicket-1.2.6/wicket-extensions/src/main/java/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteBehavior.java
        (revision 541579)
+++ 
C:/wicket/wicket-svn/releases/wicket-1.2.6/wicket-extensions/src/main/java/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteBehavior.java
        (working copy)
@@ -49,6 +49,19 @@
         */
        public AutoCompleteBehavior(IAutoCompleteRenderer renderer)
        {
+               this(renderer, false);
+       }
+
+
+       /**
+        * Constructor
+        * 
+        * @param renderer
+        *            renderer that will be used to generate output
+        * @param preselect 
+        */
+       public AutoCompleteBehavior(IAutoCompleteRenderer renderer, boolean 
preselect)
+       {
                if (renderer == null)
                {
                        throw new IllegalArgumentException("renderer cannot be 
null");
@@ -54,6 +67,7 @@
                        throw new IllegalArgumentException("renderer cannot be 
null");
                }
                this.renderer = renderer;
+               this.preselect = preselect;
        }
 
 
Index: 
C:/wicket/wicket-svn/releases/wicket-1.2.6/wicket-extensions/src/main/java/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteTextField.java
===================================================================
--- 
C:/wicket/wicket-svn/releases/wicket-1.2.6/wicket-extensions/src/main/java/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteTextField.java
       (revision 541579)
+++ 
C:/wicket/wicket-svn/releases/wicket-1.2.6/wicket-extensions/src/main/java/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteTextField.java
       (working copy)
@@ -43,7 +43,7 @@
         */
        public AutoCompleteTextField(String id, Class type)
        {
-               this(id, (IModel)null, type);
+               this(id, (IModel)null, type,false);
        }
 
        /**
@@ -50,10 +50,11 @@
         * @param id
         * @param model
         * @param type
+        * @param preselect 
         */
-       public AutoCompleteTextField(String id, IModel model, Class type)
+       public AutoCompleteTextField(String id, IModel model, Class 
type,boolean preselect)
        {
-               this(id, model, type, StringAutoCompleteRenderer.INSTANCE);
+               this(id, model, type, 
StringAutoCompleteRenderer.INSTANCE,preselect);
 
        }
 
@@ -60,10 +61,21 @@
        /**
         * @param id
         * @param object
+        * @param preselect 
+        */
+       public AutoCompleteTextField(String id, IModel object,boolean preselect)
+       {
+               this(id, object, (Class)null,preselect);
+       }
+
+       
+       /**
+        * @param id
+        * @param object
         */
        public AutoCompleteTextField(String id, IModel object)
        {
-               this(id, object, (Class)null);
+               this(id, object, (Class)null,false);
        }
 
        /**
@@ -68,10 +80,20 @@
 
        /**
         * @param id
+        * @param preselect 
+        */
+       public AutoCompleteTextField(String id,boolean preselect)
+       {
+               this(id, (IModel)null,preselect);
+
+       }
+       
+       /**
+        * @param id
         */
        public AutoCompleteTextField(String id)
        {
-               this(id, (IModel)null);
+               this(id, (IModel)null,false);
 
        }
 
@@ -91,7 +113,7 @@
         */
        public AutoCompleteTextField(String id, Class type, 
IAutoCompleteRenderer renderer)
        {
-               this(id, null, type, renderer);
+               this(id, null, type, renderer,false);
        }
 
        /**
@@ -101,7 +123,7 @@
         */
        public AutoCompleteTextField(String id, IModel model, 
IAutoCompleteRenderer renderer)
        {
-               this(id, model, (Class)null, renderer);
+               this(id, model, (Class)null, renderer,false);
        }
 
        /**
@@ -109,8 +131,9 @@
         * @param model
         * @param type
         * @param renderer
+        * @param preselect 
         */
-       public AutoCompleteTextField(String id, IModel model, Class type, 
IAutoCompleteRenderer renderer)
+       public AutoCompleteTextField(String id, IModel model, Class type, 
IAutoCompleteRenderer renderer,boolean preselect)
        {
                super(id, model, type);
 
@@ -117,7 +140,7 @@
                // this disables Firefox autocomplete
                add(new SimpleAttributeModifier("autocomplete","off"));
                
-               add(new AutoCompleteBehavior(renderer)
+               add(new AutoCompleteBehavior(renderer,preselect)
                {
 
                        private static final long serialVersionUID = 1L;
Index: 
C:/wicket/wicket-svn/releases/wicket-1.2.6/wicket-extensions/src/main/java/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
===================================================================
--- 
C:/wicket/wicket-svn/releases/wicket-1.2.6/wicket-extensions/src/main/java/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
   (revision 541579)
+++ 
C:/wicket/wicket-svn/releases/wicket-1.2.6/wicket-extensions/src/main/java/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
   (working copy)
@@ -7,7 +7,7 @@
 if (typeof(Wicket) == "undefined")
        Wicket = { };
 
-Wicket.AutoComplete=function(elementId,callbackUrl){
+Wicket.AutoComplete=function(elementId,callbackUrl,preselect){
     var KEY_BACKSPACE=8;
     var KEY_TAB=9;
     var KEY_ENTER=13;
@@ -167,8 +167,12 @@
     }
 
     function updateChoices(){
-        selected=-1;
-
+        if(preselect==true){
+               selected = 0;
+        }
+        else{
+               selected=-1;
+        }        
         var value = wicketGet(elementId).value;
                var request = new 
Wicket.Ajax.Request(callbackUrl+"&q="+processValue(value), doUpdateChoices, 
false, true, false, "wicket-autocomplete|d");
                request.get();



-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to