Wicket models are a way to locate values.

Let's take a look at wicket.examples.compref.CheckBoxPage. That page
has a nested static class called Input, with a property bool:

        private static class Input implements Serializable
        {
                public Boolean bool = Boolean.TRUE;
        }

Then, in CheckBoxPage's constructor we do (simplified):

  final Input input = new Input();
  setModel(new CompoundPropertyModel(input));
  Form form = new Form("form");
  form.add(new CheckBox("bool"));

CompoundPropertyModel might be a bit distracting, so let's rewrite
this to use a normal model:

  final Input input = new Input();
  Form form = new Form("form");
  form.add(new CheckBox("bool", PropertyModel(input, "bool")));

another way to rewrite the model:

        form.add(new CheckBox("bool", new Model(input)
        {
                public Object getObject()
                {
                        return ((Input)super.getObject()).bool;
                }

                public void setObject(Object object)
                {
                        ((Input)super.getObject()).bool = (Boolean)object;
                }
        }));

and yet another to rewrite the model is:

        form.add(new CheckBox("bool", new IModel()
        {
                public Object getObject()
                {
                        return input.bool;
                }
        
                public void setObject(Object object)
                {
                        input.bool = (Boolean)object;
                }
        
                public void detach()
                {
                }
        }));

and *yet* another way is:

        form.add(new CheckBox("bool", new AbstractCheckBoxModel()
        {
                @Override
                public boolean isSelected()
                {
                        return input.bool;
                }

                @Override
                public void select()
                {
                        input.bool = true;
                }

                @Override
                public void unselect()
                {
                        input.bool = false;
                }
        }));

If you compare these examples, the constant factor is that we're after
the bool property of the Input instance. It is important that you
understand that the typical thing for Wicket models to do is to pass
and get values from other objects, typically your domain objects or
'form beans' (that's the name which other frameworks often use). Here,
the Input instance is that object, and any of the above combinations
just provides the facility for components to work on that object in a
generic fashion.

So... the CheckBox component calls getObject on it's model to
determine whether it should render itself as checked or not. It calls
setObject on the model when it receives input. The typical case for
that is when it is part of a form. The form calls updateModel on all
nested components, and the components then call setObject with the
received  (and converted) input.

Now, to get back to your original question. We could rewrite the above
example to work on a list of checkboxes/ input objects like this:

        List<Input> inputs = new ArrayList<Input>(Arrays.asList(new Input[] {
new Input(),
                        new Input(), new Input() }));
        ListView l = new ListView("list", inputs)
        {
                @Override
                protected void populateItem(ListItem item)
                {
                        // item.getModel().getObject() would give the Input 
instance for
                        // this particular list element
                        item.add(new CheckBox("bool", new 
PropertyModel(item.getModel(), "bool")));
                }
        };
        form.add(l);
        System.err.println("selection for the second input: " + 
inputs.get(1).bool);

As you can see, the idea stays the same; in both cases we're after the
bool property of instances of Input.

I'd say, let this sink in a bit, and try to play with this code
yourself, so that you understand better how it works.

Hope this helps,

Eelco

On 3/27/07, GS-ikiini <[EMAIL PROTECTED]> wrote:
>
> ok so i'm trying to implement my own model but i have little idea what i am
> suppose to be trying to do here. can someone please give a brief overview as
> to what the getObject, and setObject expects and does please. I am really
> lost and need some help with this. also how does the model intereact with
> the componenet..what do they tell each other.?
>
> -B
>
>
>
> igor.vaynberg wrote:
> >
> > On 3/26/07, GS-ikiini <[EMAIL PROTECTED]> wrote:
> >>
> >>
> >> its saying that you create a custom model that takes as an argument in
> >> the
> >> constructor the object/model that you want to tie to a check box. this
> >> model
> >> is used as the model that we pass to our check box component. the
> >> setObject
> >> method gets called at the push of the submit button and sets that
> >> object/model as part of the collection if it is selected. is this
> >> correct?
> >
> >
> > sounds about right.
> >
> > -igor
> >
> >
> >
> > -B
> >>
> >>
> >>
> >> igor.vaynberg wrote:
> >> >
> >> > if you dont grasp the concepts perhaps you should read the wiki page on
> >> > models
> >> >
> >> > the concept is:
> >> >
> >> > since the checkbox works by setting/clearing a boolean the model
> >> > translates
> >> > a set boolean->insert into collection and clear boolean->remove from
> >> > collection.
> >> >
> >> > there is explanation there, try to read that too, not just look at the
> >> > code.
> >> >
> >> > -igor
> >> >
> >> >
> >> > On 3/26/07, GS-ikiini <[EMAIL PROTECTED]> wrote:
> >> >>
> >> >>
> >> >> I don't quite grasp the concepts used in that tread. from what i
> >> >> understand i
> >> >> should create a separate model that takes the model that has to get
> >> >> set(the
> >> >> model that is selected via checkbox) in the object i'm making, and
> >> places
> >> >> it
> >> >> in a collection if it is selected. Is this correct?
> >> >>
> >> >> -B
> >> >>
> >> >>
> >> >>
> >> >> igor.vaynberg wrote:
> >> >> >
> >> >> > please search mail archives before posting
> >> >> >
> >> >> >
> >> >>
> >> http://www.nabble.com/Design-questions%3A-Use-of-controllers-and-wicket-models-tf3373279.html#a9510784
> >> >> >
> >> >> > -igor
> >> >> >
> >> >> >
> >> >> > On 3/26/07, GS-ikiini <[EMAIL PROTECTED]> wrote:
> >> >> >>
> >> >> >>
> >> >> >> Hey all,
> >> >> >>
> >> >> >> I have a list view that contains a list of objects. these objects
> >> are
> >> >> >> selectable via checkboxes. My problem is that i don't know how to
> >> know
> >> >> or
> >> >> >> tell my code what objects have been selected. here is what i want
> >> to
> >> >> do.
> >> >> >>
> >> >> >> i ahve a list of objects lets call them pens. So i have a list of 5
> >> >> >> different types of pen objects. this object type is a property ( a
> >> >> list
> >> >> >> of
> >> >> >> this object to be specific) in another object say a pencilCase.  i
> >> >> want
> >> >> a
> >> >> >> user to select 0-many different pens which will then be placed in
> >> the
> >> >> >> pencil
> >> >> >> case by the applicaition. what i am not sure how to do is associate
> >> >> each
> >> >> >> pen
> >> >> >> in the list with what is selected. I seen on the wiki that i can
> >> add
> >> a
> >> >> >> boolean property to the pens called selected. and make that what
> >> the
> >> >> >> checkbox renders on. but i don't have access to the pens to do
> >> that.
> >> >> is
> >> >> >> another some way i can do an association externally? I thought of
> >> >> >> creating
> >> >> >> a
> >> >> >> separate list of booleans variables that i can compare side by side
> >> >> with
> >> >> >> the
> >> >> >> list of pens. selection of check boxes will set the booleans in
> >> that
> >> >> >> list.
> >> >> >> then look at what is true and go get the pen in the pens list at
> >> that
> >> >> >> position and do what i got to do with it. however I think this
> >> method
> >> >> 1-
> >> >> >> may
> >> >> >> not work and 2 - is to elementary and not very professional. I am
> >> sure
> >> >> >> there
> >> >> >> is another way to do this. Please advise.
> >> >> >>
> >> >> >>
> >> >> >> -B
> >> >> >> --
> >> >> >> View this message in context:
> >> >> >>
> >> >>
> >> http://www.nabble.com/check-box-questions-how-to-I-associate-an-object-with-a-boolean-seletion-from-a-checkbox-component-tf3469311.html#a9680769
> >> >> >> Sent from the Wicket - User mailing list archive at Nabble.com.
> >> >> >>
> >> >> >>
> >> >> >>
> >> >>
> >> -------------------------------------------------------------------------
> >> >> >> Take Surveys. Earn Cash. Influence the Future of IT
> >> >> >> Join SourceForge.net's Techsay panel and you'll get the chance to
> >> >> share
> >> >> >> your
> >> >> >> opinions on IT & business topics through brief surveys-and earn
> >> cash
> >> >> >>
> >> >>
> >> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> >> >> >> _______________________________________________
> >> >> >> Wicket-user mailing list
> >> >> >> [email protected]
> >> >> >> https://lists.sourceforge.net/lists/listinfo/wicket-user
> >> >> >>
> >> >> >
> >> >> >
> >> >>
> >> -------------------------------------------------------------------------
> >> >> > Take Surveys. Earn Cash. Influence the Future of IT
> >> >> > Join SourceForge.net's Techsay panel and you'll get the chance to
> >> share
> >> >> > your
> >> >> > opinions on IT & business topics through brief surveys-and earn cash
> >> >> >
> >> >>
> >> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> >> >> > _______________________________________________
> >> >> > Wicket-user mailing list
> >> >> > [email protected]
> >> >> > https://lists.sourceforge.net/lists/listinfo/wicket-user
> >> >> >
> >> >> >
> >> >>
> >> >> --
> >> >> View this message in context:
> >> >>
> >> http://www.nabble.com/check-box-questions-how-to-I-associate-an-object-with-a-boolean-seletion-from-a-checkbox-component-tf3469311.html#a9682170
> >> >> Sent from the Wicket - User mailing list archive at Nabble.com.
> >> >>
> >> >>
> >> >>
> >> -------------------------------------------------------------------------
> >> >> Take Surveys. Earn Cash. Influence the Future of IT
> >> >> Join SourceForge.net's Techsay panel and you'll get the chance to
> >> share
> >> >> your
> >> >> opinions on IT & business topics through brief surveys-and earn cash
> >> >>
> >> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> >> >> _______________________________________________
> >> >> Wicket-user mailing list
> >> >> [email protected]
> >> >> https://lists.sourceforge.net/lists/listinfo/wicket-user
> >> >>
> >> >
> >> >
> >> -------------------------------------------------------------------------
> >> > Take Surveys. Earn Cash. Influence the Future of IT
> >> > Join SourceForge.net's Techsay panel and you'll get the chance to share
> >> > your
> >> > opinions on IT & business topics through brief surveys-and earn cash
> >> >
> >> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> >> > _______________________________________________
> >> > Wicket-user mailing list
> >> > [email protected]
> >> > https://lists.sourceforge.net/lists/listinfo/wicket-user
> >> >
> >> >
> >>
> >> --
> >> View this message in context:
> >> http://www.nabble.com/check-box-questions-how-to-I-associate-an-object-with-a-boolean-seletion-from-a-checkbox-component-tf3469311.html#a9682786
> >> Sent from the Wicket - User mailing list archive at Nabble.com.
> >>
> >>
> >> -------------------------------------------------------------------------
> >> Take Surveys. Earn Cash. Influence the Future of IT
> >> Join SourceForge.net's Techsay panel and you'll get the chance to share
> >> your
> >> opinions on IT & business topics through brief surveys-and earn cash
> >> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> >> _______________________________________________
> >> Wicket-user mailing list
> >> [email protected]
> >> https://lists.sourceforge.net/lists/listinfo/wicket-user
> >>
> >
> > -------------------------------------------------------------------------
> > Take Surveys. Earn Cash. Influence the Future of IT
> > Join SourceForge.net's Techsay panel and you'll get the chance to share
> > your
> > opinions on IT & business topics through brief surveys-and earn cash
> > http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> > _______________________________________________
> > Wicket-user mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/wicket-user
> >
> >
>
> --
> View this message in context: 
> http://www.nabble.com/check-box-questions-how-to-I-associate-an-object-with-a-boolean-seletion-from-a-checkbox-component-tf3469311.html#a9696881
> Sent from the Wicket - User mailing list archive at Nabble.com.
>
>
> -------------------------------------------------------------------------
> Take Surveys. Earn Cash. Influence the Future of IT
> Join SourceForge.net's Techsay panel and you'll get the chance to share your
> opinions on IT & business topics through brief surveys-and earn cash
> http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
> _______________________________________________
> Wicket-user mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/wicket-user
>

-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys-and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
_______________________________________________
Wicket-user mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/wicket-user

Reply via email to