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: users@wicket.apache.org
> 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: users@wicket.apache.org
>> 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: users@wicket.apache.org
>>> 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: users@wicket.apache.org
>>>> 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]

Reply via email to