import java.net.MalformedURLException;
import java.net.URL;
+import java.util.List;
import javax.servlet.http.HttpServletRequest;
import eu.svjatoslav.commons.network.Locale;
import eu.svjatoslav.commons.network.LocaleConfiguration;
-public class Navigation {
+public class Navigation<NI extends NavigationItem> {
- private NavigationItem rootNavigationItem;
+ private NI rootNavigationItem;
- private NavigationItem defaultNavigationItem;
+ private NI defaultNavigationItem;
protected final LocaleConfiguration localeConfiguration;
this.localeConfiguration = localeConfiguration;
}
- public NavigationItem getDefaultNavigationItem() {
+ public NI getDefaultNavigationItem() {
return defaultNavigationItem;
}
return localeConfiguration;
}
- public NavigationItem getRootNavigationItem() {
+ public NI getRootNavigationItem() {
return rootNavigationItem;
}
- public NavigationItem getSelectedItem(final HttpServletRequest request) {
+ public NI getSelectedItem(final HttpServletRequest request) {
final String requestUrl = request.getRequestURL().toString();
try {
final String requestPath = new URL(requestUrl).getPath();
- final NavigationItem match = rootNavigationItem
+ final NI match = (NI) rootNavigationItem
.getMatchingNavigationItem(requestPath);
if (match != null)
final Locale currentLocale = localeConfiguration
.detectCurrentLocale(request);
- final NavigationItem selectedItem = getSelectedItem(request);
+ final NI selectedItem = getSelectedItem(request);
final StringBuffer result = new StringBuffer();
result.append("<div class=\""
+ getGetNotNullString(rootNavigationItem.getCssPrefix())
+ "navigationMenu\">");
- for (final NavigationItem item : getRootNavigationItem()
+ for (final NI item : (List<NI>) getRootNavigationItem()
.getSubElements()) {
if (item == selectedItem)
return result.toString();
}
- public NavigationItem setDefaultNavigationItem(
- final NavigationItem defaultNavigationItem) {
+ public NI setDefaultNavigationItem(final NI defaultNavigationItem) {
this.defaultNavigationItem = defaultNavigationItem;
return defaultNavigationItem;
}
- public NavigationItem setRootNavigationItem(
- final NavigationItem rootNavigationItem) {
+ public NI setRootNavigationItem(final NI rootNavigationItem) {
this.rootNavigationItem = rootNavigationItem;
return rootNavigationItem;
}