possibility to set default navigation item
[svjatoslav_commons.git] / src / main / java / eu / svjatoslav / commons / network / navigation / Navigation.java
1 package eu.svjatoslav.commons.network.navigation;
2
3 import java.net.MalformedURLException;
4 import java.net.URL;
5
6 public class Navigation {
7
8         private NavigationItem rootNavigationItem;
9
10         private NavigationItem defaultNavigationItem;
11
12         public NavigationItem getDefaultNavigationItem() {
13                 return defaultNavigationItem;
14         }
15
16         public NavigationItem getRootNavigationItem() {
17                 return rootNavigationItem;
18         }
19
20         public NavigationItem getSelectedItem(final String requestUrl) {
21
22                 try {
23                         final String requestPath = new URL(requestUrl).getPath();
24
25                         for (final NavigationItem item : rootNavigationItem.subElements)
26                                 if (item.matchesUrl(requestPath))
27                                         return item;
28                 } catch (final MalformedURLException e) {
29                         System.out.println("Cannot handle URL: " + requestUrl);
30                         e.printStackTrace();
31                 }
32
33                 return getDefaultNavigationItem();
34         }
35
36         public String getTopMenu(final String requestUrl) {
37
38                 final NavigationItem selectedItem = getSelectedItem(requestUrl);
39                 final StringBuffer result = new StringBuffer();
40
41                 result.append("<div id=\"topNavigation\">");
42
43                 for (final NavigationItem item : rootNavigationItem.getSubElements()) {
44
45                         if (item == selectedItem)
46                                 result.append("<a class=\"selected\" href=\"" + item.getLink()
47                                                 + "\">");
48                         else
49                                 result.append("<a href=\"" + item.getLink() + "\">");
50
51                         result.append(item.getTitle());
52                         result.append("</a>");
53                 }
54
55                 result.append("</div>");
56
57                 return result.toString();
58         }
59
60         public void setDefaultNavigationItem(
61                         final NavigationItem defaultNavigationItem) {
62                 this.defaultNavigationItem = defaultNavigationItem;
63         }
64
65         public void setRootNavigationItem(final NavigationItem rootNavigationItem) {
66                 this.rootNavigationItem = rootNavigationItem;
67         }
68
69 }