localized navigation menu
[svjatoslav_commons.git] / src / main / java / eu / svjatoslav / commons / network / navigation / Navigation.java
index ba6e730..8b049bb 100755 (executable)
@@ -1,7 +1,7 @@
 /*
  * Svjatoslav Commons - shared library of common functionality.
  * Copyright ©2012-2014, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
- * 
+ *
  * This program is free software; you can redistribute it and/or
  * modify it under the terms of version 3 of the GNU Lesser General Public License
  * or later as published by the Free Software Foundation.
@@ -14,6 +14,9 @@ import java.net.URL;
 
 import javax.servlet.http.HttpServletRequest;
 
+import eu.svjatoslav.commons.network.Locale;
+import eu.svjatoslav.commons.network.LocaleHelper;
+
 public class Navigation {
 
        private NavigationItem rootNavigationItem;
@@ -24,6 +27,13 @@ public class Navigation {
                return defaultNavigationItem;
        }
 
+       private String getGetNotNullString(final String string) {
+               if (string != null)
+                       return string;
+
+               return "";
+       }
+
        public NavigationItem getRootNavigationItem() {
                return rootNavigationItem;
        }
@@ -49,22 +59,29 @@ public class Navigation {
 
        public String getTopMenu(final HttpServletRequest request) {
 
+               final Locale currentLocale = LocaleHelper.detectLocale(request);
+
                final NavigationItem selectedItem = getSelectedItem(request);
                final StringBuffer result = new StringBuffer();
 
-               result.append("<div class=\"navigationMenu\">");
+               result.append("<div class=\""
+                               + getGetNotNullString(rootNavigationItem.getCssPrefix())
+                               + "navigationMenu\">");
 
                for (final NavigationItem item : getRootNavigationItem()
                                .getSubElements()) {
 
                        if (item == selectedItem)
-                               result.append("<a class=\"menuItemSelected\" href=\""
-                                               + item.getLinkUrl() + "\">");
+                               result.append("<a class=\""
+                                               + getGetNotNullString(item.getCssPrefix())
+                                               + "menuItemSelected\" href=\"" + item.getLinkUrl()
+                                               + "\">");
                        else
-                               result.append("<a class=\"menuItem\" href=\""
-                                               + item.getLinkUrl() + "\">");
+                               result.append("<a class=\""
+                                               + getGetNotNullString(item.getCssPrefix())
+                                               + "menuItem\" href=\"" + item.getLinkUrl() + "\">");
 
-                       result.append("<div>" + item.getTitle() + "</div>");
+                       result.append("<div>" + item.getTitle(currentLocale) + "</div>");
                        result.append("</a>");
                }
 
@@ -73,13 +90,16 @@ public class Navigation {
                return result.toString();
        }
 
-       public void setDefaultNavigationItem(
+       public NavigationItem setDefaultNavigationItem(
                        final NavigationItem defaultNavigationItem) {
                this.defaultNavigationItem = defaultNavigationItem;
+               return defaultNavigationItem;
        }
 
-       public void setRootNavigationItem(final NavigationItem rootNavigationItem) {
+       public NavigationItem setRootNavigationItem(
+                       final NavigationItem rootNavigationItem) {
                this.rootNavigationItem = rootNavigationItem;
+               return rootNavigationItem;
        }
 
 }