001 /*
002 * SiteMap.java
003 */
004
005 package net.sf.tacos.components;
006
007 import java.util.List;
008 import net.sf.tacos.services.CategoryInfo;
009 import net.sf.tacos.services.PageInfo;
010 import net.sf.tacos.services.SiteMap;
011 import org.apache.tapestry.BaseComponent;
012
013 /**
014 *
015 * @author andyhot
016 */
017 public abstract class SiteMapComponent extends BaseComponent
018 {
019 public abstract SiteMap getSiteMap();
020 public abstract String getName();
021 public abstract String getCategory();
022
023 public abstract boolean getShowAll();
024 public abstract boolean getIgnoreCurrentPage();
025
026 public boolean getShowSiteMap()
027 {
028 return getIgnoreCurrentPage()
029 || (getCurrentPageCategory() != null);
030 }
031
032 public CategoryInfo getCategoryOf(String page)
033 {
034 return getSiteMap().getCategoryFromPage(page);
035 }
036
037 public CategoryInfo getCurrentPageCategory()
038 {
039 return getCategoryOf(getPage().getPageName());
040 }
041
042 public boolean isPageInCategory(String page)
043 {
044 return getSiteMap().inCategory(page, getCategory());
045 }
046
047 public boolean isCurrentPageInCategory()
048 {
049 return isPageInCategory(getPage().getPageName());
050 }
051
052 public String getDefaultPage()
053 {
054 return getSiteMap().getDefaultPage(getCategory()).getName();
055 }
056
057 public String getCategoryClass()
058 {
059 return isCurrentPageInCategory() ? "current" : null;
060 }
061
062 public String getCategoryDisplayName()
063 {
064 if (getShowAll())
065 return getSiteMap().getCategoryInfo(getCategory()).getName();
066 else
067 return getSiteMap().getDefaultPageDesc(getCategory());
068 }
069
070 public String getPageDisplayName()
071 {
072 return getSiteMap().getPageInfo(getName()).getDesc();
073 }
074
075 public List getPagesOfCategoryOfPage(String page)
076 {
077 return getSiteMap().getCategoryPages(page);
078 }
079
080 public List getPagesOfCategoryOfCurrentPage()
081 {
082 return getPagesOfCategoryOfPage(getPage().getPageName());
083 }
084
085 public List getPagesOfCategory(String category)
086 {
087 return getSiteMap().getCategoryInfo(category).getPageNames();
088 }
089
090 public List getPagesOfCurrentCategory()
091 {
092 return getPagesOfCategory(getCategory());
093 }
094
095 public boolean getShowPage()
096 {
097 if (getShowAll())
098 return true;
099 else
100 return getName().equals( getCategoryOf(getPage().getPageName()).getDefaultPage() );
101 }
102
103 public String getPageClass()
104 {
105 String name = getName();
106 String pageName = getPage().getPageName();
107
108 boolean selected = name.equals(pageName)
109 || getSiteMap().contains(name, pageName);
110 return selected ? "here" : null;
111 }
112 }