You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by iv...@apache.org on 2008/06/26 18:49:29 UTC

svn commit: r671945 - in /wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete: AbstractAutoCompleteBehavior.java AutoCompleteSettings.java wicket-autocomplete.js

Author: ivaynberg
Date: Thu Jun 26 09:49:29 2008
New Revision: 671945

URL: http://svn.apache.org/viewvc?rev=671945&view=rev
Log:
WICKET-1716 make autocompleter more customizable

Modified:
    wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AbstractAutoCompleteBehavior.java
    wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteSettings.java
    wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js

Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AbstractAutoCompleteBehavior.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AbstractAutoCompleteBehavior.java?rev=671945&r1=671944&r2=671945&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AbstractAutoCompleteBehavior.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AbstractAutoCompleteBehavior.java Thu Jun 26 09:49:29 2008
@@ -56,10 +56,16 @@
 
 	protected final String constructSettingsJS()
 	{
-		return String.format("{preselect:%b,maxHeight:%d,showListOnEmptyInput:%b}",
-			settings.getPreselect(), settings.getMaxHeightInPx(),
-			settings.getShowListOnEmptyInput());
-	}
+        final StringBuilder sb = new StringBuilder();
+        sb.append("{preselect: ").append(settings.getPreselect());
+        sb.append(",maxHeight: ").append(settings.getMaxHeightInPx());
+        sb.append(",adjustInputWidth: ").append(settings.isAdjustInputWidth());
+        sb.append(",showListOnEmptyInput: ").append(settings.getShowListOnEmptyInput());
+        if(settings.getCssClassName() != null)
+            sb.append(",className: '").append(settings.getCssClassName()).append('\'');
+        sb.append('}');
+        return sb.toString();
+    }
 
 	/**
 	 * @see org.apache.wicket.ajax.AbstractDefaultAjaxBehavior#onBind()

Modified: wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteSettings.java
URL: http://svn.apache.org/viewvc/wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteSettings.java?rev=671945&r1=671944&r2=671945&view=diff
==============================================================================
--- wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteSettings.java (original)
+++ wicket/trunk/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/AutoCompleteSettings.java Thu Jun 26 09:49:29 2008
@@ -54,7 +54,11 @@
 
 	private boolean showListOnEmptyInput = false;
 
-	/**
+    private String cssClassName = null;
+
+    private boolean adjustInputWidth = true;
+
+  /**
 	 * Indicates whether the first item in the list is automatically selected when the autocomplete
 	 * list is shown.
 	 * 
@@ -136,4 +140,52 @@
 		this.showListOnEmptyInput = showListOnEmptyInput;
 		return this;
 	}
+
+    /**
+     * Get CSS class name to add to the autocompleter markup container
+     *
+     * @return CSS class name, or <code>null</code> if not used
+     */
+    public String getCssClassName()
+    {
+        return cssClassName;
+    }
+
+    /**
+     * Sets an CSS class name to add to the autocompleter markup container
+     * <p/>
+     * This makes it easier to have multiple autocompleters in your application
+     * with different style and layout.
+     *
+     * @param cssClassName valid CSS class name
+     */
+    public void setCssClassName(final String cssClassName)
+    {
+        this.cssClassName = cssClassName;
+    }
+
+    /**
+     * Tells if wicket should adjust the width of the autocompleter selection window
+     * to the width of the related input field.
+     *
+     * @return   <code>true</code> if the autocompleter should have the same size as
+     *             the input field, <code>false</code> for default browser behavior
+     */
+    public boolean isAdjustInputWidth()
+    {
+        return adjustInputWidth;
+    }
+
+  /**
+   * Adjust the width of the autocompleter selection window to the width of the related input field.
+   * <p/>
+   * Otherwise the size will depend on the default browser behavior and CSS.
+   *
+    * @param adjustInputWidth  <code>true</code> if the autocompleter should have the same size  as
+   *                           the input field, <code>false</code> for default browser behavior
+   */
+    public void setAdjustInputWidth(final boolean adjustInputWidth)
+    {
+        this.adjustInputWidth = adjustInputWidth;
+    }
 }
\ No newline at end of file

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=671945&r1=671944&r2=671945&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 Thu Jun 26 09:49:29 2008
@@ -194,8 +194,10 @@
         var choiceDiv=document.getElementById(getMenuId());
         if (choiceDiv==null) {
         	var container = document.createElement("div");
-        	container.className="wicket-aa-container";
-        	document.body.appendChild(container);
+            container.className ="wicket-aa-container";
+            if(cfg.className)
+              container.className += ' ' + cfg.className;
+            document.body.appendChild(container);
         	container.style.display="none";
         	container.style.overflow="auto";
             container.style.position="absolute";            
@@ -273,7 +275,8 @@
         container.style.zIndex=(Number(index)!=Number.NaN?Number(index)+1:index);
         container.style.left=position[0]+'px'
         container.style.top=(input.offsetHeight+position[1])+'px';
-        container.style.width=input.offsetWidth+'px';
+        if(cfg.adjustInputWidth)
+          container.style.width=input.offsetWidth+'px';
         visible=1;
         hideShowCovered();
     }