Hi-

thanks, that's just what I was looking for.
Somehow all the wrapping of models inside of models still doesn't come naturally to me.

-markus

Am 31.01.2008 um 14:16 schrieb John Krasnay:

On Thu, Jan 31, 2008 at 01:18:50PM +0100, Maeder Thomas wrote:
Why insist on a CompoundPropertyModel? My first instinct would be to
create a custom model for the checkboxes (which sets/unsets a single
bit).

Thomas

Agreed. Here's a model that I use to solve the same problem:

public class BitmappedFlagModel implements IModel {

    private IModel bitmapModel;
    private int mask;

    public BitmappedFlagModel(IModel bitmapModel, int mask) {
        this.bitmapModel = bitmapModel;
        this.mask = mask;
    }

    public Object getObject() {
        return (getBitmap() & mask) > 0;
    }

    public void setObject(Object object) {

        int bitmap = getBitmap();

        boolean b = ((Boolean) object).booleanValue();
        if (b) {
            bitmap |= mask;
        } else {
            bitmap &= ~mask;
        }

        bitmapModel.setObject(bitmap);

    }

    public void detach() {
        bitmapModel.detach();
    }

    private int getBitmap() {
        return ((Integer) bitmapModel.getObject()).intValue();
    }
}

Note that you can still use the CompoundPropertyModel for other
properties:

Form myForm = new Form("myForm", new CompoundPropertyModel(pojo));

myForm.add(new TextField("name"));
myForm.add(new CheckBox("enabled",
  new BitmappedFlagModel(
    new PropertyModel(pojo, "flags"), FLAG_ENABLED)));

jk

---------------------------------------------------------------------
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