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 public class Navigation {
19 private NavigationItem rootNavigationItem;
21 private NavigationItem defaultNavigationItem;
23 public NavigationItem getDefaultNavigationItem() {
24 return defaultNavigationItem;
27 private String getGetNotNullString(final String string) {
34 public NavigationItem getRootNavigationItem() {
35 return rootNavigationItem;
38 public NavigationItem getSelectedItem(final HttpServletRequest request) {
39 final String requestUrl = request.getRequestURL().toString();
42 final String requestPath = new URL(requestUrl).getPath();
44 final NavigationItem match = rootNavigationItem
45 .getMatchingNavigationItem(requestPath);
49 } catch (final MalformedURLException e) {
50 System.out.println("Cannot handle URL: " + requestUrl);
54 return getDefaultNavigationItem();
57 public String getTopMenu(final HttpServletRequest request) {
59 final NavigationItem selectedItem = getSelectedItem(request);
60 final StringBuffer result = new StringBuffer();
62 result.append("<div class=\""
63 + getGetNotNullString(rootNavigationItem.getCssPrefix())
64 + "navigationMenu\">");
66 for (final NavigationItem item : getRootNavigationItem()
69 if (item == selectedItem)
70 result.append("<a class=\""
71 + getGetNotNullString(item.getCssPrefix())
72 + "menuItemSelected\" href=\"" + item.getLinkUrl()
75 result.append("<a class=\""
76 + getGetNotNullString(item.getCssPrefix())
77 + "menuItem\" href=\"" + item.getLinkUrl() + "\">");
79 result.append("<div>" + item.getTitle() + "</div>");
80 result.append("</a>");
83 result.append("</div>");
85 return result.toString();
88 public NavigationItem setDefaultNavigationItem(
89 final NavigationItem defaultNavigationItem) {
90 this.defaultNavigationItem = defaultNavigationItem;
91 return defaultNavigationItem;
94 public NavigationItem setRootNavigationItem(
95 final NavigationItem rootNavigationItem) {
96 this.rootNavigationItem = rootNavigationItem;
97 return rootNavigationItem;