View Javadoc

1   package net.sf.statcvs.pages;
2   
3   import java.util.ArrayList;
4   import java.util.Iterator;
5   import java.util.List;
6   
7   public class PageGroup implements NavigationNode {
8       private final String title;
9       private final boolean connectSiblings;
10      private final List pages = new ArrayList();
11      private NavigationNode mainPage = null;
12      private NavigationNode parent = null;
13      private boolean showLinkToPreviousSibling = false;
14  
15      public PageGroup(final String title) {
16          this(title, true);
17      }
18  
19      public PageGroup(final String title, final boolean connectSiblings) {
20          this.title = title;
21          this.connectSiblings = connectSiblings;
22      }
23  
24      public void add(final NavigationNode page) {
25          this.pages.add(page);
26          if (this.mainPage == null) {
27              this.mainPage = page;
28          }
29      }
30  
31      public void setMainPage(final NavigationNode page) {
32          this.mainPage = page;
33      }
34  
35      public void setParent(final NavigationNode parentPage) {
36          this.parent = parentPage;
37      }
38  
39      public void setSiblings(final String siblingsTitle, final List siblingPages) {
40          throw new UnsupportedOperationException("Cannot set siblings for PageGroup");
41      }
42  
43      public void setShowLinkToPreviousSibling(final boolean showLink) {
44          this.showLinkToPreviousSibling = showLink;
45      }
46  
47      public String getFullTitle() {
48          return this.title;
49      }
50  
51      public String getShortTitle() {
52          return this.title;
53      }
54  
55      public String getURL() {
56          return this.mainPage.getURL();
57      }
58  
59      public void write() {
60          final Iterator it = this.pages.iterator();
61          while (it.hasNext()) {
62              final NavigationNode page = (NavigationNode) it.next();
63              if (this.showLinkToPreviousSibling) {
64                  page.setShowLinkToPreviousSibling(this.showLinkToPreviousSibling);
65              }
66              if (this.parent != null) {
67                  page.setParent(this.parent);
68              }
69              if (this.connectSiblings) {
70                  page.setSiblings(this.title, this.pages);
71              }
72              page.write();
73          }
74          if (this.mainPage != null && !this.pages.contains(this.mainPage)) {
75              this.mainPage.write();
76          }
77      }
78  
79      public String asLinkList() {
80          final StringBuffer s = new StringBuffer();
81          s.append("<ul class=\"linklist\">\n");
82          final Iterator it = this.pages.iterator();
83          while (it.hasNext()) {
84              final NavigationNode page = (NavigationNode) it.next();
85              s.append("    <li>" + HTML.getLink(page.getURL(), page.getShortTitle()) + "</li>\n");
86          }
87          s.append("</ul>");
88          return s.toString();
89      }
90  
91      public String asParentLink() {
92          return this.mainPage.asParentLink();
93      }
94  }