From 7a401a3ff909bf82fb4068d6dba430497f74084a Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Mon, 05 May 2014 11:32:46 -0400 Subject: [PATCH] Allow plugins to extend the top navbar and repository navbar --- src/main/java/com/gitblit/wicket/panels/DropDownMenu.java | 45 ++++++++++++++++++++++++++++++++++++++++----- 1 files changed, 40 insertions(+), 5 deletions(-) diff --git a/src/main/java/com/gitblit/wicket/panels/DropDownMenu.java b/src/main/java/com/gitblit/wicket/panels/DropDownMenu.java index f561143..4e7ae54 100644 --- a/src/main/java/com/gitblit/wicket/panels/DropDownMenu.java +++ b/src/main/java/com/gitblit/wicket/panels/DropDownMenu.java @@ -21,24 +21,24 @@ import org.apache.wicket.markup.repeater.data.DataView; import org.apache.wicket.markup.repeater.data.ListDataProvider; -import com.gitblit.models.Menu.MenuDivider; 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.wicket.PageRegistration.DropDownMenuRegistration; +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<MenuItem> items = new ListDataProvider<MenuItem>( - menu.menuItems); + ListDataProvider<MenuItem> items = new ListDataProvider<MenuItem>(menu.menuItems); DataView<MenuItem> view = new DataView<MenuItem>("menuItems", items) { private static final long serialVersionUID = 1L; @@ -76,4 +76,39 @@ 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())); + } + } + }; + add(view); + setRenderBodyOnly(true); + } } \ No newline at end of file -- Gitblit v1.9.1