From 9effe1630d97039b3e01cd9b58ed07e75be1d63c Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Mon, 25 Feb 2013 08:40:30 -0500
Subject: [PATCH] Merge pull request #75 from thefake/master

---
 src/com/gitblit/wicket/panels/NavigationPanel.java |   36 +++++++++++++++++++++++++++++-------
 1 files changed, 29 insertions(+), 7 deletions(-)

diff --git a/src/com/gitblit/wicket/panels/NavigationPanel.java b/src/com/gitblit/wicket/panels/NavigationPanel.java
index 6ec461f..558cc71 100644
--- a/src/com/gitblit/wicket/panels/NavigationPanel.java
+++ b/src/com/gitblit/wicket/panels/NavigationPanel.java
@@ -24,6 +24,8 @@
 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.wicket.WicketUtils;
 import com.gitblit.wicket.pages.BasePage;
 
@@ -31,20 +33,40 @@
 
 	private static final long serialVersionUID = 1L;
 
-	public NavigationPanel(String id, final Class<? extends BasePage> pageClass, List<PageRegistration> registeredPages) {
+	public NavigationPanel(String id, final Class<? extends BasePage> pageClass,
+			List<PageRegistration> registeredPages) {
 		super(id);
-				
-		ListDataProvider<PageRegistration> refsDp = new ListDataProvider<PageRegistration>(registeredPages);
+
+		ListDataProvider<PageRegistration> refsDp = new ListDataProvider<PageRegistration>(
+				registeredPages);
 		DataView<PageRegistration> refsView = new DataView<PageRegistration>("navLink", refsDp) {
 			private static final long serialVersionUID = 1L;
 
 			public void populateItem(final Item<PageRegistration> item) {
 				PageRegistration entry = item.getModelObject();
-				Component c = new LinkPanel("link", null, getString(entry.translationKey), entry.pageClass, entry.params);
-				if (entry.pageClass.equals(pageClass)) {
-					WicketUtils.setCssClass(item, "active");
+				if (entry instanceof OtherPageLink) {
+					// other link
+					OtherPageLink link = (OtherPageLink) entry;
+					Component c = new LinkPanel("link", null, getString(entry.translationKey), link.url);
+					c.setRenderBodyOnly(true);
+					item.add(c);
+				} else if (entry instanceof DropDownMenuRegistration) {
+					// drop down menu
+					DropDownMenuRegistration reg = (DropDownMenuRegistration) entry;
+					Component c = new DropDownMenu("link", getString(entry.translationKey), 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);
+					c.setRenderBodyOnly(true);
+					if (entry.pageClass.equals(pageClass)) {
+						WicketUtils.setCssClass(item, "active");
+					}
+					item.add(c);
 				}
-				item.add(c);
 			}
 		};
 		add(refsView);

--
Gitblit v1.9.1