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 public NavigationItem getRootNavigationItem() {
28 return rootNavigationItem;
31 public NavigationItem getSelectedItem(final HttpServletRequest request) {
32 final String requestUrl = request.getRequestURL().toString();
35 final String requestPath = new URL(requestUrl).getPath();
37 final NavigationItem match = rootNavigationItem
38 .getMatchingNavigationItem(requestPath);
42 } catch (final MalformedURLException e) {
43 System.out.println("Cannot handle URL: " + requestUrl);
47 return getDefaultNavigationItem();
50 public String getTopMenu(final HttpServletRequest request) {
52 final NavigationItem selectedItem = getSelectedItem(request);
53 final StringBuffer result = new StringBuffer();
55 result.append("<div class=\"navigationMenu\">");
57 for (final NavigationItem item : getRootNavigationItem()
60 if (item == selectedItem)
61 result.append("<a class=\"menuItemSelected\" href=\""
62 + item.getLinkUrl() + "\">");
64 result.append("<a class=\"menuItem\" href=\""
65 + item.getLinkUrl() + "\">");
67 result.append("<div>" + item.getTitle() + "</div>");
68 result.append("</a>");
71 result.append("</div>");
73 return result.toString();
76 public NavigationItem setDefaultNavigationItem(
77 final NavigationItem defaultNavigationItem) {
78 this.defaultNavigationItem = defaultNavigationItem;
79 return defaultNavigationItem;
82 public NavigationItem setRootNavigationItem(
83 final NavigationItem rootNavigationItem) {
84 this.rootNavigationItem = rootNavigationItem;
85 return rootNavigationItem;