42720c9773bfe4c3db826d036f961b42e3197e99
[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 class=\"navigationMenu\">");
42
43                 for (final NavigationItem item : getRootNavigationItem()
44                                 .getSubElements()) {
45
46                         if (item == selectedItem)
47                                 result.append("<a class=\"menuItemSelected\" href=\""
48                                                 + item.getLink() + "\">");
49                         else
50                                 result.append("<a class=\"menuItem\" href=\"" + item.getLink()
51                                                 + "\">");
52
53                         result.append("<div>" + item.getTitle() + "</div>");
54                         result.append("</a>");
55                 }
56
57                 result.append("</div>");
58
59                 return result.toString();
60         }
61
62         public void setDefaultNavigationItem(
63                         final NavigationItem defaultNavigationItem) {
64                 this.defaultNavigationItem = defaultNavigationItem;
65         }
66
67         public void setRootNavigationItem(final NavigationItem rootNavigationItem) {
68                 this.rootNavigationItem = rootNavigationItem;
69         }
70
71 }