X-Git-Url: http://www2.svjatoslav.eu/gitweb/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fcommons%2Fnetwork%2Fnavigation%2FNavigation.java;h=4dffa3635e998a237fe2a7fff4c659d7304a5412;hb=acde4973ab5eb9f8d7ec5ef2cba2d5f3dc6cdb1c;hp=17310434ba4d8197cba9987875041491b8036ef9;hpb=dab9ab187078ee1016f35163381d025de99503ad;p=svjatoslav_commons.git diff --git a/src/main/java/eu/svjatoslav/commons/network/navigation/Navigation.java b/src/main/java/eu/svjatoslav/commons/network/navigation/Navigation.java index 1731043..4dffa36 100755 --- a/src/main/java/eu/svjatoslav/commons/network/navigation/Navigation.java +++ b/src/main/java/eu/svjatoslav/commons/network/navigation/Navigation.java @@ -1,30 +1,64 @@ +/* + * 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. + */ + package eu.svjatoslav.commons.network.navigation; import java.net.MalformedURLException; import java.net.URL; +import java.util.List; + +import javax.servlet.http.HttpServletRequest; + +import eu.svjatoslav.commons.network.LocaleConfiguration; + +public class Navigation { -public class Navigation { + private NI rootNavigationItem; - private NavigationItem rootNavigationItem; + private NI defaultNavigationItem; - private NavigationItem defaultNavigationItem; + protected final LocaleConfiguration localeConfiguration; - public NavigationItem getDefaultNavigationItem() { + public Navigation(final LocaleConfiguration localeConfiguration) { + this.localeConfiguration = localeConfiguration; + } + + public NI getDefaultNavigationItem() { return defaultNavigationItem; } - public NavigationItem getRootNavigationItem() { + private String getGetNotNullString(final String string) { + if (string != null) + return string; + + return ""; + } + + public LocaleConfiguration getLocaleConfiguration() { + return localeConfiguration; + } + + public NI getRootNavigationItem() { return rootNavigationItem; } - public NavigationItem getSelectedItem(final String requestUrl) { + public NI getSelectedItem(final HttpServletRequest request) { + final String requestUrl = request.getRequestURL().toString(); try { final String requestPath = new URL(requestUrl).getPath(); - for (final NavigationItem item : rootNavigationItem.subElements) - if (item.matchesUrl(requestPath)) - return item; + final NI match = (NI) rootNavigationItem + .getMatchingNavigationItem(requestPath); + + if (match != null) + return match; } catch (final MalformedURLException e) { System.out.println("Cannot handle URL: " + requestUrl); e.printStackTrace(); @@ -33,22 +67,32 @@ public class Navigation { return getDefaultNavigationItem(); } - public String getTopMenu(final String requestUrl) { + public String getTopMenu(final HttpServletRequest request) { - final NavigationItem selectedItem = getSelectedItem(requestUrl); + final String currentLocale = localeConfiguration + .detectCurrentLocale(request); + + final NI selectedItem = getSelectedItem(request); final StringBuffer result = new StringBuffer(); - result.append("
"); + result.append("
"); - for (final NavigationItem item : rootNavigationItem.getSubElements()) { + for (final NI item : (List) getRootNavigationItem() + .getSubElements()) { if (item == selectedItem) - result.append(""); else - result.append(""); + result.append(""); - result.append(item.getTitle()); + result.append("
" + item.getTitle(currentLocale) + "
"); result.append("
"); } @@ -57,13 +101,14 @@ public class Navigation { return result.toString(); } - public void setDefaultNavigationItem( - final NavigationItem defaultNavigationItem) { + public NI setDefaultNavigationItem(final NI defaultNavigationItem) { this.defaultNavigationItem = defaultNavigationItem; + return defaultNavigationItem; } - public void setRootNavigationItem(final NavigationItem rootNavigationItem) { + public NI setRootNavigationItem(final NI rootNavigationItem) { this.rootNavigationItem = rootNavigationItem; + return rootNavigationItem; } }