1afd5c7b7dc3908504e2bfe6b2c576e2626bb782
[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 import javax.servlet.http.HttpServletRequest;
7
8 public class Navigation {
9
10         private NavigationItem rootNavigationItem;
11
12         private NavigationItem defaultNavigationItem;
13
14         public NavigationItem getDefaultNavigationItem() {
15                 return defaultNavigationItem;
16         }
17
18         public NavigationItem getRootNavigationItem() {
19                 return rootNavigationItem;
20         }
21
22         public NavigationItem getSelectedItem(final HttpServletRequest request) {
23                 final String requestUrl = request.getRequestURL().toString();
24
25                 try {
26                         final String requestPath = new URL(requestUrl).getPath();
27
28                         for (final NavigationItem item : rootNavigationItem.subElements)
29                                 if (item.matchesUrl(requestPath))
30                                         return item;
31                 } catch (final MalformedURLException e) {
32                         System.out.println("Cannot handle URL: " + requestUrl);
33                         e.printStackTrace();
34                 }
35
36                 return getDefaultNavigationItem();
37         }
38
39         public String getTopMenu(final HttpServletRequest request) {
40
41                 final NavigationItem selectedItem = getSelectedItem(request);
42                 final StringBuffer result = new StringBuffer();
43
44                 result.append("<div class=\"navigationMenu\">");
45
46                 for (final NavigationItem item : getRootNavigationItem()
47                                 .getSubElements()) {
48
49                         if (item == selectedItem)
50                                 result.append("<a class=\"menuItemSelected\" href=\""
51                                                 + item.getLinkUrl() + "\">");
52                         else
53                                 result.append("<a class=\"menuItem\" href=\""
54                                                 + item.getLinkUrl() + "\">");
55
56                         result.append("<div>" + item.getTitle() + "</div>");
57                         result.append("</a>");
58                 }
59
60                 result.append("</div>");
61
62                 return result.toString();
63         }
64
65         public void setDefaultNavigationItem(
66                         final NavigationItem defaultNavigationItem) {
67                 this.defaultNavigationItem = defaultNavigationItem;
68         }
69
70         public void setRootNavigationItem(final NavigationItem rootNavigationItem) {
71                 this.rootNavigationItem = rootNavigationItem;
72         }
73
74 }