From 6b18b0761b726fd9aef1ebcc21b760378f7d4b5c Mon Sep 17 00:00:00 2001
From: James Moger <james.moger@gitblit.com>
Date: Mon, 16 Jun 2014 17:36:12 -0400
Subject: [PATCH] Merge release 1.6.0

---
 src/main/java/com/gitblit/wicket/panels/DropDownMenu.java |   74 +++++++++++++++++++++++++++++++-----
 1 files changed, 63 insertions(+), 11 deletions(-)

diff --git a/src/main/java/com/gitblit/wicket/panels/DropDownMenu.java b/src/main/java/com/gitblit/wicket/panels/DropDownMenu.java
index d1a632e..4e7ae54 100644
--- a/src/main/java/com/gitblit/wicket/panels/DropDownMenu.java
+++ b/src/main/java/com/gitblit/wicket/panels/DropDownMenu.java
@@ -21,38 +21,90 @@
 import org.apache.wicket.markup.repeater.data.DataView;
 import org.apache.wicket.markup.repeater.data.ListDataProvider;
 
-import com.gitblit.wicket.PageRegistration.DropDownMenuItem;
-import com.gitblit.wicket.PageRegistration.DropDownMenuRegistration;
+import com.gitblit.models.Menu.ExternalLinkMenuItem;
+import com.gitblit.models.Menu.MenuDivider;
+import com.gitblit.models.Menu.MenuItem;
+import com.gitblit.models.Menu.PageLinkMenuItem;
+import com.gitblit.models.Menu.ParameterMenuItem;
+import com.gitblit.models.NavLink.DropDownMenuNavLink;
+import com.gitblit.models.NavLink.DropDownPageMenuNavLink;
 import com.gitblit.wicket.WicketUtils;
 
 public class DropDownMenu extends Panel {
 
 	private static final long serialVersionUID = 1L;
 
-	public DropDownMenu(String id, String label, final DropDownMenuRegistration menu) {
+	public DropDownMenu(String id, String label, final DropDownPageMenuNavLink menu) {
 		super(id);
 
 		add(new Label("label", label).setRenderBodyOnly(true));
-		ListDataProvider<DropDownMenuItem> items = new ListDataProvider<DropDownMenuItem>(
-				menu.menuItems);
-		DataView<DropDownMenuItem> view = new DataView<DropDownMenuItem>("menuItems", items) {
+		ListDataProvider<MenuItem> items = new ListDataProvider<MenuItem>(menu.menuItems);
+		DataView<MenuItem> view = new DataView<MenuItem>("menuItems", items) {
 			private static final long serialVersionUID = 1L;
 
 			@Override
-			public void populateItem(final Item<DropDownMenuItem> item) {
-				DropDownMenuItem entry = item.getModelObject();
-				if (entry.isDivider()) {
+			public void populateItem(final Item<MenuItem> item) {
+				MenuItem entry = item.getModelObject();
+				if (entry instanceof PageLinkMenuItem) {
+					// link to another Wicket page
+					PageLinkMenuItem pageLink = (PageLinkMenuItem) entry;
+					item.add(new LinkPanel("menuItem", null, null, pageLink.toString(), pageLink.getPageClass(),
+							pageLink.getPageParameters(), false).setRenderBodyOnly(true));
+				} else if (entry instanceof ExternalLinkMenuItem) {
+					// link to a specified href
+					ExternalLinkMenuItem extLink = (ExternalLinkMenuItem) entry;
+					item.add(new LinkPanel("menuItem", null, extLink.toString(), extLink.getHref(),
+							extLink.openInNewWindow()).setRenderBodyOnly(true));
+				} else if (entry instanceof MenuDivider) {
+					// divider
 					item.add(new Label("menuItem").setRenderBodyOnly(true));
 					WicketUtils.setCssClass(item, "divider");
 				} else {
+					ParameterMenuItem parameter = (ParameterMenuItem) entry;
+					// parameter link for the current page
 					String icon = null;
-					if (entry.isSelected()) {
+					if (parameter.isSelected()) {
 						icon = "icon-ok";
 					} else {
 						icon = "icon-ok-white";
 					}
 					item.add(new LinkPanel("menuItem", icon, null, entry.toString(), menu.pageClass,
-							entry.getPageParameters(), false).setRenderBodyOnly(true));
+							parameter.getPageParameters(), false).setRenderBodyOnly(true));
+				}
+			}
+		};
+		add(view);
+		setRenderBodyOnly(true);
+	}
+
+	public DropDownMenu(String id, String label, final DropDownMenuNavLink menu) {
+		super(id);
+
+		add(new Label("label", label).setRenderBodyOnly(true));
+		ListDataProvider<MenuItem> items = new ListDataProvider<MenuItem>(menu.menuItems);
+		DataView<MenuItem> view = new DataView<MenuItem>("menuItems", items) {
+			private static final long serialVersionUID = 1L;
+
+			@Override
+			public void populateItem(final Item<MenuItem> item) {
+				MenuItem entry = item.getModelObject();
+				if (entry instanceof PageLinkMenuItem) {
+					// link to another Wicket page
+					PageLinkMenuItem pageLink = (PageLinkMenuItem) entry;
+					item.add(new LinkPanel("menuItem", null, null, pageLink.toString(), pageLink.getPageClass(),
+							pageLink.getPageParameters(), false).setRenderBodyOnly(true));
+				} else if (entry instanceof ExternalLinkMenuItem) {
+					// link to a specified href
+					ExternalLinkMenuItem extLink = (ExternalLinkMenuItem) entry;
+					item.add(new LinkPanel("menuItem", null, extLink.toString(), extLink.getHref(),
+							extLink.openInNewWindow()).setRenderBodyOnly(true));
+				} else if (entry instanceof MenuDivider) {
+					// divider
+					item.add(new Label("menuItem").setRenderBodyOnly(true));
+					WicketUtils.setCssClass(item, "divider");
+				} else {
+					throw new IllegalArgumentException(String.format("Unexpected menuitem type %s",
+							entry.getClass().getSimpleName()));
 				}
 			}
 		};

--
Gitblit v1.9.1