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 }