diff --git a/src/main/java/se/su/dsv/scipro/basepanels/AbstractBaseMenuPanel.java b/src/main/java/se/su/dsv/scipro/basepanels/AbstractBaseMenuPanel.java new file mode 100644 index 0000000000..ee8e09ce82 --- /dev/null +++ b/src/main/java/se/su/dsv/scipro/basepanels/AbstractBaseMenuPanel.java @@ -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; + } +} diff --git a/src/main/java/se/su/dsv/scipro/basepanels/HeaderPanel.html b/src/main/java/se/su/dsv/scipro/basepanels/HeaderPanel.html index 75b642fb2e..f9857256a4 100644 --- a/src/main/java/se/su/dsv/scipro/basepanels/HeaderPanel.html +++ b/src/main/java/se/su/dsv/scipro/basepanels/HeaderPanel.html @@ -1,13 +1,19 @@ <!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> -<wicket:panel> - <header id="main-header" class="span-24"> - <div class="prepend-1 span-5"> - <h1 id="logo"><a href="#" wicket:id="homeLink" title="SciPro">SciPro</a></h1> - </div> - <div wicket:id="mainMenuPanel"></div> - </header> -</wicket:panel> + <wicket:panel> + <header id="main-header" class="span-24"> + <div class="prepend-1 span-5"> + <h1 id="logo"> + <a href="#" wicket:id="homeLink" title="SciPro">SciPro</a> + </h1> + </div> + <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> </html> \ No newline at end of file diff --git a/src/main/java/se/su/dsv/scipro/basepanels/HeaderPanel.java b/src/main/java/se/su/dsv/scipro/basepanels/HeaderPanel.java index e1c3763515..d270f8c03b 100644 --- a/src/main/java/se/su/dsv/scipro/basepanels/HeaderPanel.java +++ b/src/main/java/se/su/dsv/scipro/basepanels/HeaderPanel.java @@ -1,9 +1,7 @@ package se.su.dsv.scipro.basepanels; 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.panel.EmptyPanel; import org.apache.wicket.markup.html.panel.Panel; import se.su.dsv.scipro.SciProApplication; @@ -14,17 +12,13 @@ import se.su.dsv.scipro.SciProApplication; * */ public class HeaderPanel extends Panel { - private static final long serialVersionUID = 1L; - public HeaderPanel(String id, Class<? extends Page> containerClass) { super(id); - add(new BookmarkablePageLink<Void>("homeLink", SciProApplication.get().getHomePage())); - - MainMenuPanel mainMenuPanel = new MainMenuPanel("mainMenuPanel", containerClass); - add(mainMenuPanel); - + add(new MainMenuPanel("mainMenuPanel", containerClass)); + add(new ServiceMenuPanel("serviceMenuPanel", containerClass)); + add(new UserLinksPanel("userLinksPanel")); } } diff --git a/src/main/java/se/su/dsv/scipro/basepanels/MainMenuPanel.html b/src/main/java/se/su/dsv/scipro/basepanels/MainMenuPanel.html deleted file mode 100644 index 4a61b067fd..0000000000 --- a/src/main/java/se/su/dsv/scipro/basepanels/MainMenuPanel.html +++ /dev/null @@ -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> \ No newline at end of file diff --git a/src/main/java/se/su/dsv/scipro/basepanels/MainMenuPanel.java b/src/main/java/se/su/dsv/scipro/basepanels/MainMenuPanel.java index 1598d646fe..9f10150a21 100644 --- a/src/main/java/se/su/dsv/scipro/basepanels/MainMenuPanel.java +++ b/src/main/java/se/su/dsv/scipro/basepanels/MainMenuPanel.java @@ -4,123 +4,25 @@ import java.util.ArrayList; import java.util.List; 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.SciProApplication; -import se.su.dsv.scipro.admin.pages.AdminScheduleTemplatesPage; 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.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.wiquery.mainmenu.MainMenuJavascriptResourceReference; -public class MainMenuPanel extends Panel implements IWiQueryPlugin { +public class MainMenuPanel extends AbstractBaseMenuPanel { private static final long serialVersionUID = 3738086567246191811L; public MainMenuPanel(String id, Class<? extends Page> containerClass) { - super(id); - - 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); + super(id,HomePage.class,containerClass); } - @Override - public void contribute(WiQueryResourceManager wiQueryResourceManager) { - wiQueryResourceManager.addJavaScriptResource(MainMenuJavascriptResourceReference.get()); - } - - @Override - public JsStatement statement() { - 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); + protected List<MenuItem> getItemList(){ + 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)); + list.add(new MenuItem(AdminStartPage.MAIN_MENU_LABEL,AdminStartPage.class)); + return list; } - /** - * @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; - } - } diff --git a/src/main/java/se/su/dsv/scipro/basepanels/ServiceMenuPanel.java b/src/main/java/se/su/dsv/scipro/basepanels/ServiceMenuPanel.java new file mode 100644 index 0000000000..b88315a26f --- /dev/null +++ b/src/main/java/se/su/dsv/scipro/basepanels/ServiceMenuPanel.java @@ -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; + } +} diff --git a/src/main/java/se/su/dsv/scipro/basepanels/mainmenu/AbstractMainMenuItem.java b/src/main/java/se/su/dsv/scipro/basepanels/mainmenu/AbstractMainMenuItem.java deleted file mode 100644 index 4febedf585..0000000000 --- a/src/main/java/se/su/dsv/scipro/basepanels/mainmenu/AbstractMainMenuItem.java +++ /dev/null @@ -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; - } - -} diff --git a/src/main/java/se/su/dsv/scipro/basepanels/mainmenu/MainMenuItem.html b/src/main/java/se/su/dsv/scipro/basepanels/mainmenu/MainMenuItem.html deleted file mode 100644 index 53103e9295..0000000000 --- a/src/main/java/se/su/dsv/scipro/basepanels/mainmenu/MainMenuItem.html +++ /dev/null @@ -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> \ No newline at end of file diff --git a/src/main/java/se/su/dsv/scipro/basepanels/mainmenu/MainMenuItem.java b/src/main/java/se/su/dsv/scipro/basepanels/mainmenu/MainMenuItem.java deleted file mode 100644 index b87b20e291..0000000000 --- a/src/main/java/se/su/dsv/scipro/basepanels/mainmenu/MainMenuItem.java +++ /dev/null @@ -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); - } - -} diff --git a/src/main/java/se/su/dsv/scipro/basepanels/mainmenu/MainMenuSubItem.html b/src/main/java/se/su/dsv/scipro/basepanels/mainmenu/MainMenuSubItem.html deleted file mode 100644 index 43e852090a..0000000000 --- a/src/main/java/se/su/dsv/scipro/basepanels/mainmenu/MainMenuSubItem.html +++ /dev/null @@ -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> \ No newline at end of file diff --git a/src/main/java/se/su/dsv/scipro/basepanels/mainmenu/MainMenuSubItem.java b/src/main/java/se/su/dsv/scipro/basepanels/mainmenu/MainMenuSubItem.java deleted file mode 100644 index 565a880183..0000000000 --- a/src/main/java/se/su/dsv/scipro/basepanels/mainmenu/MainMenuSubItem.java +++ /dev/null @@ -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); - } - - -} diff --git a/src/main/java/se/su/dsv/scipro/basepanels/mainmenu/MenuItem.java b/src/main/java/se/su/dsv/scipro/basepanels/mainmenu/MenuItem.java deleted file mode 100644 index ca12d4b265..0000000000 --- a/src/main/java/se/su/dsv/scipro/basepanels/mainmenu/MenuItem.java +++ /dev/null @@ -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); - } -} diff --git a/src/main/java/se/su/dsv/scipro/components/AbstractMenuPanel.java b/src/main/java/se/su/dsv/scipro/components/AbstractMenuPanel.java index 75f046c4e0..1493f65bd0 100644 --- a/src/main/java/se/su/dsv/scipro/components/AbstractMenuPanel.java +++ b/src/main/java/se/su/dsv/scipro/components/AbstractMenuPanel.java @@ -18,6 +18,11 @@ import org.apache.wicket.model.Model; 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 { private static final long serialVersionUID = 1L; @@ -33,6 +38,9 @@ public abstract class AbstractMenuPanel extends Panel { } }; + /** + * Enumeration of supported menu types. + */ public enum MenuType { NONE, TAB, @@ -41,7 +49,12 @@ public abstract class AbstractMenuPanel extends Panel { 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) { super(id); @@ -104,7 +117,10 @@ public abstract class AbstractMenuPanel extends Panel { * @return */ protected abstract List<MenuItem> getItemList(); - + /** + * Implement in subclass to return the wanted MenuType. + * @return + */ protected abstract MenuType getMenuType(); /** diff --git a/src/main/java/se/su/dsv/scipro/project/panels/ProjectTabMenuPanel.java b/src/main/java/se/su/dsv/scipro/project/panels/ProjectTabMenuPanel.java index d1ad784e74..8ce4db2f10 100644 --- a/src/main/java/se/su/dsv/scipro/project/panels/ProjectTabMenuPanel.java +++ b/src/main/java/se/su/dsv/scipro/project/panels/ProjectTabMenuPanel.java @@ -58,7 +58,7 @@ public class ProjectTabMenuPanel extends AbstractMenuPanel { @Override protected MenuType getMenuType() { - return MenuType.TAB; + return MenuType.TAB_MULTIPLE_ROWS; } } diff --git a/src/main/java/se/su/dsv/scipro/wiquery/mainmenu/MainMenuJavascriptResourceReference.java b/src/main/java/se/su/dsv/scipro/wiquery/mainmenu/MainMenuJavascriptResourceReference.java deleted file mode 100644 index e8be4f6e39..0000000000 --- a/src/main/java/se/su/dsv/scipro/wiquery/mainmenu/MainMenuJavascriptResourceReference.java +++ /dev/null @@ -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; - } -} diff --git a/src/main/java/se/su/dsv/scipro/wiquery/mainmenu/jquery.mainmenu.js b/src/main/java/se/su/dsv/scipro/wiquery/mainmenu/jquery.mainmenu.js deleted file mode 100644 index 7efe8da153..0000000000 --- a/src/main/java/se/su/dsv/scipro/wiquery/mainmenu/jquery.mainmenu.js +++ /dev/null @@ -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"); -}); \ No newline at end of file diff --git a/src/main/webapp/css/menu.css b/src/main/webapp/css/menu.css index 9a83ca77c0..ea13b18f47 100644 --- a/src/main/webapp/css/menu.css +++ b/src/main/webapp/css/menu.css @@ -1,98 +1,14 @@ -#main-nav { - -} - -#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; +.user-links{ + margin-top:5px; font-size: 0.9em; text-align: right; } - -#main-nav #user-links a { +.user-links a{ color: #99acbf; +} +.main-menu{ + float:left; +} +.service-menu{ + float: right; } \ No newline at end of file