From 8f0f665b9ee4e2cd21e9e0d5d7cfc69b1d19b86f Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Mon, 05 May 2014 12:46:02 -0400
Subject: [PATCH] Merged #23 "Enhance the plugin infrastructure to allow deeper plugin integration"

---
 src/main/java/com/gitblit/wicket/panels/NavigationPanel.java |   60 ++++++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 38 insertions(+), 22 deletions(-)

diff --git a/src/main/java/com/gitblit/wicket/panels/NavigationPanel.java b/src/main/java/com/gitblit/wicket/panels/NavigationPanel.java
index 393dd13..2bc92f4 100644
--- a/src/main/java/com/gitblit/wicket/panels/NavigationPanel.java
+++ b/src/main/java/com/gitblit/wicket/panels/NavigationPanel.java
@@ -23,9 +23,11 @@
 import org.apache.wicket.markup.repeater.data.DataView;
 import org.apache.wicket.markup.repeater.data.ListDataProvider;
 
-import com.gitblit.wicket.PageRegistration;
-import com.gitblit.wicket.PageRegistration.DropDownMenuRegistration;
-import com.gitblit.wicket.PageRegistration.OtherPageLink;
+import com.gitblit.models.NavLink;
+import com.gitblit.models.NavLink.DropDownMenuNavLink;
+import com.gitblit.models.NavLink.DropDownPageMenuNavLink;
+import com.gitblit.models.NavLink.ExternalNavLink;
+import com.gitblit.models.NavLink.PageNavLink;
 import com.gitblit.wicket.WicketUtils;
 import com.gitblit.wicket.pages.BasePage;
 
@@ -34,45 +36,59 @@
 	private static final long serialVersionUID = 1L;
 
 	public NavigationPanel(String id, final Class<? extends BasePage> pageClass,
-			List<PageRegistration> registeredPages) {
+			List<NavLink> navLinks) {
 		super(id);
 
-		ListDataProvider<PageRegistration> refsDp = new ListDataProvider<PageRegistration>(
-				registeredPages);
-		DataView<PageRegistration> refsView = new DataView<PageRegistration>("navLink", refsDp) {
+		ListDataProvider<NavLink> refsDp = new ListDataProvider<NavLink>(navLinks);
+		DataView<NavLink> linksView = new DataView<NavLink>("navLink", refsDp) {
 			private static final long serialVersionUID = 1L;
 
 			@Override
-			public void populateItem(final Item<PageRegistration> item) {
-				PageRegistration entry = item.getModelObject();
-				if (entry.hiddenPhone) {
+			public void populateItem(final Item<NavLink> item) {
+				NavLink navLink = item.getModelObject();
+				String linkText = navLink.translationKey;
+				try {
+					// try to lookup translation key
+					linkText = getString(navLink.translationKey);
+				} catch (Exception e) {
+				}
+
+				if (navLink.hiddenPhone) {
 					WicketUtils.setCssClass(item, "hidden-phone");
 				}
-				if (entry instanceof OtherPageLink) {
+				if (navLink instanceof ExternalNavLink) {
 					// other link
-					OtherPageLink link = (OtherPageLink) entry;
-					Component c = new LinkPanel("link", null, getString(entry.translationKey), link.url);
+					ExternalNavLink link = (ExternalNavLink) navLink;
+					Component c = new LinkPanel("link", null, linkText, link.url);
 					c.setRenderBodyOnly(true);
 					item.add(c);
-				} else if (entry instanceof DropDownMenuRegistration) {
+				} else if (navLink instanceof DropDownPageMenuNavLink) {
 					// drop down menu
-					DropDownMenuRegistration reg = (DropDownMenuRegistration) entry;
-					Component c = new DropDownMenu("link", getString(entry.translationKey), reg);
+					DropDownPageMenuNavLink reg = (DropDownPageMenuNavLink) navLink;
+					Component c = new DropDownMenu("link", linkText, reg);
 					c.setRenderBodyOnly(true);
 					item.add(c);
 					WicketUtils.setCssClass(item, "dropdown");
-				} else {
-					// standard page link
-					Component c = new LinkPanel("link", null, getString(entry.translationKey),
-							entry.pageClass, entry.params);
+				} else if (navLink instanceof DropDownMenuNavLink) {
+					// drop down menu
+					DropDownMenuNavLink reg = (DropDownMenuNavLink) navLink;
+					Component c = new DropDownMenu("link", linkText, reg);
 					c.setRenderBodyOnly(true);
-					if (entry.pageClass.equals(pageClass)) {
+					item.add(c);
+					WicketUtils.setCssClass(item, "dropdown");
+				} else if (navLink instanceof PageNavLink) {
+					PageNavLink reg = (PageNavLink) navLink;
+					// standard page link
+					Component c = new LinkPanel("link", null, linkText,
+							reg.pageClass, reg.params);
+					c.setRenderBodyOnly(true);
+					if (reg.pageClass.equals(pageClass)) {
 						WicketUtils.setCssClass(item, "active");
 					}
 					item.add(c);
 				}
 			}
 		};
-		add(refsView);
+		add(linksView);
 	}
 }
\ No newline at end of file

--
Gitblit v1.9.1