Updated Branches:
  refs/heads/663-id-to-choice-lookup [created] 2c6264508

WICKET-663 enhance ichoicerenderer with id->choice object lookup


Project: http://git-wip-us.apache.org/repos/asf/wicket/repo
Commit: http://git-wip-us.apache.org/repos/asf/wicket/commit/2c626450
Tree: http://git-wip-us.apache.org/repos/asf/wicket/tree/2c626450
Diff: http://git-wip-us.apache.org/repos/asf/wicket/diff/2c626450

Branch: refs/heads/663-id-to-choice-lookup
Commit: 2c6264508805a6a41f053cdd010def32422d6f5a
Parents: 6953025
Author: Martin Tzvetanov Grigorov <[email protected]>
Authored: Thu Dec 19 12:07:53 2013 +0200
Committer: Martin Tzvetanov Grigorov <[email protected]>
Committed: Thu Dec 19 12:07:53 2013 +0200

----------------------------------------------------------------------
 .../html/form/AbstractSingleSelectChoice.java    | 12 ++----------
 .../wicket/markup/html/form/ChoiceRenderer.java  | 19 ++++++++++++++++++-
 .../markup/html/form/EnumChoiceRenderer.java     |  4 ++--
 .../wicket/markup/html/form/IChoiceRenderer.java | 15 ++++++++++++++-
 .../examples/compref/DropDownChoicePage.java     |  6 +++---
 .../html/form/palette/PaletteTestPage.java       |  3 ++-
 6 files changed, 41 insertions(+), 18 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/wicket/blob/2c626450/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AbstractSingleSelectChoice.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AbstractSingleSelectChoice.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AbstractSingleSelectChoice.java
index 667037a..b710980 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AbstractSingleSelectChoice.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/AbstractSingleSelectChoice.java
@@ -271,16 +271,8 @@ public abstract class AbstractSingleSelectChoice<T> 
extends AbstractChoice<T, T>
        {
                final List<? extends T> choices = getChoices();
                final IChoiceRenderer<? super T> renderer = getChoiceRenderer();
-               for (int index = 0; index < choices.size(); index++)
-               {
-                       // Get next choice
-                       final T choice = choices.get(index);
-                       if (renderer.getIdValue(choice, index).equals(id))
-                       {
-                               return choice;
-                       }
-               }
-               return null;
+               T object = (T) renderer.getObject(id, choices);
+               return object;
        }
 
        /**

http://git-wip-us.apache.org/repos/asf/wicket/blob/2c626450/wicket-core/src/main/java/org/apache/wicket/markup/html/form/ChoiceRenderer.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/ChoiceRenderer.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/ChoiceRenderer.java
index 68d5793..6cac9ec 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/ChoiceRenderer.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/ChoiceRenderer.java
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.markup.html.form;
 
+import java.util.List;
+
 import org.apache.wicket.core.util.lang.PropertyResolver;
 
 /**
@@ -152,4 +154,19 @@ public class ChoiceRenderer<T> implements 
IChoiceRenderer<T>
 
                return returnValue.toString();
        }
-}
\ No newline at end of file
+
+       @Override
+       public T getObject(String id, List<? extends T> choices)
+       {
+               for (int index = 0; index < choices.size(); index++)
+               {
+                       // Get next choice
+                       final T choice = choices.get(index);
+                       if (getIdValue(choice, index).equals(id))
+                       {
+                               return choice;
+                       }
+               }
+               return null;
+       }
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/2c626450/wicket-core/src/main/java/org/apache/wicket/markup/html/form/EnumChoiceRenderer.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/EnumChoiceRenderer.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/EnumChoiceRenderer.java
index ff87c58..839bbb2 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/EnumChoiceRenderer.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/EnumChoiceRenderer.java
@@ -36,7 +36,7 @@ import org.apache.wicket.util.lang.Classes;
  * 
  * @param <T>
  */
-public class EnumChoiceRenderer<T extends Enum<T>> implements 
IChoiceRenderer<T>
+public class EnumChoiceRenderer<T extends Enum<T>> extends ChoiceRenderer<T>
 {
 
        private static final long serialVersionUID = 1L;
@@ -53,7 +53,7 @@ public class EnumChoiceRenderer<T extends Enum<T>> implements 
IChoiceRenderer<T>
         */
        public EnumChoiceRenderer()
        {
-               resourceSource = null;
+               this(null);
        }
 
        /**

http://git-wip-us.apache.org/repos/asf/wicket/blob/2c626450/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IChoiceRenderer.java
----------------------------------------------------------------------
diff --git 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IChoiceRenderer.java
 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IChoiceRenderer.java
index 31b44e7..9a8399e 100644
--- 
a/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IChoiceRenderer.java
+++ 
b/wicket-core/src/main/java/org/apache/wicket/markup/html/form/IChoiceRenderer.java
@@ -16,6 +16,8 @@
  */
 package org.apache.wicket.markup.html.form;
 
+import java.util.List;
+
 import org.apache.wicket.util.io.IClusterable;
 
 /**
@@ -53,4 +55,15 @@ public interface IChoiceRenderer<T> extends IClusterable
         * @return String
         */
        String getIdValue(T object, int index);
-}
\ No newline at end of file
+
+       /**
+        * This method is called to get an object back from its id 
representation.
+        *
+        * @param id
+        *          The id representation of the object
+        * @param choices
+        *          The list of all rendered choices
+        * @return A choice from the list that has this {@code id}
+        */
+       T getObject(String id, List<? extends T> choices);
+}

http://git-wip-us.apache.org/repos/asf/wicket/blob/2c626450/wicket-examples/src/main/java/org/apache/wicket/examples/compref/DropDownChoicePage.java
----------------------------------------------------------------------
diff --git 
a/wicket-examples/src/main/java/org/apache/wicket/examples/compref/DropDownChoicePage.java
 
b/wicket-examples/src/main/java/org/apache/wicket/examples/compref/DropDownChoicePage.java
index e581ae9..8b2031d 100644
--- 
a/wicket-examples/src/main/java/org/apache/wicket/examples/compref/DropDownChoicePage.java
+++ 
b/wicket-examples/src/main/java/org/apache/wicket/examples/compref/DropDownChoicePage.java
@@ -19,13 +19,13 @@ package org.apache.wicket.examples.compref;
 import java.util.Arrays;
 import java.util.List;
 
-import org.apache.wicket.util.io.IClusterable;
 import org.apache.wicket.examples.WicketExamplePage;
+import org.apache.wicket.markup.html.form.ChoiceRenderer;
 import org.apache.wicket.markup.html.form.DropDownChoice;
 import org.apache.wicket.markup.html.form.Form;
-import org.apache.wicket.markup.html.form.IChoiceRenderer;
 import org.apache.wicket.markup.html.panel.FeedbackPanel;
 import org.apache.wicket.model.CompoundPropertyModel;
+import org.apache.wicket.util.io.IClusterable;
 
 
 /**
@@ -84,7 +84,7 @@ public class DropDownChoicePage extends WicketExamplePage
                // like the example below. Don't forget to check out the default
                // implementation of
                // IChoiceRenderer, ChoiceRenderer.
-               form.add(new DropDownChoice<Integer>("integer", INTEGERS, new 
IChoiceRenderer<Integer>()
+               form.add(new DropDownChoice<Integer>("integer", INTEGERS, new 
ChoiceRenderer<Integer>()
                {
                        /**
                         * Gets the display value that is visible to the end 
user.

http://git-wip-us.apache.org/repos/asf/wicket/blob/2c626450/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/palette/PaletteTestPage.java
----------------------------------------------------------------------
diff --git 
a/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/palette/PaletteTestPage.java
 
b/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/palette/PaletteTestPage.java
index ccb62c0..59a0357 100644
--- 
a/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/palette/PaletteTestPage.java
+++ 
b/wicket-extensions/src/test/java/org/apache/wicket/extensions/markup/html/form/palette/PaletteTestPage.java
@@ -19,6 +19,7 @@ package org.apache.wicket.extensions.markup.html.form.palette;
 import java.util.List;
 
 import org.apache.wicket.markup.html.WebPage;
+import org.apache.wicket.markup.html.form.ChoiceRenderer;
 import org.apache.wicket.markup.html.form.Form;
 import org.apache.wicket.markup.html.form.IChoiceRenderer;
 import org.apache.wicket.model.CompoundPropertyModel;
@@ -44,7 +45,7 @@ public class PaletteTestPage extends WebPage
                form = new Form<>("form", new 
CompoundPropertyModel<Object>("WICKET-5086"));
                add(form);
 
-               IChoiceRenderer<String> choiceRenderer = new 
IChoiceRenderer<String>()
+               IChoiceRenderer<String> choiceRenderer = new 
ChoiceRenderer<String>()
                {
                        @Override
                        public Object getDisplayValue(String s)

Reply via email to