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:

         

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.