private void printNameString( JspWriter out, TreeControlNode node, boolean isCatalog, String updateTreeAction, HttpServletResponse response, String hyperlink, String action) throws IOException { // if ((action != null) && (isCatalog || !node.isLeaf())) if (action != null) { out.print("<a href=\""); out.print(response.encodeURL(action)); out.print("\""); out.print(" onclick=\""); out.print("self.location.href='" + updateTreeAction + "'"); out.print("\">"); out.print("<img src=\""); if (node.isExpanded()) { out.print(IMAGE_HANDLE_EXPANDED); } else { out.print(IMAGE_HANDLE_UNEXPANDED); } out.print("\" border=\"0\">"); out.print("</a>"); // Render the label for this node (if any) if (node.getLabel() != null) { if (hyperlink != null) { // Note the leading space so that the text has some space // between it and any preceding images out.print("<a href=\""); out.print(hyperlink); out.print("\""); String target = node.getTarget(); if (target != null) { out.print(" target=\""); out.print(target); out.print("\""); } // to refresh the tree in the same 'self' frame out.print(" onclick=\""); out.print("self.location.href='" + updateTreeAction + "'"); out.print("\""); out.print(">"); } if (node.isSelected()) { out.println("<B>"); } out.print(node.getLabel()); if (node.isSelected()) { out.println("</B>"); } if (hyperlink != null) { out.print("</a>"); } } } }
protected void render(JspWriter out, TreeControlNode node, int level, int width, boolean last) throws IOException { HttpServletResponse response = (HttpServletResponse) pageContext.getResponse(); // if the node is root node and the label value is // null, then do not render root node in the tree. if ("ROOT-NODE".equalsIgnoreCase(node.getName()) && (node.getLabel() == null)) { // Render the children of this node TreeControlNode[] children = node.findChildren(); int lastIndex = children.length - 1; int newLevel = level + 1; for (int i = 0; i < children.length; i++) { render(out, children[i], newLevel, width, i == lastIndex); } return; } // trStyle = (trStyle.equals(StyleConstants.TR_STYLE2) ? StyleConstants.TR_STYLE1 : // StyleConstants.TR_STYLE2); // Render the beginning of this node // out.println(intervalTR); trStyle = (trStyle.equals(StyleConstants.TR_STYLE2) ? StyleConstants.TR_STYLE1 : StyleConstants.TR_STYLE2); out.println("<tr class=" + trStyle + ">"); out.println("<td align='left'>"); // Create the appropriate number of indents for (int i = 0; i < (level - 1); i++) { out.print(" "); } // Render the tree state image for this node // HACK to take into account special characters like = and & // in the node name, could remove this code if encode URL // and later request.getParameter() could deal with = and & // character in parameter values. String encodedNodeName = URLEncoder.encode(node.getName()); String action = replace(getAction(), "${name}", encodedNodeName); String updateTreeAction = replace(getAction(), "tree=${name}", "select=" + encodedNodeName); updateTreeAction = ((HttpServletResponse) pageContext.getResponse()).encodeURL(updateTreeAction); String[] tempArray = null; String nameTempString = node.getName(); boolean isCatalog = false; // create node's image String hyperlink = null; OrganForm of = null; if (nameTempString.indexOf("/") > 0) { tempArray = StringUtil.splitString(nameTempString, "/"); if (tempArray != null) { String organ0ID = tempArray[1]; of = OrganHelper.getOrgan(Integer.parseInt(organ0ID)); } if (para1.equals("-1")) { out.print("<input type=\"radio\""); } else { out.print("<input type=\"checkbox\""); } out.println(" name=\"orgID\" value=\"" + tempArray[1] + "\">"); } printNameString(out, node, isCatalog, updateTreeAction, response, hyperlink, action); out.println("</td>"); String orgNo = ""; int total = 0; if (tempArray != null) { String organ0ID = tempArray[1]; if (!para1.equals("-1")) { int colSignDetailID = Integer.parseInt(para1); total = ColStudentHelper.getStudentNumber( Integer.parseInt(organ0ID), colSignDetailID, SecurityConstants.USER_DEFAULT_RELATION); } else { total = ColSignHelper.totalNumInOrg(Integer.parseInt(organ0ID), 1); } of = OrganHelper.getOrgan(Integer.parseInt(organ0ID)); if (of != null) { orgNo = of.getOrgNO(); } } out.println("<td align=\"center\">"); out.println(" " + orgNo); out.println("</td>"); out.println("<td align=\"center\">"); out.println(" " + total); out.println("</td>"); // Render the end of this node out.println("</tr>"); // Render the children of this node if (node.isExpanded()) { TreeControlNode[] children = node.findChildren(); int lastIndex = children.length - 1; int newLevel = level + 1; for (int i = 0; i < children.length; i++) { render(out, children[i], newLevel, width, i == lastIndex); } } }