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/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