Author: dashorst
Date: Sun Jan 20 08:16:14 2008
New Revision: 613595

URL: http://svn.apache.org/viewvc?rev=613595&view=rev
Log:
WICKET-1293 Improve SelectOptions: allow customization of created SelectOption 
objects

Modified:
    
wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/select/Select.java
    
wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/select/SelectOptions.java

Modified: 
wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/select/Select.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/select/Select.java?rev=613595&r1=613594&r2=613595&view=diff
==============================================================================
--- 
wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/select/Select.java
 (original)
+++ 
wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/select/Select.java
 Sun Jan 20 08:16:14 2008
@@ -37,7 +37,29 @@
  * markup between the <select> tag and its children <option> tags: 
allowing for such
  * things as <optgroup> tags.
  * 
- * TODO Post 1.2: General: Example
+ * <p>
+ * Example HTML:
+ * 
+ * <pre>
+ *    &lt;select wicket:id=&quot;select&quot; multiple=&quot;multiple&quot;&gt;
+ *        &lt;wicket:container wicket:id=&quot;options&quot;&gt;
+ *            &lt;option wicket:id=&quot;option&quot;&gt;Option 
Label&lt;/option&gt;
+ *        &lt;/wicket:container&gt;
+ *    &lt;/select&gt;
+ * </pre>
+ * 
+ * Related Java Code:
+ * 
+ * <pre>
+ * Select select = new Select(&quot;select&quot;, selectionModel);
+ * add(select);
+ * SelectOptions options = new SelectOptions(&quot;options&quot;, elements, 
renderer);
+ * select.add(options);
+ * </pre>
+ * 
+ * Note that you don't need to add component(s) for the &lt;option&gt; tag - 
they are created by
+ * SelectOptions
+ * <p>
  * 
  * @see SelectOption
  * @see SelectOptions

Modified: 
wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/select/SelectOptions.java
URL: 
http://svn.apache.org/viewvc/wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/select/SelectOptions.java?rev=613595&r1=613594&r2=613595&view=diff
==============================================================================
--- 
wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/select/SelectOptions.java
 (original)
+++ 
wicket/trunk/jdk-1.4/wicket-extensions/src/main/java/org/apache/wicket/extensions/markup/html/form/select/SelectOptions.java
 Sun Jan 20 08:16:14 2008
@@ -39,7 +39,7 @@
 {
        private static final long serialVersionUID = 1L;
        private boolean recreateChoices = false;
-       private IOptionRenderer renderer;
+       private final IOptionRenderer renderer;
 
        /**
         * Constructor
@@ -75,7 +75,7 @@
         */
        public SelectOptions setRecreateChoices(boolean refresh)
        {
-               this.recreateChoices = refresh;
+               recreateChoices = refresh;
                return this;
        }
 
@@ -96,7 +96,7 @@
                                if (!(modelObject instanceof Collection))
                                {
                                        throw new WicketRuntimeException("Model 
object " + modelObject +
-                                                       " not a collection");
+                                               " not a collection");
                                }
 
                                // iterator over model objects for SelectOption 
components
@@ -113,16 +113,29 @@
                                        Object value = it.next();
                                        String text = 
renderer.getDisplayValue(value);
                                        IModel model = renderer.getModel(value);
-                                       row.add(new 
SimpleSelectOption("option", model, text));
+                                       row.add(newOption(text, model));
                                }
                        }
                }
        }
 
+       /**
+        * Factory method for creating a new <code>SelectOption</code>. 
Override to add your own
+        * extensions, such as Ajax behaviors.
+        * 
+        * @param text
+        * @param model
+        * @return
+        */
+       protected SelectOption newOption(String text, IModel model)
+       {
+               return new SimpleSelectOption("option", model, text);
+       }
+
        private static class SimpleSelectOption extends SelectOption
        {
 
-               private String text;
+               private final String text;
 
                /**
                 * @param id


Reply via email to