Merge branch 'uiMods' into develop
This commit is contained in:
commit
658cf09e9a
src/main
java/se/su/dsv/scipro
basepanels
AbstractBaseMenuPanel.javaHeaderPanel.htmlHeaderPanel.javaMainMenuPanel.htmlMainMenuPanel.javaServiceMenuPanel.java
mainmenu
components
project/panels
wiquery/mainmenu
webapp/css
@ -0,0 +1,16 @@
|
|||||||
|
package se.su.dsv.scipro.basepanels;
|
||||||
|
|
||||||
|
import org.apache.wicket.Page;
|
||||||
|
|
||||||
|
import se.su.dsv.scipro.components.AbstractMenuPanel;
|
||||||
|
|
||||||
|
public abstract class AbstractBaseMenuPanel extends AbstractMenuPanel {
|
||||||
|
private static final long serialVersionUID = 3738086567246191811L;
|
||||||
|
public AbstractBaseMenuPanel(final String id,final Class<? extends Page> menuContainerCommonSuperClass, final Class<? extends Page> containerClass) {
|
||||||
|
super(id,menuContainerCommonSuperClass,containerClass);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
protected MenuType getMenuType() {
|
||||||
|
return MenuType.TAB;
|
||||||
|
}
|
||||||
|
}
|
@ -1,13 +1,19 @@
|
|||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
|
<html
|
||||||
|
xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
|
||||||
<body>
|
<body>
|
||||||
<wicket:panel>
|
<wicket:panel>
|
||||||
<header id="main-header" class="span-24">
|
<header id="main-header" class="span-24">
|
||||||
<div class="prepend-1 span-5">
|
<div class="prepend-1 span-5">
|
||||||
<h1 id="logo"><a href="#" wicket:id="homeLink" title="SciPro">SciPro</a></h1>
|
<h1 id="logo">
|
||||||
</div>
|
<a href="#" wicket:id="homeLink" title="SciPro">SciPro</a>
|
||||||
<div wicket:id="mainMenuPanel"></div>
|
</h1>
|
||||||
</header>
|
</div>
|
||||||
</wicket:panel>
|
<div class="prepend-2 span-15 last user-links"
|
||||||
|
wicket:id="userLinksPanel"></div>
|
||||||
|
<div wicket:id="mainMenuPanel" class="main-menu prepend-6"></div>
|
||||||
|
<div wicket:id="serviceMenuPanel" class="service-menu"></div>
|
||||||
|
</header>
|
||||||
|
</wicket:panel>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
@ -1,9 +1,7 @@
|
|||||||
package se.su.dsv.scipro.basepanels;
|
package se.su.dsv.scipro.basepanels;
|
||||||
|
|
||||||
import org.apache.wicket.Page;
|
import org.apache.wicket.Page;
|
||||||
import org.apache.wicket.markup.html.basic.Label;
|
|
||||||
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
|
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
|
||||||
import org.apache.wicket.markup.html.panel.EmptyPanel;
|
|
||||||
import org.apache.wicket.markup.html.panel.Panel;
|
import org.apache.wicket.markup.html.panel.Panel;
|
||||||
|
|
||||||
import se.su.dsv.scipro.SciProApplication;
|
import se.su.dsv.scipro.SciProApplication;
|
||||||
@ -14,17 +12,13 @@ import se.su.dsv.scipro.SciProApplication;
|
|||||||
*
|
*
|
||||||
*/
|
*/
|
||||||
public class HeaderPanel extends Panel {
|
public class HeaderPanel extends Panel {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
public HeaderPanel(String id, Class<? extends Page> containerClass) {
|
public HeaderPanel(String id, Class<? extends Page> containerClass) {
|
||||||
super(id);
|
super(id);
|
||||||
|
|
||||||
add(new BookmarkablePageLink<Void>("homeLink", SciProApplication.get().getHomePage()));
|
add(new BookmarkablePageLink<Void>("homeLink", SciProApplication.get().getHomePage()));
|
||||||
|
add(new MainMenuPanel("mainMenuPanel", containerClass));
|
||||||
MainMenuPanel mainMenuPanel = new MainMenuPanel("mainMenuPanel", containerClass);
|
add(new ServiceMenuPanel("serviceMenuPanel", containerClass));
|
||||||
add(mainMenuPanel);
|
add(new UserLinksPanel("userLinksPanel"));
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,23 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
|
|
||||||
<body>
|
|
||||||
<wicket:panel>
|
|
||||||
<nav id="main-nav">
|
|
||||||
<div class="span-18 last">
|
|
||||||
<div class="prepend-2 span-15 last" id="user-links" wicket:id="userLinksPanel"></div>
|
|
||||||
<div class="span-18 last">
|
|
||||||
<ul id="nav-list">
|
|
||||||
<li class="nav-list-item" id="home-menu-item" wicket:id="homeMenuItem"></li>
|
|
||||||
<li class="nav-list-item" id="messages-menu-item" wicket:id="messagesMenuItem"></li>
|
|
||||||
<li class="nav-list-item" id="project-menu-item" wicket:id="projectMenuItem"></li>
|
|
||||||
<li class="nav-list-item" id="supervisor-menu-item" wicket:id="supervisorMenuItem"></li>
|
|
||||||
<li class="nav-list-item" id="resources-menu-item" wicket:id="resourcesMenuItem"></li>
|
|
||||||
<li class="nav-list-item" id="admin-menu-item" wicket:id="adminMenuItem"></li>
|
|
||||||
</ul>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
|
|
||||||
</nav>
|
|
||||||
</wicket:panel>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -4,123 +4,25 @@ import java.util.ArrayList;
|
|||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.apache.wicket.Page;
|
import org.apache.wicket.Page;
|
||||||
import org.apache.wicket.PageParameters;
|
|
||||||
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
|
|
||||||
import org.apache.wicket.markup.html.panel.Panel;
|
|
||||||
import org.odlabs.wiquery.core.commons.IWiQueryPlugin;
|
|
||||||
import org.odlabs.wiquery.core.commons.WiQueryResourceManager;
|
|
||||||
import org.odlabs.wiquery.core.javascript.JsStatement;
|
|
||||||
|
|
||||||
import se.su.dsv.scipro.HomePage;
|
import se.su.dsv.scipro.HomePage;
|
||||||
import se.su.dsv.scipro.SciProApplication;
|
|
||||||
import se.su.dsv.scipro.admin.pages.AdminScheduleTemplatesPage;
|
|
||||||
import se.su.dsv.scipro.admin.pages.AdminStartPage;
|
import se.su.dsv.scipro.admin.pages.AdminStartPage;
|
||||||
import se.su.dsv.scipro.admin.pages.ProjectManagementPage;
|
|
||||||
import se.su.dsv.scipro.admin.pages.SystemMaintenancePage;
|
|
||||||
import se.su.dsv.scipro.basepages.MenuPage;
|
|
||||||
import se.su.dsv.scipro.basepanels.mainmenu.MainMenuItem;
|
|
||||||
import se.su.dsv.scipro.basepanels.mainmenu.MenuItem;
|
|
||||||
import se.su.dsv.scipro.knol.resource.page.ResourcePage;
|
|
||||||
import se.su.dsv.scipro.message.pages.PrivateMessagesPage;
|
|
||||||
import se.su.dsv.scipro.peer.pages.PeerReviewTemplatePage;
|
|
||||||
import se.su.dsv.scipro.project.pages.FinalSeminarProjectListPage;
|
|
||||||
import se.su.dsv.scipro.project.pages.ProjectOppositionPage;
|
|
||||||
import se.su.dsv.scipro.project.pages.ProjectPartnerPage;
|
|
||||||
import se.su.dsv.scipro.project.pages.ProjectStartPage;
|
import se.su.dsv.scipro.project.pages.ProjectStartPage;
|
||||||
import se.su.dsv.scipro.project.pages.ProjectChecklistPage;
|
|
||||||
import se.su.dsv.scipro.security.auth.MetaDataActionStrategy;
|
|
||||||
import se.su.dsv.scipro.security.auth.roles.Roles;
|
|
||||||
import se.su.dsv.scipro.supervisor.pages.SupervisorProjectsFinalSeminarPage;
|
|
||||||
import se.su.dsv.scipro.supervisor.pages.SupervisorStartPage;
|
import se.su.dsv.scipro.supervisor.pages.SupervisorStartPage;
|
||||||
import se.su.dsv.scipro.wiquery.mainmenu.MainMenuJavascriptResourceReference;
|
|
||||||
|
|
||||||
public class MainMenuPanel extends Panel implements IWiQueryPlugin {
|
public class MainMenuPanel extends AbstractBaseMenuPanel {
|
||||||
|
|
||||||
private static final long serialVersionUID = 3738086567246191811L;
|
private static final long serialVersionUID = 3738086567246191811L;
|
||||||
|
|
||||||
public MainMenuPanel(String id, Class<? extends Page> containerClass) {
|
public MainMenuPanel(String id, Class<? extends Page> containerClass) {
|
||||||
super(id);
|
super(id,HomePage.class,containerClass);
|
||||||
|
|
||||||
add(new MainMenuItem("homeMenuItem", HomePage.MAIN_MENU_LABEL, HomePage.class, containerClass, null));
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Messages
|
|
||||||
*/
|
|
||||||
MainMenuItem messagesMenuItem = new MainMenuItem("messagesMenuItem", PrivateMessagesPage.MAIN_MENU_LABEL, PrivateMessagesPage.class, containerClass, null);
|
|
||||||
MetaDataActionStrategy.authorize(messagesMenuItem, Roles.SYSADMIN); // TODO: Hidden for initial deployment
|
|
||||||
add(messagesMenuItem);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Project/Author
|
|
||||||
*/
|
|
||||||
List<MenuItem> projectMenuSubItems = new ArrayList<MenuItem>();
|
|
||||||
projectMenuSubItems.add(new MenuItem(ProjectStartPage.MAIN_MENU_LABEL, ProjectStartPage.class));
|
|
||||||
projectMenuSubItems.add(new MenuItem(ProjectOppositionPage.MAIN_MENU_LABEL, ProjectOppositionPage.class));
|
|
||||||
projectMenuSubItems.add(new MenuItem(FinalSeminarProjectListPage.MAIN_MENU_LABEL, FinalSeminarProjectListPage.class));
|
|
||||||
MainMenuItem projectMenuItem = new MainMenuItem("projectMenuItem", ProjectStartPage.MAIN_MENU_LABEL, ProjectStartPage.class, containerClass, projectMenuSubItems);
|
|
||||||
add(projectMenuItem);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Supervisor
|
|
||||||
*/
|
|
||||||
List<MenuItem> supervisorMenuSubItems = new ArrayList<MenuItem>();
|
|
||||||
//supervisorMenuSubItems.add(new MenuItem("Schedule Templates", SupervisorProjectsFinalSeminarPage.class));
|
|
||||||
supervisorMenuSubItems.add(new MenuItem(SupervisorStartPage.MAIN_MENU_LABEL, SupervisorStartPage.class));
|
|
||||||
supervisorMenuSubItems.add(new MenuItem(SupervisorProjectsFinalSeminarPage.MAIN_MENU_LABEL, SupervisorProjectsFinalSeminarPage.class));
|
|
||||||
MainMenuItem supervisorMenuItem = new MainMenuItem("supervisorMenuItem", SupervisorStartPage.MAIN_MENU_LABEL, SupervisorStartPage.class, containerClass, supervisorMenuSubItems);
|
|
||||||
MetaDataActionStrategy.authorize(supervisorMenuItem, new Roles[]{Roles.EXTERNAL, Roles.EMPLOYEE});
|
|
||||||
add(supervisorMenuItem);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Resource
|
|
||||||
*/
|
|
||||||
MainMenuItem resourcesMenuItem = new MainMenuItem("resourcesMenuItem", ResourcePage.MAIN_MENU_LABEL, ResourcePage.class, containerClass, null);
|
|
||||||
MetaDataActionStrategy.authorize(resourcesMenuItem, Roles.SYSADMIN ); // TODO: Hidden for initial deployment
|
|
||||||
add(resourcesMenuItem);
|
|
||||||
|
|
||||||
/*
|
|
||||||
* Admin
|
|
||||||
*/
|
|
||||||
List<MenuItem> adminMenuSubItems = new ArrayList<MenuItem>();
|
|
||||||
adminMenuSubItems.add(new MenuItem(AdminScheduleTemplatesPage.MAIN_MENU_LABEL, AdminScheduleTemplatesPage.class));
|
|
||||||
adminMenuSubItems.add(new MenuItem(SystemMaintenancePage.MAIN_MENU_LABEL, SystemMaintenancePage.class));
|
|
||||||
adminMenuSubItems.add(new MenuItem(ProjectManagementPage.MAIN_MENU_LABEL, ProjectManagementPage.class));
|
|
||||||
adminMenuSubItems.add(new MenuItem(PeerReviewTemplatePage.MAIN_MENU_LABEL, PeerReviewTemplatePage.class));
|
|
||||||
MainMenuItem adminMenuItem = new MainMenuItem("adminMenuItem", AdminStartPage.MAIN_MENU_LABEL, AdminStartPage.class, containerClass, adminMenuSubItems);
|
|
||||||
MetaDataActionStrategy.authorize(adminMenuItem, Roles.ADMIN);
|
|
||||||
add(adminMenuItem);
|
|
||||||
|
|
||||||
UserLinksPanel userLinksPanel = new UserLinksPanel("userLinksPanel");
|
|
||||||
add(userLinksPanel);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void contribute(WiQueryResourceManager wiQueryResourceManager) {
|
protected List<MenuItem> getItemList(){
|
||||||
wiQueryResourceManager.addJavaScriptResource(MainMenuJavascriptResourceReference.get());
|
List<MenuItem> list = new ArrayList<MenuItem>();
|
||||||
}
|
list.add(new MenuItem(ProjectStartPage.MAIN_MENU_LABEL,ProjectStartPage.class));
|
||||||
|
list.add(new MenuItem(SupervisorStartPage.MAIN_MENU_LABEL,SupervisorStartPage.class));
|
||||||
@Override
|
list.add(new MenuItem(AdminStartPage.MAIN_MENU_LABEL,AdminStartPage.class));
|
||||||
public JsStatement statement() {
|
return list;
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @deprecated see {@link se.su.dsv.scipro.basepanels.mainmenu.AbstractMainMenuItem#getMenuLink(String)}
|
|
||||||
*/
|
|
||||||
@SuppressWarnings("unused")
|
|
||||||
private BookmarkablePageLink<Void> getMenuLink(String id, final Class<? extends Page> targetPageClass, final Class<? extends Page> containerClass){
|
|
||||||
return getMenuLink(id, targetPageClass, null, containerClass);
|
|
||||||
}
|
}
|
||||||
/**
|
|
||||||
* @deprecated see {@link se.su.dsv.scipro.basepanels.mainmenu.AbstractMainMenuItem#getMenuLink(String, PageParameters)}
|
|
||||||
*/
|
|
||||||
private BookmarkablePageLink<Void> getMenuLink(String id, final Class<? extends Page> targetPageClass, final PageParameters pp, final Class<? extends Page> containerClass){
|
|
||||||
BookmarkablePageLink<Void> result = new BookmarkablePageLink<Void>(id, targetPageClass, pp);
|
|
||||||
result.setOutputMarkupId(true);
|
|
||||||
if(targetPageClass == containerClass || (targetPageClass.getSuperclass().isAssignableFrom(containerClass) && targetPageClass.getSuperclass() != MenuPage.class) ){
|
|
||||||
result.setMarkupId("current");
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,24 @@
|
|||||||
|
package se.su.dsv.scipro.basepanels;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import org.apache.wicket.Page;
|
||||||
|
|
||||||
|
import se.su.dsv.scipro.basepages.MenuPage;
|
||||||
|
import se.su.dsv.scipro.knol.resource.page.ResourcePage;
|
||||||
|
import se.su.dsv.scipro.message.pages.PrivateMessagesPage;
|
||||||
|
|
||||||
|
public class ServiceMenuPanel extends AbstractBaseMenuPanel {
|
||||||
|
private static final long serialVersionUID = 3738086567246191811L;
|
||||||
|
public ServiceMenuPanel(String id, Class<? extends Page> containerClass) {
|
||||||
|
super(id,MenuPage.class,containerClass);
|
||||||
|
}
|
||||||
|
@Override
|
||||||
|
protected List<MenuItem> getItemList(){
|
||||||
|
List<MenuItem> list = new ArrayList<MenuItem>();
|
||||||
|
list.add(new MenuItem(ResourcePage.MAIN_MENU_LABEL,ResourcePage.class));
|
||||||
|
list.add(new MenuItem(PrivateMessagesPage.MAIN_MENU_LABEL,PrivateMessagesPage.class));
|
||||||
|
return list;
|
||||||
|
}
|
||||||
|
}
|
@ -1,62 +0,0 @@
|
|||||||
package se.su.dsv.scipro.basepanels.mainmenu;
|
|
||||||
|
|
||||||
import org.apache.wicket.Page;
|
|
||||||
import org.apache.wicket.PageParameters;
|
|
||||||
import org.apache.wicket.markup.html.link.BookmarkablePageLink;
|
|
||||||
import org.apache.wicket.markup.html.panel.Panel;
|
|
||||||
|
|
||||||
import se.su.dsv.scipro.basepages.MenuPage;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Abstract Class for Main Menu Items
|
|
||||||
*
|
|
||||||
* @author patrick
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public abstract class AbstractMainMenuItem extends Panel {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = 2849283400267381932L;
|
|
||||||
protected Class<? extends Page> targetPageClass;
|
|
||||||
protected Class<? extends Page> containerPageClass;
|
|
||||||
private String menuLabel;
|
|
||||||
protected BookmarkablePageLink<Void> menuItemLink;
|
|
||||||
|
|
||||||
public AbstractMainMenuItem(String id, String label, Class<? extends Page> targetPageClass, Class<? extends Page> containerPageClass) {
|
|
||||||
super(id);
|
|
||||||
this.menuLabel = label;
|
|
||||||
this.targetPageClass = targetPageClass;
|
|
||||||
this.containerPageClass = containerPageClass;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getMenuLabel() {
|
|
||||||
return menuLabel;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* {@link #getMenuLink(String, PageParameters)}
|
|
||||||
*/
|
|
||||||
protected BookmarkablePageLink<Void> getMenuLink(String id) {
|
|
||||||
return getMenuLink(id, null);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a bookmarkable page link for the main menu.
|
|
||||||
*
|
|
||||||
* @param id
|
|
||||||
* @param pp
|
|
||||||
* @return
|
|
||||||
* @author Martin Peters
|
|
||||||
*/
|
|
||||||
protected BookmarkablePageLink<Void> getMenuLink(String id, final PageParameters pp) {
|
|
||||||
BookmarkablePageLink<Void> result = new BookmarkablePageLink<Void>(id, targetPageClass, pp);
|
|
||||||
result.setOutputMarkupId(true);
|
|
||||||
if(targetPageClass == containerPageClass || (targetPageClass.getSuperclass().isAssignableFrom(containerPageClass) && targetPageClass.getSuperclass() != MenuPage.class) ){
|
|
||||||
//TODO Should prefereably be replaced with the line below because repeating id's aren't valid html. I couldn't get the CSS to work though //mpeters
|
|
||||||
result.setMarkupId("current");
|
|
||||||
//result.add(new AttributeAppender("class", new Model<String>("current"), " "));
|
|
||||||
}
|
|
||||||
return result;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,12 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
|
|
||||||
<body>
|
|
||||||
<wicket:panel>
|
|
||||||
<span class="menu-item">
|
|
||||||
<a wicket:id="mainMenuItemLink"><span wicket:id="mainMenuItemLabel"></span></a>
|
|
||||||
<img class="nav-arrow" wicket:id="mainMenuItemArrow" />
|
|
||||||
</span>
|
|
||||||
<div class="submenu rounded-bl rounded-br"><span wicket:id="mainMenuListItemSubMenu"><span wicket:id="subMenuItem"></span></span></div>
|
|
||||||
</wicket:panel>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,79 +0,0 @@
|
|||||||
package se.su.dsv.scipro.basepanels.mainmenu;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.apache.wicket.Page;
|
|
||||||
import org.apache.wicket.behavior.AttributeAppender;
|
|
||||||
import org.apache.wicket.markup.html.basic.Label;
|
|
||||||
import org.apache.wicket.markup.html.image.ContextImage;
|
|
||||||
import org.apache.wicket.markup.html.list.ListItem;
|
|
||||||
import org.apache.wicket.markup.html.list.ListView;
|
|
||||||
import org.apache.wicket.model.Model;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Main Menu Item, the upper level of the main menu hierarchy.
|
|
||||||
*
|
|
||||||
* @author patrick
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class MainMenuItem extends AbstractMainMenuItem {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = 6103131868992599100L;
|
|
||||||
|
|
||||||
@SuppressWarnings("unused")
|
|
||||||
private List<MenuItem> subItems;
|
|
||||||
|
|
||||||
public MainMenuItem(String id, String label, final Class<? extends Page> targetPageClass, final Class<? extends Page> containerClass, final List<MenuItem> subItems) {
|
|
||||||
super(id, label, targetPageClass, containerClass);
|
|
||||||
this.subItems = subItems;
|
|
||||||
|
|
||||||
if (subItems != null)
|
|
||||||
this.add(new AttributeAppender("class", true, new Model<String>("parent"), " "));
|
|
||||||
|
|
||||||
menuItemLink = getMenuLink("mainMenuItemLink");
|
|
||||||
menuItemLink.add(new Label("mainMenuItemLabel", getMenuLabel()));
|
|
||||||
|
|
||||||
add(menuItemLink);
|
|
||||||
|
|
||||||
ContextImage mainMenuItemArrow = new ContextImage("mainMenuItemArrow", "images/site_nav_arrow2.png") {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = 1793336840409311960L;
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see org.apache.wicket.Component#isVisible()
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean isVisible() {
|
|
||||||
return subItems != null;
|
|
||||||
}
|
|
||||||
|
|
||||||
};
|
|
||||||
mainMenuItemArrow.setOutputMarkupPlaceholderTag(true);
|
|
||||||
add(mainMenuItemArrow);
|
|
||||||
|
|
||||||
ListView<MenuItem> subItemListView = new ListView<MenuItem>("mainMenuListItemSubMenu", subItems) {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = -1444218885819118389L;
|
|
||||||
|
|
||||||
@Override
|
|
||||||
protected void populateItem(ListItem<MenuItem> item) {
|
|
||||||
MenuItem obj = item.getModelObject();
|
|
||||||
item.add(obj.createSubItem("subMenuItem", containerClass));
|
|
||||||
add(item);
|
|
||||||
}
|
|
||||||
|
|
||||||
/* (non-Javadoc)
|
|
||||||
* @see org.apache.wicket.Component#isVisible()
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public boolean isVisible() {
|
|
||||||
return subItems != null;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
};
|
|
||||||
subItemListView.setOutputMarkupPlaceholderTag(true);
|
|
||||||
add(subItemListView);
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@ -1,8 +0,0 @@
|
|||||||
<!DOCTYPE html>
|
|
||||||
<html xmlns:wicket="http://wicket.apache.org/dtds.data/wicket-xhtml1.4-strict.dtd">
|
|
||||||
<body>
|
|
||||||
<wicket:panel>
|
|
||||||
<a href="#" wicket:id="mainMenuSubItemLink"><span wicket:id="mainMenuSubItemLabel">[Link]</span></a>
|
|
||||||
</wicket:panel>
|
|
||||||
</body>
|
|
||||||
</html>
|
|
@ -1,27 +0,0 @@
|
|||||||
package se.su.dsv.scipro.basepanels.mainmenu;
|
|
||||||
|
|
||||||
import org.apache.wicket.Page;
|
|
||||||
import org.apache.wicket.markup.html.basic.Label;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Main Menu Sub Items
|
|
||||||
*
|
|
||||||
* @author patrick
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class MainMenuSubItem extends AbstractMainMenuItem {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = 8903203088965767242L;
|
|
||||||
|
|
||||||
public MainMenuSubItem(String id, String label, Class<? extends Page> targetPageClass,
|
|
||||||
Class<? extends Page> containerPageClass) {
|
|
||||||
super(id, label, targetPageClass, containerPageClass);
|
|
||||||
|
|
||||||
menuItemLink = getMenuLink("mainMenuSubItemLink");
|
|
||||||
menuItemLink.add(new Label("mainMenuSubItemLabel", getMenuLabel()));
|
|
||||||
|
|
||||||
add(menuItemLink);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
}
|
|
@ -1,47 +0,0 @@
|
|||||||
package se.su.dsv.scipro.basepanels.mainmenu;
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import org.apache.wicket.IClusterable;
|
|
||||||
import org.apache.wicket.Page;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Helper Class for preparing the creation of main menu items
|
|
||||||
* @author patrick
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
public class MenuItem implements IClusterable {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = -5341715569517881163L;
|
|
||||||
|
|
||||||
private String menuLabel;
|
|
||||||
private Class<? extends Page> targetPageClass;
|
|
||||||
|
|
||||||
public MenuItem(String menuLabel, Class<? extends Page> targetPageClass) {
|
|
||||||
this.menuLabel = menuLabel;
|
|
||||||
this.targetPageClass = targetPageClass;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a Main Menu Sub Item
|
|
||||||
*
|
|
||||||
* @param id
|
|
||||||
* @param containerPageClass
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public MainMenuSubItem createSubItem(String id, Class<? extends Page> containerPageClass) {
|
|
||||||
return new MainMenuSubItem(id, menuLabel, targetPageClass, containerPageClass);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Creates a Main Menu Item
|
|
||||||
*
|
|
||||||
* @param id
|
|
||||||
* @param containerPageClass
|
|
||||||
* @param subItems
|
|
||||||
* @return
|
|
||||||
*/
|
|
||||||
public MainMenuItem createMenuItem(String id, Class<? extends Page> containerPageClass, List<MenuItem> subItems) {
|
|
||||||
return new MainMenuItem(id, menuLabel, targetPageClass, containerPageClass, subItems);
|
|
||||||
}
|
|
||||||
}
|
|
@ -18,6 +18,11 @@ import org.apache.wicket.model.Model;
|
|||||||
|
|
||||||
import se.su.dsv.scipro.icons.ImageIcon;
|
import se.su.dsv.scipro.icons.ImageIcon;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* ABC-class for menu's of different types.
|
||||||
|
* Subclasses should implement their own data feed mechanics via <code>getItemList</code> and provide a menu type via <code>getMenuType</code>
|
||||||
|
* The returned menu-type is used to provide CSS-class mappings for the menu structure, see the MenuType enum for alternatives.
|
||||||
|
*/
|
||||||
public abstract class AbstractMenuPanel extends Panel {
|
public abstract class AbstractMenuPanel extends Panel {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
@ -33,6 +38,9 @@ public abstract class AbstractMenuPanel extends Panel {
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Enumeration of supported menu types.
|
||||||
|
*/
|
||||||
public enum MenuType {
|
public enum MenuType {
|
||||||
NONE,
|
NONE,
|
||||||
TAB,
|
TAB,
|
||||||
@ -41,7 +49,12 @@ public abstract class AbstractMenuPanel extends Panel {
|
|||||||
VERTICAL
|
VERTICAL
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Superclass constructor, arguments
|
||||||
|
* @param id Wicket identifier for the component
|
||||||
|
* @param menuContainerCommonSuperClass [Needs documentation]
|
||||||
|
* @param containerClass [Needs documentation]
|
||||||
|
*/
|
||||||
public AbstractMenuPanel(final String id, final Class<? extends Page> menuContainerCommonSuperClass,final Class<? extends Page> containerClass) {
|
public AbstractMenuPanel(final String id, final Class<? extends Page> menuContainerCommonSuperClass,final Class<? extends Page> containerClass) {
|
||||||
super(id);
|
super(id);
|
||||||
|
|
||||||
@ -104,7 +117,10 @@ public abstract class AbstractMenuPanel extends Panel {
|
|||||||
* @return
|
* @return
|
||||||
*/
|
*/
|
||||||
protected abstract List<MenuItem> getItemList();
|
protected abstract List<MenuItem> getItemList();
|
||||||
|
/**
|
||||||
|
* Implement in subclass to return the wanted MenuType.
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
protected abstract MenuType getMenuType();
|
protected abstract MenuType getMenuType();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -58,7 +58,7 @@ public class ProjectTabMenuPanel extends AbstractMenuPanel {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected MenuType getMenuType() {
|
protected MenuType getMenuType() {
|
||||||
return MenuType.TAB;
|
return MenuType.TAB_MULTIPLE_ROWS;
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
@ -1,20 +0,0 @@
|
|||||||
package se.su.dsv.scipro.wiquery.mainmenu;
|
|
||||||
|
|
||||||
import org.apache.wicket.markup.html.resources.JavascriptResourceReference;
|
|
||||||
|
|
||||||
public class MainMenuJavascriptResourceReference extends
|
|
||||||
JavascriptResourceReference {
|
|
||||||
|
|
||||||
private static final long serialVersionUID = -5062441830192125794L;
|
|
||||||
|
|
||||||
private static MainMenuJavascriptResourceReference INSTANCE =
|
|
||||||
new MainMenuJavascriptResourceReference();
|
|
||||||
|
|
||||||
private MainMenuJavascriptResourceReference() {
|
|
||||||
super(MainMenuJavascriptResourceReference.class, "jquery.mainmenu.js");
|
|
||||||
}
|
|
||||||
|
|
||||||
public static MainMenuJavascriptResourceReference get() {
|
|
||||||
return INSTANCE;
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,49 +0,0 @@
|
|||||||
$(document).ready(function() {
|
|
||||||
$("img.nav-arrow").click(function() {
|
|
||||||
var parent = $(this).parents(".parent");
|
|
||||||
if (parent != null)
|
|
||||||
showMenu(parent);
|
|
||||||
})
|
|
||||||
.mouseover(function() {
|
|
||||||
//$(this).attr("src", "./images/site_nav_arrow_hover.png");
|
|
||||||
})
|
|
||||||
.mouseout(function() {
|
|
||||||
//$(this).attr("src", "./images/site_nav_arrow.png");
|
|
||||||
});
|
|
||||||
|
|
||||||
$(document).click(function(e) {
|
|
||||||
if ($(e.target).parents("#nav-list").length == 0) {
|
|
||||||
closeMenus(null);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
$(document).mouseover(function(e) {
|
|
||||||
if ($(e.target).parents("#main-nav").length == 0) {
|
|
||||||
closeMenus(null);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
addCurrentClassToIdentifier = function(identifier) {
|
|
||||||
var t = $("#nav-list").find(identifier).parents(".nav-list-item").get(0);
|
|
||||||
$(t).addClass("current");
|
|
||||||
};
|
|
||||||
|
|
||||||
closeMenus = function(node) {
|
|
||||||
$("#nav-list .parent").children(".over").each(function() {
|
|
||||||
if (this != node || node == null) {
|
|
||||||
$(this).removeClass("over");
|
|
||||||
}
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
showMenu = function(node) {
|
|
||||||
var thisMenu = $(node);
|
|
||||||
var isActive = $(node).find("div.submenu").hasClass("over");
|
|
||||||
closeMenus(thisMenu);
|
|
||||||
if (!isActive) {
|
|
||||||
thisMenu.find("div.submenu").toggleClass("over");
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
addCurrentClassToIdentifier("#current");
|
|
||||||
});
|
|
@ -1,98 +1,14 @@
|
|||||||
#main-nav {
|
.user-links{
|
||||||
|
margin-top:5px;
|
||||||
}
|
|
||||||
|
|
||||||
#nav-list {
|
|
||||||
margin-top: 4px;
|
|
||||||
z-index: 8001;
|
|
||||||
}
|
|
||||||
|
|
||||||
#nav-list li.nav-list-item {
|
|
||||||
float: left;
|
|
||||||
display: inline;
|
|
||||||
margin: 5px 8px 0 8px;
|
|
||||||
position: relative;
|
|
||||||
}
|
|
||||||
|
|
||||||
#nav-list li.nav-list-item .menu-item {
|
|
||||||
display: block;
|
|
||||||
height: 23px;
|
|
||||||
padding: 4px 2px 3px 2px;
|
|
||||||
}
|
|
||||||
#nav-list li.nav-list-item .menu-item a {
|
|
||||||
color: #fff;
|
|
||||||
font: 1.1em/1.5 arial, sans-serif;
|
|
||||||
font-weight: bold;
|
|
||||||
text-decoration: none;
|
|
||||||
padding: 0px 4px;
|
|
||||||
}
|
|
||||||
#nav-list li.nav-list-item .menu-item > a#current {
|
|
||||||
/* padding: 0 10px 7px 10px;
|
|
||||||
border-bottom: 5px solid #ccc; */
|
|
||||||
}
|
|
||||||
.menu-item img.nav-arrow {
|
|
||||||
vertical-align: middle;
|
|
||||||
width: 23px;
|
|
||||||
height: 23px;
|
|
||||||
margin-left: 4px;
|
|
||||||
margin-right: -3px;
|
|
||||||
}
|
|
||||||
|
|
||||||
#nav-list a#current {
|
|
||||||
/* Feel free to replace with something nicer */
|
|
||||||
/* padding-bottom: 7px; */
|
|
||||||
/* border-bottom: 5px solid #ccc; */
|
|
||||||
}
|
|
||||||
#nav-list li.current .menu-item,
|
|
||||||
#nav-list li.nav-list-item:hover .menu-item {
|
|
||||||
background-color: #fff;
|
|
||||||
-webkit-border-top-left-radius: 4px;
|
|
||||||
-moz-border-radius-topleft: 4px;
|
|
||||||
border-top-left-radius: 4px;
|
|
||||||
-webkit-border-top-right-radius: 4px;
|
|
||||||
-moz-border-radius-topright: 4px;
|
|
||||||
border-top-right-radius: 4px;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
#nav-list li.current .menu-item a,
|
|
||||||
#nav-list li.nav-list-item:hover .menu-item a {
|
|
||||||
color: #002f5f;
|
|
||||||
}
|
|
||||||
|
|
||||||
#nav-list li.nav-list-item.parent .submenu {
|
|
||||||
position: absolute;
|
|
||||||
top: 30px;
|
|
||||||
left: -1px;
|
|
||||||
width: 140px;
|
|
||||||
background: #fff;
|
|
||||||
padding: 5px;
|
|
||||||
display: none;
|
|
||||||
border-bottom: 1px solid #ccc;
|
|
||||||
border-left: 1px solid #ccc;
|
|
||||||
border-right: 1px solid #ccc;
|
|
||||||
z-index: 8000;
|
|
||||||
}
|
|
||||||
#nav-list li.nav-list-item.parent .over {
|
|
||||||
display: block;
|
|
||||||
}
|
|
||||||
#nav-list li.nav-list-item.parent .submenu {
|
|
||||||
font-size: 0.9em;
|
|
||||||
|
|
||||||
}
|
|
||||||
#nav-list li.nav-list-item.parent .submenu a:link,
|
|
||||||
#nav-list li.nav-list-item.parent .submenu a:visited,
|
|
||||||
#nav-list li.nav-list-item.parent .submenu a:hover {
|
|
||||||
display: block;
|
|
||||||
padding: 4px;
|
|
||||||
text-decoration: none;
|
|
||||||
}
|
|
||||||
|
|
||||||
#main-nav #user-links {
|
|
||||||
margin-top: 5px;
|
|
||||||
font-size: 0.9em;
|
font-size: 0.9em;
|
||||||
text-align: right;
|
text-align: right;
|
||||||
}
|
}
|
||||||
|
.user-links a{
|
||||||
#main-nav #user-links a {
|
|
||||||
color: #99acbf;
|
color: #99acbf;
|
||||||
|
}
|
||||||
|
.main-menu{
|
||||||
|
float:left;
|
||||||
|
}
|
||||||
|
.service-menu{
|
||||||
|
float: right;
|
||||||
}
|
}
|
Loading…
x
Reference in New Issue
Block a user