From 856f3fc2a8365c141d1418d3cfff502be233c104 Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Mon, 05 May 2014 11:17:14 -0400 Subject: [PATCH] Overhaul menu item classes and add AdminMenuExtension point --- src/main/java/com/gitblit/wicket/panels/DropDownMenu.java | 33 +++++++++++++++++++++++++-------- 1 files changed, 25 insertions(+), 8 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..f561143 100644 --- a/src/main/java/com/gitblit/wicket/panels/DropDownMenu.java +++ b/src/main/java/com/gitblit/wicket/panels/DropDownMenu.java @@ -21,7 +21,11 @@ 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.models.Menu.MenuDivider; +import com.gitblit.models.Menu.ExternalLinkMenuItem; +import com.gitblit.models.Menu.MenuItem; +import com.gitblit.models.Menu.PageLinkMenuItem; +import com.gitblit.models.Menu.ParameterMenuItem; import com.gitblit.wicket.PageRegistration.DropDownMenuRegistration; import com.gitblit.wicket.WicketUtils; @@ -33,26 +37,39 @@ super(id); add(new Label("label", label).setRenderBodyOnly(true)); - ListDataProvider<DropDownMenuItem> items = new ListDataProvider<DropDownMenuItem>( + ListDataProvider<MenuItem> items = new ListDataProvider<MenuItem>( menu.menuItems); - DataView<DropDownMenuItem> view = new DataView<DropDownMenuItem>("menuItems", items) { + 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)); } } }; -- Gitblit v1.9.1