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.

      Last modified on 11 May 2009, at 20:52