Hi folks,

Andi has brought in a new feature for 2.0.0-M1, namely to provide a list of
hierarchical breadcrumbs in the Wicket viewer.

For example, in Estatio there's a hierarchy of Lease > LeaseItem >
LeaseTerm.  Each domain object "knows" its parent (there can be only one).
When one of these objects is rendered, the breadcrumbs panel (rendered
above the icon/title) show the full chain.  You will have seen similar
device in your IDE, I am sure.

My question is about programming model for this.  Andi has implemented this
using a new @Parent annotation, that is on the parent reference within the
child object, eg:

public class Lease { .. }
public class LeaseItem {
    @Parent
    Lease lease;
    ...
}
public class LeaseTerm {
    @Parent
    LeaseItem leaseItem;
    ...
}

However, we moved away quite a long time ago from these very specific
annotations, and so now try to wrap up everything as attributes of
@Property/@PropertyLayout etc.

Since this is a UI concern only, I think instead we should add a new
attribute to @PropertyLayout, eg:

public class LeaseTerm {
    @PropertyLayout(parented=true)
    LeaseItem leaseItem;
}

One wrinkle ... since this is for 2.0.0-M1, which supports
meta-annotations, I've actually gone through and changed all attributes
that have a boolean, because there needs to be a default "not specified"
setting.  For example, @DomainObject(bounded=true|false) is instead
@DomainObject(bounding=Bounding.BOUNDED|NOT_BOUNDED|NOT_SPECIFIED).

So, in fact I propose:

public class LeaseTerm {
    @PropertyLayout(parenting=Parenting.PARENTED|NOT_PARENTED|NOT_SPECIFIED)
    LeaseItem leaseItem;
}

or perhaps the term "parenting" is rather strange.  Since this is a UI
concern only, we could instead use the word "breadcrumbs", etc:

public class LeaseTerm {

@PropertyLayout(breadcrumbs=Breadcrumbs.BREADCRUMBS|NO_BREADCRUMBS|NOT_SPECIFIED)
    LeaseItem leaseItem;
}

Opinions, please.

Thx!
Dan

Reply via email to