afaik value is not used in checkbox or radio, not even sure that its
valid to have it.

iidentfierrenderer is a bad name since the id isnt actually rendered...

-igor


On Fri, May 16, 2008 at 9:07 AM, Hoover, William <[EMAIL PROTECTED]> wrote:
> It could be left as is and use the display value as expected (i.e.
> <input type="checkbox" id="ID_VALUE" value="DISPLAY_VALUE"  />).
>
> Another option would be to have an identifier renderer:
>
> public interface IChoiceRenderer extends IIdentifierRenderer
> {
>        Object getDisplayValue(Object object);
> }
>
> public interface IIdentifierRenderer extends IClusterable
> {
>        String getIdValue(Object object, int index);
> }
>
> -----Original Message-----
> From: Igor Vaynberg [mailto:[EMAIL PROTECTED]
> Sent: Friday, May 16, 2008 11:47 AM
> To: [email protected]
> Subject: Re: IChoiceRenderer: RadioGroup CheckBoxMultipleChoice
>
> if you use an ldm in choice/choicegroup then you should have instance
> equality available since you will probably load the objects from the
> same place, so during request processing they are consistent.
>
> as far as choicerenderer, i dont think thats a good idea, what do you do
> with getdisplayvalue()?
>
> -igor
>
> On Fri, May 16, 2008 at 8:35 AM, Hoover, William <[EMAIL PROTECTED]>
> wrote:
>> I agree, but there are some cases where it will not be possible to
>> implement equals/hashcode on the model object.
>>
>> I would be more of a proponent to have as much consistency across
>> components as possible- which would mean that ICoiceRenderer would be
>> available, but not enforced, in any component that needs to handle
>> choices (this is already the case for models ---> IModelComparator
>> Component#getModelComparator(...)).
>>
>> I'm not sure I understand what you mean by using a
>> LoadableDetachableModel to solve the issue. Could you elaborate?
>>
>> -----Original Message-----
>> From: Igor Vaynberg [mailto:[EMAIL PROTECTED]
>> Sent: Friday, May 16, 2008 11:12 AM
>> To: [email protected]
>> Subject: Re: IChoiceRenderer: RadioGroup CheckBoxMultipleChoice
>>
>> then use loadable detachable models that will ensure instance
> equality.
>> we can let the group take a comparator, but its yet another
>> complication. i see it as a reasonable enough requirement that objects
>
>> properly implement equals and hashcode.
>>
>> -igor
>>
>> On Fri, May 16, 2008 at 7:58 AM, Hoover, William <[EMAIL PROTECTED]>
>> wrote:
>>> yes, that will work in my example, but what if MyObjectOption is not
>>> part of my namespace?
>>>
>>> -----Original Message-----
>>> From: Igor Vaynberg [mailto:[EMAIL PROTECTED]
>>> Sent: Friday, May 16, 2008 10:14 AM
>>> To: [email protected]
>>> Subject: Re: IChoiceRenderer: RadioGroup CheckBoxMultipleChoice
>>>
>>> why dont you just implement equals/hashcode on MyObjectOption???
>>>
>>> -igor
>>>
>>>
>>> On Fri, May 16, 2008 at 5:14 AM, Hoover, William
>>> <[EMAIL PROTECTED]>
>>> wrote:
>>>> Here is an example of what I'm referring to:
>>>>
>>>> class MyObject {
>>>>        private Long id;
>>>>        private MyObjectOption myObjectOption;
>>>>
>>>>        public MyObject(final Long id){
>>>>                setId(id);
>>>>                ...
>>>>        }
>>>>        ...
>>>> }
>>>>
>>>> class MyObjectOption {
>>>>        private Long id;
>>>>        private String name;
>>>>
>>>>        public MyObjectOption(final Long id){
>>>>                setId(id);
>>>>                ...
>>>>        }
>>>>        ...
>>>> }
>>>>
>>>> // in the WebPage
>>>> final MyObject myObject = new MyObject(1L); ...
>>>> myObject.setMyObjectOption(new MyObjectOption(200L));
>>>>
>>>> final List<MyObjectOption> myObjectOptionList = new
>>>> ArrayList<MyObjectOption>(); myObjectOptionList.add(new
>>>> MyObjectOption(100L)); myObjectOptionList.add(new
>>>> MyObjectOption(200L)); myObjectOptionList.add(new
>>>> MyObjectOption(300L));
>>>>
>>>> final Form myForm = new Form("form-myobject", new
>>>> CompoundPropertyModel(myObject)); ...
>>>> final RadioGroup group = new RadioGroup("myObjectOption");
>>>> group.add(new ListView("div-myobject-options-view", myObjectList) {
>>>>        protected final void populateItem(final ListItem item) {
>>>>                final MyObjectOption myObjectOption =
>>>> (MyObjectOption)
>>
>>>> item.getModelObject();
>>>>                item.add(new Label("label-myobject-option-name",
>>>> myObjectOption.getName()));
>>>>                item.add(new Radio("input-radio-myobject-option", new
>
>>>> Model(myObjectOption)));
>>>>        }
>>>> });
>>>> myForm.add(group);
>>>> add(myForm);
>>>>
>>>>
>>>> <form wicket:id="form-myobject">
>>>>        <div wicket:id="myObjectOption">
>>>>                <div wicket:id="div-myobject-options-view">
>>>>                        <label
> wicket:id="label-myobject-option-name">
>>>>                                [MyObjectOption Name]
>>>>                        </label>
>>>>                        <input
> wicket:id="input-radio-myobject-option"
>>>> type="radio" />
>>>>                </div>
>>>>        </div>
>>>> </form>
>>>>
>>>> In the example above myObjectOption would never be selected because
>>>> it
>>>
>>>> is not the same instance of the MyObjectOption that is in
>>>> myObjectOptionList (index 1) even though they share the same ID. If
>>>> an
>>>
>>>> IChoiceRenderer was provided to the RadioGroup the following could
>>>> accomplish the task of making the selection work:
>>>>
>>>> final IChoiceRenderer myObjectOptionRenderer = new ChoiceRenderer()
> {
>>>>        ...
>>>>        public final String getIdValue(final Object object, final int
>>>> index) {
>>>>                final Object id = ((MyObjectOption) object).getId();
>>>>                return (id != null) ? id.toString() :
>>>> super.getIdValue(object, index);
>>>>        }
>>>>        ...
>>>> };
>>>>
>>>> -----Original Message-----
>>>> From: Igor Vaynberg [mailto:[EMAIL PROTECTED]
>>>> Sent: Thursday, May 15, 2008 7:16 PM
>>>> To: [email protected]
>>>> Subject: Re: IChoiceRenderer: RadioGroup CheckBoxMultipleChoice
>>>>
>>>> On Thu, May 15, 2008 at 3:12 PM, Hoover, William
>>>> <[EMAIL PROTECTED]>
>>>> wrote:
>>>>> It's strange that that kind of functionality is provided when
>>>>> multiple
>>>>
>>>>> selections is needed (i.e. CheckBoxMultipleChoice), but it is not
>>>>> when
>>>>
>>>>> only one choice is needed (i.e. RadioGroup/CheckGroup).
>>>>
>>>> CheckGroup is a muti-selection component
>>>>
>>>>
>>>>
>>>>> It is an oddity
>>>>> that other components that have choices (i.e. DropDownChoice, etc.)
>
>>>>> provide a means to use an IChoiceRenderer, but some do not.
>>>>
>>>> the whole point of Radio/CheckGroup is to give the user more control
>
>>>> then what IChoiceRenderer offers.
>>>>
>>>>> What if
>>>>> someone is using a RadioGroup/CheckGroup that uses some form of a
>>>>> RepeatingView to generate the Radio/Check options dynamically? In
>>>>> the
>>>
>>>>> case where they need to make a selection using a separate choice
>>>>> instance than what is in the list, how would they accomplish that?
>>>>> If
>>>
>>>>> they set the choice on the RadioGroup/CheckGroup model it will
>>>>> never
>>
>>>>> be selected because they are different instances, and because there
>
>>>>> is
>>>>
>>>>> not IChoiceRenderer it is not possible to define an ID value to
>>>>> determine the equality of the two instances.
>>>>
>>>> Not really sure what you mean here. The selection is based on the
>>>> model object of Radio/Check, not the Radio/Check instance itself...
>>>>
>>>> -igor
>>>>
>>>>
>>>>>
>>>>> -----Original Message-----
>>>>> From: Igor Vaynberg [mailto:[EMAIL PROTECTED]
>>>>> Sent: Thursday, May 15, 2008 5:50 PM
>>>>> To: [email protected]
>>>>> Subject: Re: IChoiceRenderer: RadioGroup CheckBoxMultipleChoice
>>>>>
>>>>> well, the whole point of radio/check group is to allow user
>>>>> complete
>>
>>>>> control over markup. the whole point of choice renderer is to
>>>>> automate
>>>>
>>>>> markup generation, so there is just a big mismatch. eg i always use
>
>>>>> radio/check group when using a choice renderer would be
>> inconvenient.
>>>>>
>>>>> you can always roll your own subclass, i just dont think something
>>>>> like that would belong in core, its just one more parallel way of
>>>>> doing something.
>>>>>
>>>>> -igor
>>>>>
>>>>> On Thu, May 15, 2008 at 2:44 PM, Hoover, William
>>>>> <[EMAIL PROTECTED]>
>>>>> wrote:
>>>>>> yes... sorry CheckGroup is what I meant. It seems as though
>>>>>> RadioGroup/CheckGroup should also have the capability of using an
>>>>>> IChoiceRenderer as well, right? One reason I was thinking that is
>>>>>> if
>>>
>>>>>> someone has a model object instance A that is a different instance
>
>>>>>> than any of the choices in the list, they can override the
>>>>>> IChoiceRenderer#getIdValue(...) and provide the identifier. Even
>>>>>> though none of the choices are the same instance of A they can
>>>>>> still
>>>
>>>>>> determine equality for selection purposes using the ID value.
>>>>>>
>>>>>> -----Original Message-----
>>>>>> From: Igor Vaynberg [mailto:[EMAIL PROTECTED]
>>>>>> Sent: Thursday, May 15, 2008 4:47 PM
>>>>>> To: [email protected]
>>>>>> Subject: Re: IChoiceRenderer: RadioGroup CheckBoxMultipleChoice
>>>>>>
>>>>>> checkboxmultiplechoice uses ichoicerenderer afaik, did you mean
>>>>>> checkgroup?
>>>>>>
>>>>>> radiogroup/checkgroup work differently, they leave all text
>>>>>> generation
>>>>>
>>>>>> up to the user so no choice renderer is required.
>>>>>>
>>>>>> -igor
>>>>>>
>>>>>> On Thu, May 15, 2008 at 1:01 PM, Hoover, William
>>>>>> <[EMAIL PROTECTED]>
>>>>>> wrote:
>>>>>>> For consistency sake, wouldn't it be wise to use IChoiceRenderer
>>>>>>> for
>>>>
>>>>>>> RadioGroup and CheckBoxMultipleChoice? Seems like a natural
>>>>>>> solution
>>>>
>>>>>>> to override IChoiceRenderer#getIdValue(...) to infer IDs for
>>>>>>> selection
>>>>>>
>>>>>>> comparison the same way that it is being done in DropDownChoice.
>>>>>>> Otherwise, how else can you use two different model object
>>>>>>> instances
>>>>
>>>>>>> that share the same ID to be selectable?
>>>>>>>
>>>>>>>
>>>>>>> -----------------------------------------------------------------
>>>>>>> -
>>>>>>> -
>>>>>>> -
>>>>>>> - To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>>>
>>>>>>>
>>>>>>
>>>>>> ------------------------------------------------------------------
>>>>>> -
>>>>>> -
>>>>>> - To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>>
>>>>>>
>>>>>>
>>>>>> ------------------------------------------------------------------
>>>>>> -
>>>>>> -
>>>>>> - To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>>
>>>>>>
>>>>>
>>>>> -------------------------------------------------------------------
>>>>> -
>>>>> - To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>
>>>>>
>>>>>
>>>>> -------------------------------------------------------------------
>>>>> -
>>>>> - To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>>
>>>>>
>>>>
>>>> --------------------------------------------------------------------
>>>> - To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>
>>>>
>>>>
>>>> --------------------------------------------------------------------
>>>> - To unsubscribe, e-mail: [EMAIL PROTECTED]
>>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>>
>>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>
>>>
>>>
>>> ---------------------------------------------------------------------
>>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>>> For additional commands, e-mail: [EMAIL PROTECTED]
>>>
>>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>>
>> ---------------------------------------------------------------------
>> To unsubscribe, e-mail: [EMAIL PROTECTED]
>> For additional commands, e-mail: [EMAIL PROTECTED]
>>
>>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>
>
> ---------------------------------------------------------------------
> To unsubscribe, e-mail: [EMAIL PROTECTED]
> For additional commands, e-mail: [EMAIL PROTECTED]
>
>

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to