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:

{panel}
  <webobject name = "IsMain">
    <webobject name = "MainLink"><webobject name = "MainLabel"></webobject></webobject>
  </webobject>
  
  <webobject name = "IsNotMain">
    <webobject name = "Components">
      <webobject name = "HasPrefix">&nbsp;<webobject name = "Prefix"></webobject>&nbsp;</webobject><webobject name = "Component"></webobject>
    </webobject>
  
    <webobject name = "HasPrefix">&nbsp;<webobject name = "Prefix"></webobject>&nbsp;</webobject><webobject name = "LastComponent"></webobject>
  </webobject>
{panel}
  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.

Category:WebObjects