2 * Svjatoslav Commons - shared library of common functionality.
3 * Copyright ©2012-2014, Svjatoslav Agejenko, svjatoslav@svjatoslav.eu
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of version 3 of the GNU Lesser General Public License
7 * or later as published by the Free Software Foundation.
10 package eu.svjatoslav.commons.network.navigation;
12 import java.net.MalformedURLException;
15 import javax.servlet.http.HttpServletRequest;
17 import eu.svjatoslav.commons.network.Locale;
18 import eu.svjatoslav.commons.network.LocaleHelper;
20 public class Navigation {
22 private NavigationItem rootNavigationItem;
24 private NavigationItem defaultNavigationItem;
26 public NavigationItem getDefaultNavigationItem() {
27 return defaultNavigationItem;
30 private String getGetNotNullString(final String string) {
37 public NavigationItem getRootNavigationItem() {
38 return rootNavigationItem;
41 public NavigationItem getSelectedItem(final HttpServletRequest request) {
42 final String requestUrl = request.getRequestURL().toString();
45 final String requestPath = new URL(requestUrl).getPath();
47 final NavigationItem match = rootNavigationItem
48 .getMatchingNavigationItem(requestPath);
52 } catch (final MalformedURLException e) {
53 System.out.println("Cannot handle URL: " + requestUrl);
57 return getDefaultNavigationItem();
60 public String getTopMenu(final HttpServletRequest request) {
62 final Locale currentLocale = LocaleHelper.detectLocale(request);
64 final NavigationItem selectedItem = getSelectedItem(request);
65 final StringBuffer result = new StringBuffer();
67 result.append("<div class=\""
68 + getGetNotNullString(rootNavigationItem.getCssPrefix())
69 + "navigationMenu\">");
71 for (final NavigationItem item : getRootNavigationItem()
74 if (item == selectedItem)
75 result.append("<a class=\""
76 + getGetNotNullString(item.getCssPrefix())
77 + "menuItemSelected\" href=\"" + item.getLinkUrl()
80 result.append("<a class=\""
81 + getGetNotNullString(item.getCssPrefix())
82 + "menuItem\" href=\"" + item.getLinkUrl() + "\">");
84 result.append("<div>" + item.getTitle(currentLocale) + "</div>");
85 result.append("</a>");
88 result.append("</div>");
90 return result.toString();
93 public NavigationItem setDefaultNavigationItem(
94 final NavigationItem defaultNavigationItem) {
95 this.defaultNavigationItem = defaultNavigationItem;
96 return defaultNavigationItem;
99 public NavigationItem setRootNavigationItem(
100 final NavigationItem rootNavigationItem) {
101 this.rootNavigationItem = rootNavigationItem;
102 return rootNavigationItem;