408372a21e89e97e9cc4407fd697aa5647f04619
[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                         final NavigationItem match = rootNavigationItem
29                                         .getMatchingNavigationItem(requestPath);
30
31                         if (match != null)
32                                 return match;
33                 } catch (final MalformedURLException e) {
34                         System.out.println("Cannot handle URL: " + requestUrl);
35                         e.printStackTrace();
36                 }
37
38                 return getDefaultNavigationItem();
39         }
40
41         public String getTopMenu(final HttpServletRequest request) {
42
43                 final NavigationItem selectedItem = getSelectedItem(request);
44                 final StringBuffer result = new StringBuffer();
45
46                 result.append("<div class=\"navigationMenu\">");
47
48                 for (final NavigationItem item : getRootNavigationItem()
49                                 .getSubElements()) {
50
51                         if (item == selectedItem)
52                                 result.append("<a class=\"menuItemSelected\" href=\""
53                                                 + item.getLinkUrl() + "\">");
54                         else
55                                 result.append("<a class=\"menuItem\" href=\""
56                                                 + item.getLinkUrl() + "\">");
57
58                         result.append("<div>" + item.getTitle() + "</div>");
59                         result.append("</a>");
60                 }
61
62                 result.append("</div>");
63
64                 return result.toString();
65         }
66
67         public void setDefaultNavigationItem(
68                         final NavigationItem defaultNavigationItem) {
69                 this.defaultNavigationItem = defaultNavigationItem;
70         }
71
72         public void setRootNavigationItem(final NavigationItem rootNavigationItem) {
73                 this.rootNavigationItem = rootNavigationItem;
74         }
75
76 }