package org.jblooming.waf.html.menu; import org.jblooming.waf.html.core.JspHelper; import org.jblooming.waf.view.PageState; import org.jblooming.waf.view.PageSeed; import javax.servlet.jsp.PageContext; import javax.servlet.http.HttpServletRequest; import java.util.List; import java.util.ArrayList; public class MenuPlus extends JspHelper { public static final String init = MenuPlus.class.getName(); public static final String DRAW_ROOT = "DRAW_ROOT"; public static final String DRAW_CONTENT = "DRAW_CONTENT"; public String drawer; public List<MenuPlusElement> roots = new ArrayList(); public List<MenuPlusElement> elements = new ArrayList(); public String width; public static enum Type { TITLE, ACTION, SEPARATOR, LINK, SUBMENU } public MenuPlus() { urlToInclude = "/commons/layout/menuPlus/partMenuPlus.jsp"; } private void init(PageContext pageContext) { PageState ps = PageState.getCurrentPageState(); if (!ps.initedElements.contains(init)) { pageContext.getRequest().setAttribute(ACTION, INITIALIZE); super.toHtml(pageContext); ps.initedElements.add(init); } } public MenuPlusElement addRoot(String id, String label, String imgPath) { MenuPlusElement mpe = new MenuPlusElement(); mpe.id = id; mpe.imgPath = imgPath; mpe.tooltip = label; roots.add(mpe); return mpe; } public MenuPlusElement addTitle(String title) { MenuPlusElement mpe = new MenuPlusElement(); mpe.type = Type.TITLE; mpe.tooltip = title; elements.add(mpe); return mpe; } public MenuPlusElement addSubmenuLine(String label) { MenuPlusElement mpe = new MenuPlusElement(); mpe.type = Type.SUBMENU; mpe.tooltip = label; mpe.openSubMenu=true; elements.add(mpe); return mpe; } public MenuPlusElement addContentLine(String label, PageSeed pageSeed) { MenuPlusElement mpe = new MenuPlusElement(); mpe.type = Type.LINK; mpe.tooltip = label; mpe.pageSeed = pageSeed; elements.add(mpe); return mpe; } public MenuPlusElement addContentLine(String label, String href) { MenuPlusElement mpe = new MenuPlusElement(); mpe.type = Type.LINK; mpe.tooltip = label; mpe.href = href; elements.add(mpe); return mpe; } public MenuPlusElement addContentLine(String label, String imgPath, String href) { MenuPlusElement mpe = new MenuPlusElement(); mpe.type = Type.LINK; mpe.tooltip = label; mpe.href = href; mpe.imgPath = imgPath; elements.add(mpe); return mpe; } public MenuPlusElement addContentScript(String label, String script) { MenuPlusElement mpe = new MenuPlusElement(); mpe.type = Type.ACTION; mpe.tooltip = label; mpe.script = script; elements.add(mpe); return mpe; } public MenuPlus addSeparator() { MenuPlusElement mpe = new MenuPlusElement(); mpe.type = Type.SEPARATOR; elements.add(mpe); return this; } public void drawRoot(PageContext pageContext) { init(pageContext); HttpServletRequest request = (HttpServletRequest) pageContext.getRequest(); request.setAttribute(ACTION, DRAW_ROOT); PageState state = PageState.getCurrentPageState(); state.sessionState.setAttribute("CURRENTURL",request.getContextPath()+state.toLinkToHref()); super.toHtml(pageContext); } public void drawContent(PageContext pageContext) { pageContext.getRequest().setAttribute(ACTION, DRAW_CONTENT); super.toHtml(pageContext); } public void toHtml(PageContext pageContext) { throw new RuntimeException("Call drawRoot and drawContent"); } public class MenuPlusElement { public Type type; public String id; public String imgPath; public String tooltip; public String label; public String script; public String href; public boolean popup=false; public PageSeed pageSeed; public boolean openSubMenu=false; } }