package blues.lee.tags.ajaxTree;
import javax.servlet.jsp.tagext.Tag;
import javax.servlet.jsp.PageContext;
import javax.servlet.jsp.JspException;
import javax.servlet.jsp.JspWriter;
import java.util.List;
/**
* 树标签处理类 <br>
* Author:李鹏 <br>
* CreateDate:2006-11-15 <br>
* Modifier:李鹏 <br>
* ModifyDate:2008-7-29 <br>
* Version:2.0<br>
* Copyright(c)2008 深蓝工作室<br>
* All right reserved.<br>
*
*/
public class BlueTreeTag
implements Tag {
private PageContext pageContext;
private Tag parent;
public String rootId; //根节点ID
public String blueClass; //根据节点ID获得所有该节点子节点的实现类
public String blueURL; //点击节点超连接---isUseDataURL为false时有用
public boolean isUseDataURL; //是否使用节点封装对象的节点超连接
public String rootName; //根节点名称
public String imageURL; //所有图片目录路径
public String rootImage; //根节点图片
public String folderImg; //有子节点关闭图片
public String folderOpenImg; //有子节点展开图片
public String fileImg; //无子节点图片
public String openImg; //节点展开图片
public String closeImg; //节点关闭图片
public String elementLineImg; //带有节点的线图片
public String lineImg; //无节点的线图片
public String endLineImg; //最后一个节点线图片
public String endFolderOpenImg; //最后一个有子节点展开图片
public String endFolderCloseImg; //最后一个有子节点关闭图片
public String noneImg;//空白图片
public boolean isFolderURL; //是否给有子节点的节点加超连接---isUseDataURL为false时有用
public String rootURL; //根节点连接
public String target; //所有连接的target属性
public String linkClass; //超连接样式
public String styleClass; //总样式
public String imgClass; //图片样式
public String useDataImg; //节点图片是否使用数据类图片,no为不使用,first为仅第一级目录使用,all全部使用
public String js; //设置JS文件位置
public String onMouseOver; //鼠标经过每个节点时的样式
public String onMouseOut; //鼠标离开每个节点时的样式
public BlueTreeTag() {
super();
this.rootId = "0";
this.blueClass = null; //必须设置
this.blueURL = "javascript:void(0);";
this.isUseDataURL = false;
this.rootName = "根节点";
this.rootImage = "rootImage.gif";
this.imageURL = null; //必须设置
this.folderImg = "folder.gif";
this.folderOpenImg = "folderOpen.gif";
this.fileImg = "file.gif";
this.openImg = "open.gif";
this.closeImg = "close.gif";
this.elementLineImg = "elementLine.gif";
this.lineImg = "line.gif";
this.endLineImg = "endLine.gif";
this.endFolderOpenImg = "endFolderOpen.gif";
this.endFolderCloseImg = "endFolderClose.gif";
this.noneImg = "none.gif";
this.isFolderURL = true;
this.rootURL = "javascript:void(0);";
this.target = "_blank";
this.linkClass="";
this.imgClass="";
this.styleClass="";
this.useDataImg="no";
this.js=null; //必须设置
this.onMouseOver="#CCCCCC";
this.onMouseOut="";
}
/**
* 设置标签的页面上下文
* @param pageContext
*/
public void setPageContext(PageContext pageContext) {
this.pageContext = pageContext;
}
/**
* 设置上一级标签
* @param t
*/
public void setParent(Tag parent) {
this.parent = parent;
}
public Tag getParent() {
return this.parent;
}
/**
* 开始标签时的操作
* @return
* @throws JspException
*/
public int doStartTag() throws JspException {
if(this.blueClass==null){
throw new JspException("树标签blueClass属性未设置!");
}
if(this.imageURL==null){
throw new JspException("树标签imageURL属性未设置!");
}
if(this.js==null){
throw new JspException("树标签js属性未设置!");
}
return BlueTreeTag.SKIP_BODY; //返回SKIP_BODY,表示不计算标签体
}
/**
* 结束标签时的操作
* @return
* @throws JspException
*/
public int doEndTag() throws JspException {
JspWriter out = this.pageContext.getOut();
try {
String tree = this.createTree();
out.print(tree);
}
catch (Exception ex) {
throw new JspException("创建树错误:" + ex.getMessage());
}
return BlueTreeTag.EVAL_PAGE;
}
/**
* Release 用于释放标签程序占用的资源,比如使用了数据库连接,那么应该关闭这个连接
*/
public void release() {
}
/**
* 构建树
* @return 返回树HTML代码字符串
*/
public String createTree() throws Exception {
StringBuffer result = new StringBuffer();
BlueTreeFactory treeFactory = new BlueTreeFactory();
BlueTreeInterFace tree = (BlueTreeInterFace) treeFactory.create(this.
blueClass);
List elements = null;
elements = tree.getTreeElements(this.rootId,null);
result.append("<script type='text/javascript'>");
result.append("function init(){");
result.append("BlueTree['rootId']='"+this.rootId+"';");
result.append("BlueTree['blueClass']='"+this.blueClass+"';");
result.append("BlueTree['blueURL']='"+this.blueURL+"';");
result.append("BlueTree['isUseDataURL']='"+this.isUseDataURL+"';");
result.append("BlueTree['rootName']='"+this.rootName+"';");
result.append("BlueTree['imageURL']='"+this.imageURL+"';");
result.append("BlueTree['rootImage']='"+this.rootImage+"';");
result.append("BlueTree['folderImg']='"+this.folderImg+"';");
result.append("BlueTree['folderOpenImg']='"+this.folderOpenImg+"';");
result.append("BlueTree['fileImg']='"+this.fileImg+"';");
result.append("BlueTree['openImg']='"+this.openImg+"';");
result.append("BlueTree['closeImg']='"+this.closeImg+"';");
result.append("BlueTree['elementLineImg']='"+this.elementLineImg+"';");
result.append("BlueTree['lineImg']='"+this.lineImg+"';");
result.append("BlueTree['endLineImg']='"+this.endLineImg+"';");
result.append("BlueTree['endFolderOpenImg']='"+this.endFolderOpenImg+"';");
result.append("BlueTree['endFolderCloseImg']='"+this.endFolderCloseImg+"';");
result.append("BlueTree['noneImg']='"+this.noneImg+"';");
result.append("BlueTree['isFolderURL']='"+this.isFolderURL+"';");
result.append("BlueTree['rootURL']='"+this.rootURL+"';");
result.append("BlueTree['target']='"+this.target+"';");
result.append("BlueTree['linkClass']='"+this.linkClass+"';");
result.append("BlueTree['styleClass']='"+this.styleClass+"';");
result.append("BlueTree['imgClass']='"+this.imgClass+"';");
result.append("BlueTree['useDataImg']='"+this.useDataImg+"';");
result.append("BlueTree['js']='"+this.js+"';");
result.append("BlueTree['onMouseOver']='"+this.onMouseOver+"';");
result.append("BlueTree['onMouseOut']='"+this.onMouseOut+"';");
result.append("}");
result.append("</script>");
// //样式
// result.append("<style>");
// result.append(".onMouseOver{");
// result.append("background-color:#CCCCCC;");
// result.append("}");
// result.append(".onMouseOut{");
// result.append("}");
// result.append("</style>");
//js
result.append("<script src=\"");
result.append(this.js);
result.append("\">");
result.append("</script>");
//开始创建树
result.append("<table id=\"root\" border=\"0\" cellpadding=\"0\" cellspacing=\"0\" class=\"");
result.append(this.styleClass);
result.append("\">");
//创建跟节点
result.append("<tr onMouseOver=\"mouseOverNode();\"");
result.append(" onMouseOut=\"mouseOutNode();\">");
result.append("<td style=\"white-space:nowrap;\">");
result.append("<a class=\"");
result.append(this.linkClass);
result.append("\" href=\"");
result.append(this.rootURL);
result.append("\" target=\"");
result.append(this.target);
result.append("\">");
result.append("<img align=\"absmiddle\" class=\"");
result.append(this.imgClass);
result.append("\" src=\"");
result.append(this.image
没有合适的资源?快使用搜索试试~ 我知道了~
开始整理自己的标签库BluesTags1.0(包含最新版AJAX无限级树菜单)
共46个文件
gif:12个
class:12个
java:12个
5星 · 超过95%的资源 需积分: 3 43 下载量 199 浏览量
2008-09-25
12:54:46
上传
评论
收藏 71KB ZIP 举报
温馨提示
这是对上一次版本的重大修改,主要将生成树部分改成了JS,同时增加了几个新的属性设置及上一次版本部分BUG的修改。 同时该版本里增加了一个简单的权限验证的自定义标签。 以后会慢慢增加更多的自定义标签,正在准备写的是一个分页标签!
资源推荐
资源详情
资源评论
收起资源包目录
BluesTags.zip (46个子文件)
WebRoot
WEB-INF
web.xml 1021B
tlds
blues-lee.tld 4KB
lib
BluesTags.jar 16KB
classes
blues
lee
tags
exception
TagsException.class 590B
ajaxTree
TreeNodes.class 4KB
BlueTreeFactory.class 1KB
BlueTreeTag.class 13KB
BlueTreeInterFace.class 592B
BlueTreeData.class 2KB
authorization
AuthorizationValidateTag.class 3KB
AuthorizationValidateInterface.class 245B
AuthorizationValidateInit.class 1KB
AuthorizationValidateFactory.class 1KB
example
TestTreeTag.class 2KB
AuthorizationValidate.class 706B
META-INF
MANIFEST.MF 39B
image
endFolderClose.gif 163B
rootImage.gif 173B
line.gif 69B
folderOpen.gif 126B
close.gif 166B
endLine.gif 68B
endFolderOpen.gif 159B
none.gif 58B
file.gif 942B
elementLine.gif 73B
folder.gif 170B
open.gif 163B
ajaxTree.jsp 2KB
authorization.jsp 1KB
js
global.js 2KB
tree.js 10KB
ajax.js 1KB
src
blues
lee
tags
exception
TagsException.java 893B
ajaxTree
TreeNodes.java 9KB
BlueTreeFactory.java 960B
BlueTreeData.java 2KB
BlueTreeTag.java 17KB
BlueTreeInterFace.java 871B
authorization
AuthorizationValidateInit.java 1KB
AuthorizationValidateTag.java 3KB
AuthorizationValidateInterface.java 670B
AuthorizationValidateFactory.java 1KB
example
TestTreeTag.java 2KB
AuthorizationValidate.java 771B
BluesTags.jar 16KB
共 46 条
- 1
资源评论
- klbdy2014-03-11很有帮助,可以直接拿来改改就是自己的了 新手和老手都可以你自己再添加些 ftl的就完美了 写标签很繁琐,但是使用很爽哦
lip009
- 粉丝: 411
- 资源: 4
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功