X-Git-Url: http://www2.svjatoslav.eu/gitweb/?p=svjatoslav_commons.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fcommons%2Fnetwork%2Fnavigation%2FNavigation.java;h=963b3415521b5b451a13906d94bfd036cd879ac1;hp=42720c9773bfe4c3db826d036f961b42e3197e99;hb=9bf004ce4e9b5edff36c65fcc8cc0f303390d7fc;hpb=7005bc7aaadde8c8e2d48d823a48027299ba843d 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 42720c9..963b341 100755 --- a/src/main/java/eu/svjatoslav/commons/network/navigation/Navigation.java +++ b/src/main/java/eu/svjatoslav/commons/network/navigation/Navigation.java @@ -1,71 +1,105 @@ +/* + * 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 eu.svjatoslav.commons.network.LocaleConfiguration; + +import javax.servlet.http.HttpServletRequest; import java.net.MalformedURLException; import java.net.URL; +import java.util.List; + +public class Navigation { + + protected final LocaleConfiguration localeConfiguration; + private NI rootNavigationItem; + private NI defaultNavigationItem; + + public Navigation(final LocaleConfiguration localeConfiguration) { + this.localeConfiguration = localeConfiguration; + } + + public NI getDefaultNavigationItem() { + return defaultNavigationItem; + } + + private String getGetNotNullString(final String string) { + if (string != null) + return string; -public class Navigation { + return ""; + } - private NavigationItem rootNavigationItem; + public LocaleConfiguration getLocaleConfiguration() { + return localeConfiguration; + } - private NavigationItem defaultNavigationItem; + public NI getRootNavigationItem() { + return rootNavigationItem; + } - public NavigationItem getDefaultNavigationItem() { - return defaultNavigationItem; - } + public NI getSelectedItem(final HttpServletRequest request) { + final String requestUrl = request.getRequestURL().toString(); - public NavigationItem getRootNavigationItem() { - return rootNavigationItem; - } + try { + final String requestPath = new URL(requestUrl).getPath(); - public NavigationItem getSelectedItem(final String requestUrl) { + @SuppressWarnings("unchecked") + final NI match = (NI) rootNavigationItem.getMatchingNavigationItem(requestPath); - try { - final String requestPath = new URL(requestUrl).getPath(); + if (match != null) + return match; + } catch (final MalformedURLException e) { + System.out.println("Cannot handle URL: " + requestUrl); + e.printStackTrace(); + } - for (final NavigationItem item : rootNavigationItem.subElements) - if (item.matchesUrl(requestPath)) - return item; - } catch (final MalformedURLException e) { - System.out.println("Cannot handle URL: " + requestUrl); - e.printStackTrace(); - } + return getDefaultNavigationItem(); + } - return getDefaultNavigationItem(); - } + @SuppressWarnings("unchecked") + public String getTopMenu(final HttpServletRequest request) { - public String getTopMenu(final String requestUrl) { + final String currentLocale = localeConfiguration.detectCurrentLocale(request); - final NavigationItem selectedItem = getSelectedItem(requestUrl); - final StringBuffer result = new StringBuffer(); + final NI selectedItem = getSelectedItem(request); + final StringBuilder result = new StringBuilder(); - result.append("
"); + result.append("
"); - for (final NavigationItem item : getRootNavigationItem() - .getSubElements()) { + for (final NI item : (List) getRootNavigationItem().getSubElements()) { - if (item == selectedItem) - result.append(""); - else - result.append(""); + if (item == selectedItem) + result.append(""); + else + result.append(""); - result.append("
" + item.getTitle() + "
"); - result.append("
"); - } + result.append("
" + item.getTitle(currentLocale) + "
"); + result.append(""); + } - result.append("
"); + result.append("
"); - return result.toString(); - } + return result.toString(); + } - public void setDefaultNavigationItem( - final NavigationItem defaultNavigationItem) { - this.defaultNavigationItem = defaultNavigationItem; - } + public NI setDefaultNavigationItem(final NI defaultNavigationItem) { + this.defaultNavigationItem = defaultNavigationItem; + return defaultNavigationItem; + } - public void setRootNavigationItem(final NavigationItem rootNavigationItem) { - this.rootNavigationItem = rootNavigationItem; - } + public NI setRootNavigationItem(final NI rootNavigationItem) { + this.rootNavigationItem = rootNavigationItem; + return rootNavigationItem; + } }