X-Git-Url: http://www2.svjatoslav.eu/gitweb/?p=svjatoslav_commons.git;a=blobdiff_plain;f=src%2Fmain%2Fjava%2Feu%2Fsvjatoslav%2Fcommons%2Fnetwork%2Fnavigation%2FNavigationItem.java;h=76a7d073a674a7030db0b45ca0560f85f9ca3877;hp=2a27c5d4ac26238dbede7f5879549ba14fc6ef47;hb=eed1c70de986cf74cf15de291abd7495e4a6bcd1;hpb=72f5f974562b50606d2d9f61c22a0337ed2cec4b diff --git a/src/main/java/eu/svjatoslav/commons/network/navigation/NavigationItem.java b/src/main/java/eu/svjatoslav/commons/network/navigation/NavigationItem.java index 2a27c5d..76a7d07 100755 --- a/src/main/java/eu/svjatoslav/commons/network/navigation/NavigationItem.java +++ b/src/main/java/eu/svjatoslav/commons/network/navigation/NavigationItem.java @@ -17,43 +17,41 @@ import java.util.Map; import eu.svjatoslav.commons.network.Locale; import eu.svjatoslav.commons.string.WildCardMatcher; -public class NavigationItem { +public class NavigationItem { private String matchingPattern; + private final Map localeToTitle = new HashMap(); - final ArrayList subElements = new ArrayList(); - final private NavigationItem parent; - final private Navigation navigation; + private final ArrayList subElements = new ArrayList(); + private final NI parent; + private final N navigation; private final String linkUrl; - /** * CSS prefix is inherited to child menu items. */ private String cssPrefix; - public NavigationItem(final Navigation navigation) { + public NavigationItem(final N navigation) { this.navigation = navigation; parent = null; matchingPattern = null; linkUrl = null; } - private NavigationItem(final Navigation navigation, - final NavigationItem parent, final String linkUrl, + public NavigationItem(final NI parent, final String linkUrl, final String... titles) { - this.navigation = navigation; + this.navigation = (N) parent.getNavigation(); this.parent = parent; this.linkUrl = linkUrl; matchingPattern = linkUrl; initializeLocalizedTitles(titles); + + parent.addNavigationItem(this); } - public NavigationItem addChild(final String linkUrl, final String... titles) { - final NavigationItem item = new NavigationItem(navigation, this, - linkUrl, titles); - subElements.add(item); - return item; + public void addNavigationItem(final NI navigationItem) { + subElements.add(navigationItem); } protected String getCssPrefix() { @@ -70,12 +68,12 @@ public class NavigationItem { return linkUrl; } - NavigationItem getMatchingNavigationItem(final String requestPath) { + NI getMatchingNavigationItem(final String requestPath) { if (matchesUrl(requestPath)) - return this; + return (NI) this; - for (final NavigationItem childNavigationItem : subElements) { - final NavigationItem match = childNavigationItem + for (final NI childNavigationItem : subElements) { + final NI match = (NI) childNavigationItem .getMatchingNavigationItem(requestPath); if (match != null) @@ -84,7 +82,11 @@ public class NavigationItem { return null; } - public List getSubElements() { + public N getNavigation() { + return navigation; + } + + public List getSubElements() { return subElements; } @@ -93,7 +95,7 @@ public class NavigationItem { } private void initializeLocalizedTitles(final String... titles) { - final List locales = navigation.getLocaleConfiguration() + final List locales = getNavigation().getLocaleConfiguration() .getAllowedLocales(); if (locales.size() != titles.length) throw new RuntimeException("There should be exactly " @@ -116,4 +118,12 @@ public class NavigationItem { return this; } + @Override + public String toString() { + return "NavigationItem [matchingPattern=" + matchingPattern + + ", localeToTitle=" + localeToTitle + ", subElements count=" + + subElements.size() + ", linkUrl=" + linkUrl + ", cssPrefix=" + + cssPrefix + "]"; + } + }