package fitnesse.responders.templateUtilities; import fitnesse.wiki.PathParser; import fitnesse.wiki.WikiPagePath; import java.util.ArrayList; import java.util.List; import java.util.Collections; public class PageTitle { private String title; private String link; private List<BreadCrumb> breadCrumbs = new ArrayList<BreadCrumb>(); private String pageType; public PageTitle(WikiPagePath pagePath) { pagePath = pagePath.clone(); List<String> names = pagePath.getNames(); link = PathParser.render(pagePath); if (names.size() > 0) { title = names.get(names.size() - 1); pagePath.removeNameFromEnd(); while (pagePath.getNames().size() > 0) { names = pagePath.getNames(); BreadCrumb crumb = new BreadCrumb(names.get(names.size() - 1), PathParser.render(pagePath)); breadCrumbs.add(crumb); pagePath.removeNameFromEnd(); } Collections.reverse(breadCrumbs); } } public PageTitle() { } public PageTitle(String pageType) { this.setPageType(pageType); this.title = pageType; } public PageTitle(String pageType, WikiPagePath wikiPagePath) { this(wikiPagePath); this.setPageType(pageType); } public PageTitle(String path, String separator) { String[] crumbs = path.split(separator); String crumb; String trail = ""; for (int i = 0; i < crumbs.length - 1; i++) { crumb = crumbs[i]; breadCrumbs.add(new BreadCrumb(crumb, trail + crumb)); trail = trail + crumb + separator; } if (crumbs.length > 0) { crumb = crumbs[crumbs.length - 1]; title = crumb; link = trail + crumb; } } public PageTitle(String pageType, String path, String separator) { this(path, separator); this.setPageType(pageType); } public PageTitle notLinked() { link = null; return this; } public String getTitle() { return title; } public String getLink() { return link; } public List<BreadCrumb> getBreadCrumbs() { return breadCrumbs; } public String getPageType() { return pageType; } public void setPageType(String pageType) { this.pageType = pageType; } public class BreadCrumb { private String name; private String link; public BreadCrumb(String name, String link) { this.name = name; this.link = link; } public String getName() { return name; } public String getLink() { return link; } } }