When working on this feature the term 'NavigableParent' manifested in my mind.
There can be only one property per class, that has this 'flag' on, hence the default must be 'off'. Maybe something short like this ... @PropertyLayout(navigable=Navigable.PARENT|IGNORE|NOT_SPECIFIED) LeaseItem leaseItem; or @PropertyLayout(navigable=Navigable.PARENT_BREADCRUMB|NOT_APPLICABLE|NOT_SPECIFIED) LeaseItem leaseItem; Cheers Andi! On 03.03.2018 19:33, Dan Haywood wrote: > 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 >