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/NavigationPanel.java | 60 ++++++++++++++++++++++++++++++++++++++---------------------- 1 files changed, 38 insertions(+), 22 deletions(-) diff --git a/src/main/java/com/gitblit/wicket/panels/NavigationPanel.java b/src/main/java/com/gitblit/wicket/panels/NavigationPanel.java index 393dd13..2bc92f4 100644 --- a/src/main/java/com/gitblit/wicket/panels/NavigationPanel.java +++ b/src/main/java/com/gitblit/wicket/panels/NavigationPanel.java @@ -23,9 +23,11 @@ import org.apache.wicket.markup.repeater.data.DataView; 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.models.NavLink; +import com.gitblit.models.NavLink.DropDownMenuNavLink; +import com.gitblit.models.NavLink.DropDownPageMenuNavLink; +import com.gitblit.models.NavLink.ExternalNavLink; +import com.gitblit.models.NavLink.PageNavLink; import com.gitblit.wicket.WicketUtils; import com.gitblit.wicket.pages.BasePage; @@ -34,45 +36,59 @@ private static final long serialVersionUID = 1L; public NavigationPanel(String id, final Class<? extends BasePage> pageClass, - List<PageRegistration> registeredPages) { + List<NavLink> navLinks) { super(id); - ListDataProvider<PageRegistration> refsDp = new ListDataProvider<PageRegistration>( - registeredPages); - DataView<PageRegistration> refsView = new DataView<PageRegistration>("navLink", refsDp) { + ListDataProvider<NavLink> refsDp = new ListDataProvider<NavLink>(navLinks); + DataView<NavLink> linksView = new DataView<NavLink>("navLink", refsDp) { private static final long serialVersionUID = 1L; @Override - public void populateItem(final Item<PageRegistration> item) { - PageRegistration entry = item.getModelObject(); - if (entry.hiddenPhone) { + public void populateItem(final Item<NavLink> item) { + NavLink navLink = item.getModelObject(); + String linkText = navLink.translationKey; + try { + // try to lookup translation key + linkText = getString(navLink.translationKey); + } catch (Exception e) { + } + + if (navLink.hiddenPhone) { WicketUtils.setCssClass(item, "hidden-phone"); } - if (entry instanceof OtherPageLink) { + if (navLink instanceof ExternalNavLink) { // other link - OtherPageLink link = (OtherPageLink) entry; - Component c = new LinkPanel("link", null, getString(entry.translationKey), link.url); + ExternalNavLink link = (ExternalNavLink) navLink; + Component c = new LinkPanel("link", null, linkText, link.url); c.setRenderBodyOnly(true); item.add(c); - } else if (entry instanceof DropDownMenuRegistration) { + } else if (navLink instanceof DropDownPageMenuNavLink) { // drop down menu - DropDownMenuRegistration reg = (DropDownMenuRegistration) entry; - Component c = new DropDownMenu("link", getString(entry.translationKey), reg); + DropDownPageMenuNavLink reg = (DropDownPageMenuNavLink) navLink; + Component c = new DropDownMenu("link", linkText, 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); + } else if (navLink instanceof DropDownMenuNavLink) { + // drop down menu + DropDownMenuNavLink reg = (DropDownMenuNavLink) navLink; + Component c = new DropDownMenu("link", linkText, reg); c.setRenderBodyOnly(true); - if (entry.pageClass.equals(pageClass)) { + item.add(c); + WicketUtils.setCssClass(item, "dropdown"); + } else if (navLink instanceof PageNavLink) { + PageNavLink reg = (PageNavLink) navLink; + // standard page link + Component c = new LinkPanel("link", null, linkText, + reg.pageClass, reg.params); + c.setRenderBodyOnly(true); + if (reg.pageClass.equals(pageClass)) { WicketUtils.setCssClass(item, "active"); } item.add(c); } } }; - add(refsView); + add(linksView); } } \ No newline at end of file -- Gitblit v1.9.1