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    }