WebObjects/Web Applications/Development/Examples/Path Inspector
First of, it's handy to add a convenience method to your "page" component to define this "list" of objects:
protected void addObjectToPathComponents(Object anObject, String aPageName, Object aTitle) { if ( anObject != null ) { Map aMap = new HashMap(); aMap.put( Path.ObjectKey, anObject ); aMap.put( Path.PageNameKey, aPageName ); aMap.put( Path.TitleKey, aTitle ); this.pathComponents().add( aMap ); return; } throw new IllegalArgumentException ( "Page.addObjectWithPageNameAndTitleToPath: null object."); }
Now, in each concrete page you could initialize the path components:
protected void initPathComponents() { Envelope anEnvelope = this.value(); Date aDate = anEnvelope.creationDate(); List aList = anEnvelope.list(); this.addObjectToPathComponents( aDate, "Timeline", "TIMELINE" ); this.addObjectToPathComponents( aDate ); if ( aList != null ) { this.addObjectToPathComponents( aList ); } this.addObjectToPathComponents( anEnvelope ); }
Finally, the path component itself could look like this:
<webobject name = "IsMain"> <webobject name = "MainLink"><webobject name = "MainLabel"></webobject></webobject> </webobject> <webobject name = "IsNotMain"> <webobject name = "Components"> <webobject name = "HasPrefix"> <webobject name = "Prefix"></webobject> </webobject><webobject name = "Component"></webobject> </webobject> <webobject name = "HasPrefix"> <webobject name = "Prefix"></webobject> </webobject><webobject name = "LastComponent"></webobject> </webobject>
Components: WORepetition { count = count; index = index; }; IsMain: WOConditional{ condition = isMain; }; IsNotMain: WOConditional{ condition = isMain; negate = true; }; ainLink: WOHyperlink{ action = getMail; title = "get new mail"; }; MainLabel: SpanString{ value = "get mail"; isSmall = true; isUpperCase = true; //isBold = true; class = "Label"; length = 30; }; HasPrefix: WOConditional{ condition = hasPrefix; }; Prefix: WOImage{ src = prefixUrl; border = 0; align = "middle"; }; Component: Link{ value = component.object; description = component.title; altDescription = component.title; value = component.object; pageName = component.pageName; isUpperCase = true; isSmall = true; //isBold = true; class = "Label"; }; LastComponent: SpanString{ value = lastComponentTitle; isSmall = true; isUpperCase = true; //isBold = true; class = "Label"; length = 30; };
That's all folks.