Development-Examples-Path Inspector
Last modified by Pascal Robert on 2010/09/13 00:33
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.