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(1);
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 setParent(final NavigationNode parentPage) {
32 this.parent = parentPage;
33 }
34
35 public void setSiblings(final String siblingsTitle, final List siblingPages) {
36 throw new UnsupportedOperationException("Cannot set siblings for PageGroup");
37 }
38
39 public void setShowLinkToPreviousSibling(final boolean showLink) {
40 this.showLinkToPreviousSibling = showLink;
41 }
42
43 public String getFullTitle() {
44 return this.title;
45 }
46
47 public String getShortTitle() {
48 return this.title;
49 }
50
51 public String getURL() {
52 if (mainPage != null) {
53 return this.mainPage.getURL();
54 }
55
56 new Exception("Dummy Exception please report to bx").printStackTrace();
57
58 return "no-page-defined-yet";
59 }
60
61 public void write() {
62 final Iterator it = this.pages.iterator();
63 while (it.hasNext()) {
64 final NavigationNode page = (NavigationNode) it.next();
65 if (this.showLinkToPreviousSibling) {
66 page.setShowLinkToPreviousSibling(this.showLinkToPreviousSibling);
67 }
68 if (this.parent != null) {
69 page.setParent(this.parent);
70 }
71 if (this.connectSiblings) {
72 page.setSiblings(this.title, this.pages);
73 }
74 page.write();
75 }
76 if (this.mainPage != null && !this.pages.contains(this.mainPage)) {
77 this.mainPage.write();
78 }
79 }
80
81 public String asLinkList() {
82 final StringBuffer s = new StringBuffer();
83 s.append("<ul class=\"linklist\">\n");
84 final Iterator it = this.pages.iterator();
85 while (it.hasNext()) {
86 final NavigationNode page = (NavigationNode) it.next();
87 s.append(" <li>" + HTML.getLink(page.getURL(), page.getShortTitle()) + "</li>\n");
88 }
89 s.append("</ul>");
90 return s.toString();
91 }
92
93 public String asParentLink() {
94 return this.mainPage.asParentLink();
95 }
96 }