possibility to use CSS prefix for menu items
authorSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Wed, 20 Aug 2014 14:39:51 +0000 (17:39 +0300)
committerSvjatoslav Agejenko <svjatoslav@svjatoslav.eu>
Wed, 20 Aug 2014 14:39:51 +0000 (17:39 +0300)
src/main/java/eu/svjatoslav/commons/network/navigation/Navigation.java
src/main/java/eu/svjatoslav/commons/network/navigation/NavigationItem.java

index 339db68..3a2877f 100755 (executable)
@@ -24,6 +24,13 @@ public class Navigation {
                return defaultNavigationItem;
        }
 
                return defaultNavigationItem;
        }
 
+       private String getGetNotNullString(final String string) {
+               if (string != null)
+                       return string;
+
+               return "";
+       }
+
        public NavigationItem getRootNavigationItem() {
                return rootNavigationItem;
        }
        public NavigationItem getRootNavigationItem() {
                return rootNavigationItem;
        }
@@ -52,17 +59,22 @@ public class Navigation {
                final NavigationItem selectedItem = getSelectedItem(request);
                final StringBuffer result = new StringBuffer();
 
                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)
 
                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
                        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("</a>");
 
                        result.append("<div>" + item.getTitle() + "</div>");
                        result.append("</a>");
index 0deca95..22ba6b0 100755 (executable)
@@ -1,7 +1,7 @@
 /*
  * Svjatoslav Commons - shared library of common functionality.
  * Copyright ©2012-2014, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
 /*
  * 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.
  * 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.
@@ -26,6 +26,11 @@ public class NavigationItem {
        private NavigationItem parent;
        private final String linkUrl;
 
        private NavigationItem parent;
        private final String linkUrl;
 
+       /**
+        * CSS prefix is inherited to child menu items.
+        */
+       private String cssPrefix;
+
        public NavigationItem(final Locale... localeOrder) {
                if (localeOrder.length == 0)
                        this.localeOrder = new Locale[] { Locale.ENG };
        public NavigationItem(final Locale... localeOrder) {
                if (localeOrder.length == 0)
                        this.localeOrder = new Locale[] { Locale.ENG };
@@ -53,6 +58,16 @@ public class NavigationItem {
                return item;
        }
 
                return item;
        }
 
+       protected String getCssPrefix() {
+               if (cssPrefix != null)
+                       return cssPrefix;
+
+               if (parent == null)
+                       return null;
+
+               return parent.getCssPrefix();
+       }
+
        public String getLinkUrl() {
                return linkUrl;
        }
        public String getLinkUrl() {
                return linkUrl;
        }
@@ -107,6 +122,10 @@ public class NavigationItem {
                return WildCardMatcher.match(url, matchingPattern);
        }
 
                return WildCardMatcher.match(url, matchingPattern);
        }
 
+       public void setCssPrefix(final String cssPrefix) {
+               this.cssPrefix = cssPrefix;
+       }
+
        public NavigationItem setPattern(final String pattern) {
                matchingPattern = pattern;
                return this;
        public NavigationItem setPattern(final String pattern) {
                matchingPattern = pattern;
                return this;