My FlyBean V1.00的文档

来源:互联网 发布:炭知天下 地图 编辑:程序博客网 时间:2024/04/30 12:28

写在前面的话:FlyBean 是我妹妹的网名,她说是会飞的豆子,我通常是叫她妹妹的,尽管她是我的妻子,或者说她比我大两岁,这是我发布的第一个开源的东西,献给她。——妹妹,哥哥爱你!

My FlyBean V1.00并没有经过很严格的测试,它也仅仅是在IE6.0下顺利运行过,因为测试我不在行,我想如果有很多人喜欢它,这将会有很好的测试,否则也是没有意义的。我欢迎给我发邮件的朋友:huzhou-cq@163.com

方法的注释我尽量说清楚,但JavaScript方法的参数或返回值是不带类型的,我不能说这不好,但在读源代码时可能不方便,所以我加上了Java中的类及类型来说明这些参数或返回值的类型。JavaScript类没有访问权限的控制,所以可以直接访问类中的属性,但这可能不好,所以如果要访问类中属性,请尽量用我提供的方法,虽然这会增加你写的代码。

本来以前还增加了直接编辑树节点的功能,但后来我发现这没有多在用,我妹妹也是这么觉得的,所以去掉了。我还打算给它加上拖放的,但我不知道怎么使用ondragstart这个方法,因为拖放时鼠标显示为禁用,我不知道怎么让鼠标箭头显示为缺省。如果你知道,请一定要发邮件给我,很感谢你。但可以方便操作节点增删改插的树,要实现拖放已经不难了。

这棵树可以在popup窗口中展现,但popup中不能实现动态载入子节点,如果我可以解决这个问题,我将会在下一个版本中体现。

文档中的有一些术语可能不准确,但我还是要辩白一下我的意思:所谓文档对象,就是Document对象,这是DOM中的一个术语,我们常常用window.document来作为这个对象的引用(reference) 。“HTML对象”可能是我找的一个名词,它其实是指一些HTML元素的对象,比如table元素对象。Element类也是DOM中的,它是HTML中的元素的类型。

一.       FlyBean类 该类是用来构造树对象的,它依赖一些HTML元素,并操作这些元素的状态,以实现树对象的操作。我还自已定义了一个元素checkbox,它代表树中节点的复选框。下面是FlyBean类的方法和可以直接访问的属性,这其中有些方法其实是没有多大用的。

1.      树对象的构造方法FlyBean是可以改作任意的,如果你将来可能使用我的代码,请你不要改。
/**
 * 构造树对象,并载入CSS文件和树的图标资源
 * String context 应用程序名称,树的缺省时图片资源在
 *            应用程序的根目录下的images/tree,访问时以
 *            /context/images/tree/*.gif来访问,
 *            如果它是null,则默认为"."
 * String parentNodeID 树的父对象的ID,所谓的父对象,
 *            其实是树所依赖的HTML对象的父节点,树将
 *            显示在其中的对象,这个值是必须的
 * Document doc,树对象的文档对象
 * String id 树在文档对象中的id
 * String target 链接的目标框架
 * int width 树的宽
 * int height 树的高
 * boolean showCheckbox 节点是否带复选框
 *
 * 注意:产生树及其节点的代码中,没有用到诸如document.write
 *       之类的方法,故可以在script标记中指定defer关键字,
 *       以提高HTML的解析速度
 */
function FlyBean (context, parentNodeID, doc, id, target, width, height, showCheckbox)

设置参数target为null或”_self”,而以为会在当前窗口打开节点的链接的目标,可能不是很有用,比如在dialog中,这可能是我的错误,我逃避这个错误的方式是在<head>中加入<base target=”_self”>之类,我没有替你加,因为你可能加别的了。当然如果target是个实际存在的窗口的名称,这将是有用的。虽然有width和height这两个参数,但是即使我在使用这棵树的时候都没有用到它们,我觉得它们不是很有用,但你还是可以根据你的需要改进它。

2.      检索树对象所在的文档对象
Document getDocument()

3.      检索树所依赖的HTML对象的父节点
Element getParentNode()

4.      检索树所依赖的HTML对象
Element getTable()

5.      检索或设置树所依赖的HTML对象的id值
String getID()
void setID(String id)

6.      检索或设置树所依赖的HTML对象的CSS的class选择器(selector)的值
String getStyle()
void setStyle(String className)

7.      检索树的图标资源ImageList对象,可以通过操作这个对象更改树的图标
ImageList getImages()

8.      检索树对象的样式表TreeStyleSheet对象,可以通过操作这个对象更改树的样式,具体请见TreeStyleSheet类的说明
TreeStyleSheet getTreeStyleSheet()

9.      检索或设置树中节点的链接的缺省目标框架,这个属性应该在树中添加节点前设置
String getTarget()
void setTarget(String target)

10.  检索或设置树中节点是否显示复选框的属性,这个属性的改变不会影响树中已经有的节点,缺省为节点不显示复选框
boolean getShowCheckbox()
void getShowCheckbox(boolean sc)

11.  检索或设置树中节点复选框状态改变时,其影响子节点的程度,默认为没有影响
int getNodeCheckForce()
void setNodeCheckForce(int force)
setNodeCheckForce方法的参数说明,请参见FlyBean的类属性说明。

12.  检索树的根节点
TreeNode getRootNode()

13.  给树添加根节点
/**
 * String text 根节点的文本
 * String link 根节点的链接
 * String id 根节点的HTML对象的id
 * String target 根节点的链接的目标框架
 */
TreeNode appendRootNode(text, link, id, target)

14.  检索树当前选中的节点
TreeNode getSelectedNode()

15.  检索复选框选中的节
TreeNode []getCheckedNodes()

16.  展开树中所有的节点,但如果树中有动态载入子节点的节点,则本方法无效
void expand()

17.  根据节点的索引返回树中的节点对象
TreeNode getNodeByIndex(int index)

18.  根据节点的id值检索节点对象,如果有多个节点的id值等于传入的参数,则返回这些节点构成的数组
TreeNode getNodeByID(String id)
TreeNode []getNodeByID(String id)

19.  删除树的根节点,加参数是为了和TreeNode的removeChild方法的申明相同,该方法返回从节点中删除的方法
TreeNode removeChild(TreeNode root)

20.  对象信息,这个方法只会返回字符串” [object Tree]”
String toString()

21.  下面这两个属性是指定树对象鼠标事件的回调方法,其定义可能是:function(tree, node),事件处理器将把树对象和当前发生鼠标事件的节点作为参数传入这个方法,如果单击事件不是在一个节点上发生,第二个参数将是null,如果这个方法返回false,事件将被取消,且不再上溯

l        onclick如果单击树中节点的事件上溯,则回调这个方法

l        oncontextmenu 如果用鼠标右击树中节点的事件上溯,则回调这个方法

22.  类属性,下面的类属性指明节点受其父节点复选框选取状态的影响度,它们作为调用方法setNodeCheckForce的参数

l        FlyBean.UNAFFECTED_ON_CHECK = 0; 选中节点复选框时子节点不受其影响

l        FlyBean.AFFECTED_ON_CHECK = 1; 选中节点复选框时直接子节点受其影响

l        FlyBean.DEEP_AFFECTED_ON_CHECK = 2; 选中节点复选框时所有子孙节点都受其影响

l        FlyBean.UNAFFECTED_ON_CANCEL = 0; 取消节点复选框时子节点不受其影响

l        FlyBean.AFFECTED_ON_CANCEL = 256; 取消节点复选框时直接子节点受其影响

l        FlyBean.DEEP_AFFECTED_ON_CANCEL = 512; 取消节点复选框时所有子孙节点都受其影响

l         例:

(1)  选中节点时,也选中其直接子节点
tree.setNodeCheckForce(FlyBean.AFFECTED_ON_CHECK)

(2)  取消节点时,取消其所有子孙节点
tree.setNodeCheckForce(FlyBean.DEEP_AFFECTED_ON_CANCEL)

(3)      选中节点时,选中其所有子孙节点,取消节点时,不影响其子节点
tree.setNodeCheckForce(FlyBean.DEEP_AFFECTED_ON_CHECK
    |FlyBean.DEEP_AFFECTED_ON_CANCEL)