directoryview.java
来自「cwbbs 云网论坛源码」· Java 代码 · 共 378 行
JAVA
378 行
package com.redmoon.forum.ui.menu;import cn.js.fan.util.StrUtil;import java.util.Vector;import javax.servlet.jsp.JspWriter;import java.util.Iterator;import org.apache.log4j.Logger;import cn.js.fan.util.ErrMsgException;import cn.js.fan.web.SkinUtil;import javax.servlet.http.HttpServletRequest;public class DirectoryView { Logger logger = Logger.getLogger(Leaf.class.getName()); Leaf rootLeaf; Vector UprightLineNodes = new Vector(); HttpServletRequest request; public DirectoryView(HttpServletRequest request, Leaf rootLeaf) { this.rootLeaf = rootLeaf; this.request = request; } public void ListSimple(JspWriter out, String target, String link, String tableClass, String tableClassMouseOn) throws Exception { ListTreeSimple(out, rootLeaf, true, target, link, tableClass, tableClassMouseOn); } void ListTreeSimple(JspWriter out, Leaf leaf, boolean isLastChild, String target, String link, String tableClass, String tableClassMouseOn) throws Exception { ShowLeafSimple(out, leaf, isLastChild, target, link, tableClass, tableClassMouseOn); Directory dir = new Directory(); Vector children = dir.getChildren(leaf.getCode()); int size = children.size(); if (size == 0) return; int i = 0; if (size > 0) out.print("<table id='childoftable" + leaf.getCode() + "' cellspacing=0 cellpadding=0 width='100%' align=center><tr><td>"); Iterator ri = children.iterator(); while (ri.hasNext()) { i++; Leaf childlf = (Leaf) ri.next(); boolean isLastChild1 = true; if (size != i) isLastChild1 = false; ListTreeSimple(out, childlf, isLastChild1, target, link, tableClass, tableClassMouseOn); } if (size > 0) out.print("</td></tr></table>"); } void ShowLeafSimple(JspWriter out, Leaf leaf, boolean isLastChild, String target, String link, String tableClass, String tableClassMouseOn) throws Exception { String code = leaf.getCode(); String name = leaf.getName(); int layer = leaf.getLayer(); if (!isLastChild) { Leaf brotherleaf = leaf.getBrother("down"); if (brotherleaf != null) { Vector r = new Vector(); leaf.getAllChild(r, leaf); int count = r.size(); if (count>0) { UprightLineNode uln = new UprightLineNode(layer, count); UprightLineNodes.addElement(uln); } } } int childcount = leaf.getChildCount(); String tableid = "table" + leaf.getCode(); out.println("<table id=" + tableid + " name=" + tableid + " class='" + tableClass + "' cellspacing=0 cellpadding=0 width='100%' align=center onMouseOver=\"this.className='" + tableClassMouseOn + "'\" onMouseOut=\"this.className='" + tableClass + "'\" border=0>"); out.println(" <tbody><tr>"); out.println(" <td height='13' align=left nowrap>"); for (int k = rootLeaf.getLayer(); k <= layer - 1; k++) { boolean isShowed = false; Iterator ir = UprightLineNodes.iterator(); while (ir.hasNext()) { UprightLineNode node = (UprightLineNode) ir.next(); if (node.getLayer() == k) { node.show(out, "images/i_plus-2.gif"); if (node.getCount() == 0) { UprightLineNodes.remove(node); } isShowed = true; break; } } if (!isShowed) out.println("<img src='' width=20 height=1>"); } if (leaf.getCode().equals(rootLeaf.getCode())) { out.println("<img onClick=\"ShowChild(this, '" + tableid + "')\" src='images/i_puls-root.gif' align='absmiddle'><img src='images/folder_01.gif' align='absmiddle'>"); } else { if (isLastChild) { if (childcount > 0) out.println("<img onClick=\"ShowChild(this, '" + tableid + "')\" src='images/i_plus2-2.gif' align='absmiddle'><img src='images/folder_01.gif' align='absmiddle'>"); else out.println("<img src='images/i_plus-2-3.gif' align='absmiddle'><img src='images/folder_01.gif' align='absmiddle'>"); } else { if (childcount > 0) out.println("<img onClick=\"ShowChild(this, '" + tableid + "')\" src='images/i_plus2-1.gif' align='absmiddle'><img src='images/folder_01.gif' align='absmiddle'>"); else out.println("<img src='images/i_plus-2-2.gif' align='absmiddle'><img src='images/folder_01.gif' align='absmiddle'>"); } } out.print( "<a target='" + target + "' href='" + link + "?dir_code=" + StrUtil.UrlEncode(code) + "'>" + name + "</a>"); out.print(" </td>"); out.println(" </tr></tbody></table>"); } public void list(JspWriter out) throws Exception { ListTree(out, rootLeaf, true); } void ListTree(JspWriter out, Leaf leaf, boolean isLastChild) throws Exception { ShowLeaf(out, leaf, isLastChild); Directory dir = new Directory(); Vector children = dir.getChildren(leaf.getCode()); int size = children.size(); if (size == 0) return; int i = 0; if (size > 0) out.print("<table id='childoftable" + leaf.getCode() + "' cellspacing=0 cellpadding=0 width='100%' align=center><tr><td>"); Iterator ri = children.iterator(); while (ri.hasNext()) { i++; Leaf childlf = (Leaf) ri.next(); boolean isLastChild1 = true; if (size != i) isLastChild1 = false; ListTree(out, childlf, isLastChild1); } if (size > 0) out.print("</td></tr></table>"); } void ShowLeaf(JspWriter out, Leaf leaf, boolean isLastChild) throws Exception { String code = leaf.getCode(); String name = leaf.getName(); int layer = leaf.getLayer(); String link = leaf.getLink(); if (!isLastChild) { Leaf brotherleaf = leaf.getBrother("down"); if (brotherleaf != null) { Vector r = new Vector(); leaf.getAllChild(r, leaf); int count = r.size(); if (count>0) { UprightLineNode uln = new UprightLineNode(layer, count); UprightLineNodes.addElement(uln); } } } int childcount = leaf.getChildCount(); String tableid = "table" + leaf.getCode(); out.println("<table id=" + tableid + " name=" + tableid + " class='tbg1' cellspacing=0 cellpadding=0 width='100%' align=center onMouseOver=\"this.className='tbg1sel'\" onMouseOut=\"this.className='tbg1'\" border=0>"); out.println(" <tbody><tr>"); out.println(" <td width='85%' height='13' align=left nowrap>"); for (int k = rootLeaf.getLayer(); k <= layer - 1; k++) { boolean isShowed = false; Iterator ir = UprightLineNodes.iterator(); while (ir.hasNext()) { UprightLineNode node = (UprightLineNode) ir.next(); if (node.getLayer() == k) { node.show(out, "images/i_plus-2.gif"); if (node.getCount() == 0) { UprightLineNodes.remove(node); } isShowed = true; break; } } if (!isShowed) out.println("<img src='' width=20 height=1>"); } if (leaf.getCode().equals(rootLeaf.getCode())) { out.println("<img onClick=\"ShowChild(this, '" + tableid + "')\" src='images/i_puls-root.gif' align='absmiddle'><img src='images/folder_01.gif' align='absmiddle'>"); } else { if (isLastChild) { if (childcount > 0) out.println("<img onClick=\"ShowChild(this, '" + tableid + "')\" src='images/i_plus2-2.gif' align='absmiddle'><img src='images/folder_01.gif' align='absmiddle'>"); else out.println("<img src='images/i_plus-2-3.gif' align='absmiddle'><img src='images/folder_01.gif' align='absmiddle'>"); } else { if (childcount > 0) out.println("<img onClick=\"ShowChild(this, '" + tableid + "')\" src='images/i_plus2-1.gif' align='absmiddle'><img src='images/folder_01.gif' align='absmiddle'>"); else out.println("<img src='images/i_plus-2-2.gif' align='absmiddle'><img src='images/folder_01.gif' align='absmiddle'>"); } } if (leaf.getType()==Leaf.TYPE_LINK) { out.print("<a class='link' target=_blank href='" + leaf.getLink(request) + "'>" + leaf.getName(request) + "</a>"); } else if (leaf.getType()==Leaf.TYPE_PRESET) { out.print("<a class='pre' target=_blank href='" + leaf.getLink(request) + "'>" + leaf.getName(request) + "</a>"); } else out.print(leaf.getName(request)); out.print(" </td><td width='15%' align=right nowrap>"); if (!leaf.getCode().equals("root")) { if (leaf.getLayer()<=3) { out.print( "<a target=dirbottomFrame href='menu_bottom.jsp?parent_code=" + StrUtil.UrlEncode(code, "utf-8") + "&parent_name=" + StrUtil.UrlEncode(name, "utf-8") + "&op=AddChild'>" + SkinUtil.LoadString(request, "res.forum.DirectoryView", "link_addchild") + "</a> "); } out.print( "<a target='dirbottomFrame' href='menu_bottom.jsp?op=modify&code=" + StrUtil.UrlEncode(code) + "&name=" + StrUtil.UrlEncode(name) + "&link=" + StrUtil.UrlEncode(link) + "'>" + SkinUtil.LoadString(request, "res.forum.DirectoryView", "link_modify") + "</a> "); out.print( "<a target=_self href=# onClick=\"if (window.confirm('" + SkinUtil.LoadString(request, "res.forum.DirectoryView", "confirm_del") + "')) window.location.href='menu_top.jsp?op=del&delcode=" + StrUtil.UrlEncode(code, "utf-8") + "'\">" + SkinUtil.LoadString(request, "res.forum.DirectoryView", "link_del") + "</a> "); out.print("<a href='menu_top.jsp?op=move&direction=up&code=" + StrUtil.UrlEncode(code, "utf-8") + "'>" + SkinUtil.LoadString(request, "res.forum.DirectoryView", "link_move_up") + "</a> "); out.print("<a href='menu_top.jsp?op=move&direction=down&code=" + StrUtil.UrlEncode(code, "utf-8") + "'>" + SkinUtil.LoadString(request, "res.forum.DirectoryView", "link_move_down") + "</a> "); } out.println(" </td></tr></tbody></table>"); } void ShowLeafAsOption(JspWriter out, Leaf leaf, int rootlayer) throws Exception { String code = leaf.getCode(); String name = leaf.getName(); int layer = leaf.getLayer(); String blank = ""; int d = layer-rootlayer; for (int i=0; i<d; i++) { blank += " "; } if (leaf.getChildCount()>0) { out.print("<option value='" + code + "' style='COLOR: #0005ff'>" + blank + "╋ " + name + "</option>"); } else { out.print("<option value=\"" + code + "\" style='COLOR: #0005ff'>" + blank + "├『" + name + "』</option>"); } } public void ShowLeafAsOptionToString(StringBuffer sb, Leaf leaf, int rootlayer) throws Exception { String code = leaf.getCode(); String name = leaf.getName(); int layer = leaf.getLayer(); String blank = ""; int d = layer-rootlayer; for (int i=0; i<d; i++) { blank += " "; } if (leaf.getChildCount()>0) { sb.append("<option value='" + code + "' style='COLOR: #0005ff'>" + blank + "╋ " + name + "</option>"); } else { sb.append("<option value=\"" + code + "\" style='COLOR: #0005ff'>" + blank + "├『" + name + "』</option>"); } } public void ShowDirectoryAsOptions(JspWriter out, Leaf leaf, int rootlayer) throws Exception { ShowLeafAsOption(out, leaf, rootlayer); Directory dir = new Directory(); Vector children = dir.getChildren(leaf.getCode()); int size = children.size(); if (size == 0) return; int i = 0; Iterator ri = children.iterator(); while (ri.hasNext()) { Leaf childlf = (Leaf) ri.next(); ShowDirectoryAsOptions(out, childlf, rootlayer); } } public void ShowDirectoryAsOptionsToString(StringBuffer sb, Leaf leaf, int rootlayer) throws Exception { ShowLeafAsOptionToString(sb, leaf, rootlayer); Directory dir = new Directory(); Vector children = dir.getChildren(leaf.getCode()); int size = children.size(); if (size == 0) return; int i = 0; Iterator ri = children.iterator(); while (ri.hasNext()) { Leaf childlf = (Leaf) ri.next(); ShowDirectoryAsOptionsToString(sb, childlf, rootlayer); } } void ShowLeafAsOptionWithCode(JspWriter out, Leaf leaf, int rootlayer) throws Exception { String code = leaf.getCode(); String name = leaf.getName(); int layer = leaf.getLayer(); String blank = ""; int d = layer-rootlayer; for (int i=0; i<d; i++) { blank += " "; } out.print("<option value='" + code + "'>" + blank + "╋ " + name + "</option>"); } public void ShowDirectoryAsOptionsWithCode(JspWriter out, Leaf leaf, int rootlayer) throws Exception { ShowLeafAsOptionWithCode(out, leaf, rootlayer); Directory dir = new Directory(); Vector children = dir.getChildren(leaf.getCode()); int size = children.size(); if (size == 0) return; int i = 0; Iterator ri = children.iterator(); while (ri.hasNext()) { Leaf childlf = (Leaf) ri.next(); ShowDirectoryAsOptionsWithCode(out, childlf, rootlayer); } }}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?