refactored navigation logic to be more fool-proof
[svjatoslav_commons.git] / src / main / java / eu / svjatoslav / commons / network / navigation / Navigation.java
index 7a1f711..1afd5c7 100755 (executable)
@@ -3,17 +3,24 @@ package eu.svjatoslav.commons.network.navigation;
 import java.net.MalformedURLException;
 import java.net.URL;
 
+import javax.servlet.http.HttpServletRequest;
+
 public class Navigation {
 
        private NavigationItem rootNavigationItem;
 
        private NavigationItem defaultNavigationItem;
 
+       public NavigationItem getDefaultNavigationItem() {
+               return defaultNavigationItem;
+       }
+
        public NavigationItem getRootNavigationItem() {
                return rootNavigationItem;
        }
 
-       public NavigationItem getSelectedItem(final String requestUrl) {
+       public NavigationItem getSelectedItem(final HttpServletRequest request) {
+               final String requestUrl = request.getRequestURL().toString();
 
                try {
                        final String requestPath = new URL(requestUrl).getPath();
@@ -26,25 +33,27 @@ public class Navigation {
                        e.printStackTrace();
                }
 
-               return defaultNavigationItem;
+               return getDefaultNavigationItem();
        }
 
-       public String getTopMenu(final String requestUrl) {
+       public String getTopMenu(final HttpServletRequest request) {
 
-               final NavigationItem selectedItem = getSelectedItem(requestUrl);
+               final NavigationItem selectedItem = getSelectedItem(request);
                final StringBuffer result = new StringBuffer();
 
-               result.append("<div id=\"topNavigation\">");
+               result.append("<div class=\"navigationMenu\">");
 
-               for (final NavigationItem item : rootNavigationItem.getSubElements()) {
+               for (final NavigationItem item : getRootNavigationItem()
+                               .getSubElements()) {
 
                        if (item == selectedItem)
-                               result.append("<a class=\"selected\" href=\"" + item.getLink()
-                                               + "\">");
+                               result.append("<a class=\"menuItemSelected\" href=\""
+                                               + item.getLinkUrl() + "\">");
                        else
-                               result.append("<a href=\"" + item.getLink() + "\">");
+                               result.append("<a class=\"menuItem\" href=\""
+                                               + item.getLinkUrl() + "\">");
 
-                       result.append(item.getTitle());
+                       result.append("<div>" + item.getTitle() + "</div>");
                        result.append("</a>");
                }
 
@@ -53,6 +62,11 @@ public class Navigation {
                return result.toString();
        }
 
+       public void setDefaultNavigationItem(
+                       final NavigationItem defaultNavigationItem) {
+               this.defaultNavigationItem = defaultNavigationItem;
+       }
+
        public void setRootNavigationItem(final NavigationItem rootNavigationItem) {
                this.rootNavigationItem = rootNavigationItem;
        }