+/*
+ * 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 javax.servlet.http.HttpServletRequest;
+
public class Navigation {
private NavigationItem rootNavigationItem;
return rootNavigationItem;
}
- public NavigationItem getSelectedItem(final String requestUrl) {
+ public NavigationItem 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 NavigationItem match = rootNavigationItem
+ .getMatchingNavigationItem(requestPath);
+
+ if (match != null)
+ return match;
} catch (final MalformedURLException e) {
System.out.println("Cannot handle URL: " + requestUrl);
e.printStackTrace();
return getDefaultNavigationItem();
}
- public String getTopMenu(final String requestUrl) {
+ public String getTopMenu(final HttpServletRequest request) {
- final NavigationItem selectedItem = getSelectedItem(requestUrl);
+ final NavigationItem selectedItem = getSelectedItem(request);
final StringBuffer result = new StringBuffer();
- result.append("<div id=\"topNavigation\">");
+ result.append("<div class=\"navigationMenu\">");
- for (final NavigationItem item : rootNavigationItem.getSubElements()) {
+ for (final NavigationItem item : getRootNavigationItem()
+ .getSubElements()) {
if (item == selectedItem)
- result.append("<a class=\"selected\" href=\"" + item.getLink()
- + "\">");
+ result.append("<a class=\"menuItemSelected\" href=\""
+ + item.getLinkUrl() + "\">");
else
- result.append("<a href=\"" + item.getLink() + "\">");
+ result.append("<a class=\"menuItem\" href=\""
+ + item.getLinkUrl() + "\">");
- result.append(item.getTitle());
+ result.append("<div>" + item.getTitle() + "</div>");
result.append("</a>");
}