📄 listmenudisplayer.java
字号:
/* * ListMenuDisplayer.java * * Created on December 7, 2002, 12:35 AM */package net.sf.navigator.displayer;import net.sf.navigator.menu.MenuComponent;import org.apache.commons.lang.StringUtils;import java.io.IOException;import java.util.HashMap;import java.util.Map;import javax.servlet.jsp.JspException;import javax.servlet.jsp.PageContext;/** * * @author <a href="mailto:matt@raibledesigns.com">Matt Raible</a> * @version 1.0 */public class ListMenuDisplayer extends MessageResourcesMenuDisplayer { //~ Instance fields ======================================================== // Is this class thread safe? I'm doubting it - therefore, this // probably shouldn't be here private Map jsMap; //~ Methods ================================================================ public void init(PageContext pageContext, MenuDisplayerMapping mapping) { super.init(pageContext, mapping); jsMap = new HashMap(); try { out.println(displayStrings.getMessage("lmd.begin")); } catch (Exception e) {} } public void display(MenuComponent menu) throws JspException, IOException { if (isAllowed(menu)) { out.println(displayStrings.getMessage("lmd.menu.top")); displayComponents(menu, 0); out.println(displayStrings.getMessage("lmd.menu.bottom")); } } protected void displayComponents(MenuComponent menu, int level) throws JspException, IOException { String title = super.getMessage(menu.getTitle()); MenuComponent[] components = menu.getMenuComponents(); if (components.length > 0) { // eliminate spaces in string used for Id String domId = StringUtils.deleteWhitespace(getMessage(menu.getTitle())); // check to see if this name has already been used if (jsMap.containsKey(domId + "Menu")) { domId = domId + Math.round((Math.random() * 100)); // use a random number for uniqueness } String menuClass = "menu"; if (level >= 1) { menuClass = "submenu"; } out.println(displayStrings.getMessage("lmd.menu.actuator.top", domId, getMessage(menu.getTitle()), menuClass)); jsMap.put(domId + "Menu", domId + "Actuator"); for (int i = 0; i < components.length; i++) { // check the permissions on this component if (isAllowed(components[i])) { if (components[i].getMenuComponents().length > 0) { out.println("<li>"); displayComponents(components[i], level + 1); out.println(displayStrings.getMessage("lmd.menu.actuator.bottom")); if (i == (components[i].getMenuComponents().length - 1)) { // last one out.println("</li>"); } } else { out.println(displayStrings.getMessage("lmd.menu.item", components[i].getUrl(), super.getMenuToolTip(components[i]), this.getMessage(components[i].getTitle()))); } } } // close the </ul> for the top menu if (menuClass.equals("menu")) { out.println("</ul>"); } } else { if (menu.getParent() == null) { out.println(displayStrings.getMessage("lmd.menu.standalone", menu.getUrl(), super.getMenuToolTip(menu), getMessage(menu.getTitle()))); } else { out.println(displayStrings.getMessage("lmd.menu.item", menu.getUrl(), super.getMenuToolTip(menu), getMessage(menu.getTitle()))); } } } /** * This will output the ending HTML code to close tags from the beginning * @param context the current pageContext */ public void end(PageContext context) { try { out.print(displayStrings.getMessage("lmd.end")); /* // MR: Refactored to put initialization login into menuExpandable.js out.print(displayStrings.getMessage("lmd.js.start")); Set menus = jsMap.keySet(); // loop through each menu and initialize it for (Iterator name = menus.iterator(); name.hasNext();) { String id = name.next().toString(); out.print(displayStrings.getMessage("lmd.js", id, jsMap.get(id))); } out.print(displayStrings.getMessage("lmd.js.expand")); out.print(displayStrings.getMessage("lmd.js.stop")); */ } catch (Exception e) {} }}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -