📄 directoryview.java
字号:
package com.redmoon.forum;
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.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(Leaf rootLeaf) {
this.rootLeaf = rootLeaf;
}
public DirectoryView(HttpServletRequest request, Leaf rootLeaf) {
this.rootLeaf = rootLeaf;
this.request = request;
}
public void list(JspWriter out) throws Exception {
ListTree(out, rootLeaf, true);
}
// 显示根结点为leaf的树
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>");
}
/**
* isLastChild 是否为其父亲结点的最后一个孩子结点
**/
void ShowLeaf(JspWriter out, Leaf leaf,
boolean isLastChild) throws Exception {
String code = leaf.getCode();
String name = leaf.getName();
int layer = leaf.getLayer();
String description = leaf.getDescription();
if (!isLastChild) {
Leaf brotherleaf = leaf.getBrother("down");
// System.out.println("brother=" + brotherleaf);
// 如果兄弟结点存在
if (brotherleaf != null) {
// 取其所有的孩子结点
Vector r = new Vector();
leaf.getAllChild(r, leaf);
int count = r.size();
//System.out.println(leaf.getCode() + "'s all child count=" +
// count);
if (count>0) { // =0的也计入的话会在树底端的结点产生多余竖线
UprightLineNode uln = new UprightLineNode(layer, count);
UprightLineNodes.addElement(uln);
}
}
}
int childcount = leaf.getChildCount();
// System.out.println(code + " childcount=" + childcount);
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 = 1; k <= layer - 1; k++) {
for (int k = rootLeaf.getLayer(); k <= layer - 1; k++) { // 不用上一行,是因为上一行会产生多余的空格
boolean isShowed = false;
Iterator ir = UprightLineNodes.iterator();
while (ir.hasNext()) {
UprightLineNode node = (UprightLineNode) ir.next();
//如果在K层上存在一个竖线结点则画出
if (node.getLayer() == k) {
node.show(out, "images/i_plus-2.gif");
if (node.getCount() == 0) {
UprightLineNodes.remove(node);
//System.out.println("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() == 2) {
out.print("<a target=_parent href='document_list_m.jsp?dir_code=" +
StrUtil.UrlEncode(code) + "&dir_name=" +
StrUtil.UrlEncode(name) + "'>" + name +
"</a>");
} else if (leaf.getType() == 1)
out.print(
"<a target=_blank href='../listtopic.jsp?boardcode=" +
StrUtil.UrlEncode(code) + "&boardname=" +
StrUtil.UrlEncode(name) + "'>" + name + "</a>");
else if (leaf.getType() == 0) {
out.print(name);
}
out.print(" </td><td width='15%' align=right nowrap>");
if (!leaf.getCode().equals("root")) {
if (leaf.getIsHome())
out.print(SkinUtil.LoadString(request, "res.forum.DirectoryView", "info_home") + " ");
if (leaf.isLocked())
out.print(SkinUtil.LoadString(request, "res.forum.DirectoryView", "info_lock") + " ");
out.print("<a target=_parent href='manager_m.jsp?boardcode=" + StrUtil.UrlEncode(code) +
"&boardname=" + StrUtil.UrlEncode(name) +
"'>" + SkinUtil.LoadString(request, "res.forum.DirectoryView", "link_manager") + "</a> ");
if (leaf.getType() == 1)
out.print(SkinUtil.LoadString(request, "res.forum.DirectoryView", "info_board") + " ");
else if (leaf.getType() == 2)
out.print(SkinUtil.LoadString(request, "res.forum.DirectoryView", "info_sub_board") + " ");
else
out.print(SkinUtil.LoadString(request, "res.forum.DirectoryView", "info_sub_field") + " ");
out.print(
"<a target=dirbottomFrame href='dir_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='dir_bottom.jsp?op=modify&code=" +
StrUtil.UrlEncode(code) + "&name=" +
StrUtil.UrlEncode(name) + "&description=" +
StrUtil.UrlEncode(description) + "'>" + 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='dir_top.jsp?op=del&delcode=" +
StrUtil.UrlEncode(code, "utf-8") + "'\">" + SkinUtil.LoadString(request, "res.forum.DirectoryView", "link_del") + "</a> ");
out.print("<a href='dir_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='dir_top.jsp?op=move&direction=down&code=" +
StrUtil.UrlEncode(code, "utf-8") + "'>" + SkinUtil.LoadString(request, "res.forum.DirectoryView", "link_move_down") + "</a> ");
// out.print("<a href='dir_top.jsp?root_code=" +
// StrUtil.UrlEncode(code, "utf-8") + "'>管理</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) {
if (leaf.getType()==leaf.TYPE_BOARD)
out.print("<option value='" + code + "' style='COLOR: #0005ff'>" + blank + "├『" + name + "</option>");
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -