package org.tgdb.tags; import java.io.IOException; import java.util.ArrayList; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpSession; import javax.servlet.jsp.JspException; import javax.servlet.jsp.JspWriter; import javax.servlet.jsp.tagext.BodyTagSupport; public class WindowTag extends BodyTagSupport { private String title, name, workflow; private ArrayList menu; private String state, startState; public WindowTag() { menu = new ArrayList(); startState = "collapsed"; } public void setState(String state) { this.state = state; startState = state; } public void setMenu(String menu) { this.menu.add(menu); } public void setTitle(String title) { this.title = title; } public void setName(String name) { this.name = name+"_display"; } public void setWorkflow(String workflow) { this.workflow = workflow; } private String getMenu(String text) { int p1 = text.indexOf("<menu>"); int p2 = text.indexOf("</menu>"); return text.substring(p1+6, p2); } private String getBody(String text) { int p1 = text.indexOf("<body>"); int p2 = text.indexOf("</body>"); return text.substring(p1+6, p2); } public int doEndTag() throws JspException { try { String bodyText = bodyContent.getString(); HttpServletRequest req = (HttpServletRequest)pageContext.getRequest(); HttpSession se = req.getSession(); JspWriter out = pageContext.getOut(); String menuString = getMenu(bodyText); String bodyString = getBody(bodyText); String performAction = (String)req.getParameter(name); state = (String)se.getAttribute(name); if(state == null) state = startState; if(performAction != null) { if(state.equalsIgnoreCase("expanded")) se.setAttribute(name, "collapsed"); else se.setAttribute(name, "expanded"); state = (String)se.getAttribute(name); } String nameBegins = req.getParameter("name_begins"); if (nameBegins==null) nameBegins = ""; if (req.getParameter("expand_all")!=null && req.getParameter("expand_all").equals("true") && name.startsWith(nameBegins)) { state = "expanded"; se.setAttribute(name, "expanded"); } else if (req.getParameter("collapse_all")!=null && req.getParameter("collapse_all").equals("true") && name.startsWith(nameBegins)) { state = "collapsed"; se.setAttribute(name, "collapsed"); } //if (state != null && state.equalsIgnoreCase("expanded")) //{ out.println("<table class=\"block3\" cellspacing=\"0\">"); out.println(" <tr>"); out.println(" <th class=\"block\">"); //out.println(" <a href=\"Controller?workflow="+workflow+"&"+name+"=true\" title=\"Expand/Collapse this section\">"+title+"</a>"); out.println(""+title+""); if (!menuString.trim().equals("")) { out.println(menuString); } out.println(" </th>"); out.println(" </tr>"); out.println(" <tr>"); out.println(" <td>"); if (state != null && state.equalsIgnoreCase("expanded")) { //out.println(" <m:hide-block name=\""+name+"_display\">"); out.println(" <table border=\"0\" cellpadding=\"0\" cellspacing=\"0\" width=\"100%\">"); out.println(" <tr>"); //out.println(" <th valign=top>"); // class=\"menu\" /* if (!menuString.trim().equals("")) { out.println(" <table cellpadding=0 cellspacing=0 border=0>"); out.println(" <tr><th><img src='images/menu_gradient_top_20.png'></th></tr>"); out.println(" <tr><th class=\"menu\">"); out.println(menuString); out.println(" </th></tr>"); out.println(" <tr><th><img src='images/menu_gradient_bottom_20.png'></th></tr>"); out.println(" </table>"); } */ //out.println(" </th>"); out.println(" <td width=\"100%\">"); out.println(bodyString); out.println(" </td>"); out.println(" </tr>"); out.println(" </table>"); //out.println(" </m:hide-block>"); } out.println(" </td>"); out.println(" </tr>"); out.println("</table>"); out.flush(); } catch (IOException ioe) {} return EVAL_PAGE; } }