1 package fr.improve.struts.taglib.layout; 2 3 import java.util.Vector ; 4 5 import javax.servlet.jsp.JspException ; 6 7 import fr.improve.struts.taglib.layout.menu.MenuComponent; 8 import fr.improve.struts.taglib.layout.util.LayoutUtils; 9 import fr.improve.struts.taglib.layout.util.MenuInterface; 10 import fr.improve.struts.taglib.layout.util.TagUtils; 11 12 17 public class MenuTag2 extends PanelTag implements MenuInterface { 18 protected Vector menus = new Vector (); 19 20 23 public int doStartLayoutTag() throws JspException { 24 return EVAL_BODY_INCLUDE; 25 } 26 27 30 public void addItem(MenuComponent item) { 31 menus.add(item); 32 } 33 34 37 public int doEndLayoutTag() throws JspException { 38 StringBuffer buffer = new StringBuffer (); 39 doStartPanel(buffer); 41 doBeforeBody(buffer); 42 43 buffer.append("<tr><td><table border=0 cellpadding=10><tr><td><table border=0>"); 44 doPrintMenu(buffer,(MenuComponent[])menus.toArray(new MenuComponent[menus.size()]),1); 45 buffer.append("</table></td></tr></table></td></tr>"); 46 47 doAfterBody(buffer); 48 doEndPanel(buffer); 49 50 TagUtils.write(pageContext, buffer.toString()); 51 menus.removeAllElements(); 52 return EVAL_PAGE; 53 } 54 55 58 protected void doPrintMenu(StringBuffer buffer, MenuComponent[] menus, int level) throws JspException { 59 for (int i=0;i<menus.length;i++) { 60 MenuComponent item = (MenuComponent) menus[i]; 62 doPrintMenuItem(buffer, level, item); 63 64 MenuComponent[] subMenus = item.getMenuComponents(); 66 String key = item.getTitle(); 67 doPrintSubMenu(buffer, level, key, subMenus); 68 69 buffer.append("\n"); 70 } 71 72 } 73 74 77 protected void doPrintMenuItem(StringBuffer buffer, int level, MenuComponent item) throws JspException { 78 String link = item.getLocation(); 79 String forward = item.getForward(); 80 String page = item.getPage(); 81 String action = item.getAction(); 82 String key = item.getTitle(); 83 String image = item.getImage(); 84 String target = item.getTarget(); 85 String style = item.getStyle(); 86 87 boolean lc_hasLink = link!=null || forward!=null || page!=null || action!=null; 88 89 buffer.append("<tr valign=\"top\"><td class=\""); 90 buffer.append(styleClass); 91 if (lc_hasLink) { 92 buffer.append("\" align=\"left"); 93 } else { 94 buffer.append("\" onClick=\"changeMenu('"); 95 buffer.append(key); 96 buffer.append("')\" style=\"cursor:hand"); 97 } 98 buffer.append("\">"); 99 100 doPrintSpaces(buffer, level); 101 102 if (lc_hasLink) { 103 doStartLink(buffer, link, forward, page, action, target, style); 104 } 105 106 if (image!=null) { 107 buffer.append("<img SRC="); 108 buffer.append(image); 109 buffer.append("> "); 110 } 111 112 buffer.append(LayoutUtils.getLabel(pageContext,bundle, key, null, false)); 113 if (lc_hasLink) { 114 doEndLink(buffer); 115 } 116 buffer.append("</td></tr>"); 117 } 118 119 private void doPrintSpaces(StringBuffer buffer, int level) { 120 switch (level) { 121 case 2: buffer.append(" "); break; 122 case 3: buffer.append(" > "); break; 123 } 124 } 125 126 129 protected void doStartLink(StringBuffer buffer, String link, String forward, String page, String target, String style) throws JspException { 130 doStartLink(buffer, link, forward, page, null, target, style); 131 } 132 133 protected void doStartLink(StringBuffer buffer, String link, String forward, String page, String action, String target, String style) throws JspException { 134 buffer.append("<a HREF=\""); 135 buffer.append(LayoutUtils.computeURL(pageContext, forward, link, page, action, null,null, null, false, target)); 136 if (target!=null) { 137 buffer.append("\" target=\""); 138 buffer.append(target); 139 } 140 if (style!=null) { 141 buffer.append("\" style=\""); 142 buffer.append(style); 143 } 144 buffer.append("\">"); 145 } 146 147 protected void doEndLink(StringBuffer buffer) { 148 buffer.append("</a>"); 149 } 150 151 154 protected void doPrintSubMenu(StringBuffer in_buffer, int in_level, String in_key, MenuComponent[] in_subMenus) throws JspException { 155 if (in_subMenus!=null && in_subMenus.length!=0) { 156 165 in_buffer.append("<tr valign=top><td><div id=\""); 166 in_buffer.append(in_key); 167 in_buffer.append("b\" style=\"display:none\"></div><div id=\""); 168 in_buffer.append(in_key); 169 in_buffer.append("\"><table border=0 cellspacing=0 cellpadding=0>"); 170 in_buffer.append("<script language=\"JavaScript\">initMenu('" + in_key +"');</script>\n"); 171 doPrintMenu(in_buffer, in_subMenus, in_level+1); 172 in_buffer.append("</table></div></td></tr>"); 173 174 } 175 } 176 } 177 | Popular Tags |