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>
+ * <select wicket:id="select" multiple="multiple">
+ * <wicket:container wicket:id="options">
+ * <option wicket:id="option">Option
Label</option>
+ * </wicket:container>
+ * </select>
+ * </pre>
+ *
+ * Related Java Code:
+ *
+ * <pre>
+ * Select select = new Select("select", selectionModel);
+ * add(select);
+ * SelectOptions options = new SelectOptions("options", elements,
renderer);
+ * select.add(options);
+ * </pre>
+ *
+ * Note that you don't need to add component(s) for the <option> 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