⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tree.js

📁 初学者
💻 JS
字号:
/*	Copyright (c) 2004-2006, The Dojo Foundation	All Rights Reserved.	Licensed under the Academic Free License version 2.1 or above OR the	modified BSD license. For more information on Dojo licensing, see:		http://dojotoolkit.org/community/licensing.shtml*/dojo.provide("dojo.widget.Tree");dojo.require("dojo.widget.*");dojo.require("dojo.event.*");dojo.require("dojo.io.*");dojo.require("dojo.widget.HtmlWidget");dojo.require("dojo.widget.TreeNode");dojo.require("dojo.html.common");dojo.require("dojo.html.selection");dojo.widget.defineWidget("dojo.widget.Tree", dojo.widget.HtmlWidget, function () {	this.eventNames = {};	this.tree = this;	this.DNDAcceptTypes = [];	this.actionsDisabled = [];}, {widgetType:"Tree", eventNamesDefault:{createDOMNode:"createDOMNode", treeCreate:"treeCreate", treeDestroy:"treeDestroy", treeClick:"treeClick", iconClick:"iconClick", titleClick:"titleClick", moveFrom:"moveFrom", moveTo:"moveTo", addChild:"addChild", removeNode:"removeNode", expand:"expand", collapse:"collapse"}, isContainer:true, DNDMode:"off", lockLevel:0, strictFolders:true, DNDModes:{BETWEEN:1, ONTO:2}, DNDAcceptTypes:"", templateCssString:"\n.dojoTree {\n\tfont: caption;\n\tfont-size: 11px;\n\tfont-weight: normal;\n\toverflow: auto;\n}\n\n\n.dojoTreeNodeLabelTitle {\n\tpadding-left: 2px;\n\tcolor: WindowText;\n}\n\n.dojoTreeNodeLabel {\n\tcursor:hand;\n\tcursor:pointer;\n}\n\n.dojoTreeNodeLabelTitle:hover {\n\ttext-decoration: underline;\n}\n\n.dojoTreeNodeLabelSelected {\n\tbackground-color: Highlight;\n\tcolor: HighlightText;\n}\n\n.dojoTree div {\n\twhite-space: nowrap;\n}\n\n.dojoTree img, .dojoTreeNodeLabel img {\n\tvertical-align: middle;\n}\n\n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/Tree.css"), templateString:"<div class=\"dojoTree\"></div>", isExpanded:true, isTree:true, objectId:"", controller:"", selector:"", menu:"", expandLevel:"", blankIconSrc:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_blank.gif"), gridIconSrcT:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_grid_t.gif"), gridIconSrcL:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_grid_l.gif"), gridIconSrcV:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_grid_v.gif"), gridIconSrcP:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_grid_p.gif"), gridIconSrcC:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_grid_c.gif"), gridIconSrcX:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_grid_x.gif"), gridIconSrcY:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_grid_y.gif"), gridIconSrcZ:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_grid_z.gif"), expandIconSrcPlus:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_expand_plus.gif"), expandIconSrcMinus:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_expand_minus.gif"), expandIconSrcLoading:dojo.uri.moduleUri("dojo.widget", "templates/images/Tree/treenode_loading.gif"), iconWidth:18, iconHeight:18, showGrid:true, showRootGrid:true, actionIsDisabled:function (action) {	var _this = this;	return dojo.lang.inArray(_this.actionsDisabled, action);}, actions:{ADDCHILD:"ADDCHILD"}, getInfo:function () {	var info = {widgetId:this.widgetId, objectId:this.objectId};	return info;}, initializeController:function () {	if (this.controller != "off") {		if (this.controller) {			this.controller = dojo.widget.byId(this.controller);		} else {			dojo.require("dojo.widget.TreeBasicController");			this.controller = dojo.widget.createWidget("TreeBasicController", {DNDController:(this.DNDMode ? "create" : ""), dieWithTree:true});		}		this.controller.listenTree(this);	} else {		this.controller = null;	}}, initializeSelector:function () {	if (this.selector != "off") {		if (this.selector) {			this.selector = dojo.widget.byId(this.selector);		} else {			dojo.require("dojo.widget.TreeSelector");			this.selector = dojo.widget.createWidget("TreeSelector", {dieWithTree:true});		}		this.selector.listenTree(this);	} else {		this.selector = null;	}}, initialize:function (args, frag) {	var _this = this;	for (name in this.eventNamesDefault) {		if (dojo.lang.isUndefined(this.eventNames[name])) {			this.eventNames[name] = this.widgetId + "/" + this.eventNamesDefault[name];		}	}	for (var i = 0; i < this.actionsDisabled.length; i++) {		this.actionsDisabled[i] = this.actionsDisabled[i].toUpperCase();	}	if (this.DNDMode == "off") {		this.DNDMode = 0;	} else {		if (this.DNDMode == "between") {			this.DNDMode = this.DNDModes.ONTO | this.DNDModes.BETWEEN;		} else {			if (this.DNDMode == "onto") {				this.DNDMode = this.DNDModes.ONTO;			}		}	}	this.expandLevel = parseInt(this.expandLevel);	this.initializeSelector();	this.initializeController();	if (this.menu) {		this.menu = dojo.widget.byId(this.menu);		this.menu.listenTree(this);	}	this.containerNode = this.domNode;}, postCreate:function () {	this.createDOMNode();}, createDOMNode:function () {	dojo.html.disableSelection(this.domNode);	for (var i = 0; i < this.children.length; i++) {		this.children[i].parent = this;		var node = this.children[i].createDOMNode(this, 0);		this.domNode.appendChild(node);	}	if (!this.showRootGrid) {		for (var i = 0; i < this.children.length; i++) {			this.children[i].expand();		}	}	dojo.event.topic.publish(this.eventNames.treeCreate, {source:this});}, destroy:function () {	dojo.event.topic.publish(this.tree.eventNames.treeDestroy, {source:this});	return dojo.widget.HtmlWidget.prototype.destroy.apply(this, arguments);}, addChild:function (child, index) {	var message = {child:child, index:index, parent:this, domNodeInitialized:child.domNodeInitialized};	this.doAddChild.apply(this, arguments);	dojo.event.topic.publish(this.tree.eventNames.addChild, message);}, doAddChild:function (child, index) {	if (dojo.lang.isUndefined(index)) {		index = this.children.length;	}	if (!child.isTreeNode) {		dojo.raise("You can only add TreeNode widgets to a " + this.widgetType + " widget!");		return;	}	if (this.isTreeNode) {		if (!this.isFolder) {			this.setFolder();		}	}	var _this = this;	dojo.lang.forEach(child.getDescendants(), function (elem) {		elem.tree = _this.tree;	});	child.parent = this;	if (this.isTreeNode) {		this.state = this.loadStates.LOADED;	}	if (index < this.children.length) {		dojo.html.insertBefore(child.domNode, this.children[index].domNode);	} else {		this.containerNode.appendChild(child.domNode);		if (this.isExpanded && this.isTreeNode) {			this.showChildren();		}	}	this.children.splice(index, 0, child);	if (child.domNodeInitialized) {		var d = this.isTreeNode ? this.depth : -1;		child.adjustDepth(d - child.depth + 1);		child.updateIconTree();	} else {		child.depth = this.isTreeNode ? this.depth + 1 : 0;		child.createDOMNode(child.tree, child.depth);	}	var prevSibling = child.getPreviousSibling();	if (child.isLastChild() && prevSibling) {		prevSibling.updateExpandGridColumn();	}}, makeBlankImg:function () {	var img = document.createElement("img");	img.style.width = this.iconWidth + "px";	img.style.height = this.iconHeight + "px";	img.src = this.blankIconSrc;	img.style.verticalAlign = "middle";	return img;}, updateIconTree:function () {	if (!this.isTree) {		this.updateIcons();	}	for (var i = 0; i < this.children.length; i++) {		this.children[i].updateIconTree();	}}, toString:function () {	return "[" + this.widgetType + " ID:" + this.widgetId + "]";}, move:function (child, newParent, index) {	var oldParent = child.parent;	var oldTree = child.tree;	this.doMove.apply(this, arguments);	var newParent = child.parent;	var newTree = child.tree;	var message = {oldParent:oldParent, oldTree:oldTree, newParent:newParent, newTree:newTree, child:child};	dojo.event.topic.publish(oldTree.eventNames.moveFrom, message);	dojo.event.topic.publish(newTree.eventNames.moveTo, message);}, doMove:function (child, newParent, index) {	child.parent.doRemoveNode(child);	newParent.doAddChild(child, index);}, removeNode:function (child) {	if (!child.parent) {		return;	}	var oldTree = child.tree;	var oldParent = child.parent;	var removedChild = this.doRemoveNode.apply(this, arguments);	dojo.event.topic.publish(this.tree.eventNames.removeNode, {child:removedChild, tree:oldTree, parent:oldParent});	return removedChild;}, doRemoveNode:function (child) {	if (!child.parent) {		return;	}	var parent = child.parent;	var children = parent.children;	var index = child.getParentIndex();	if (index < 0) {		dojo.raise("Couldn't find node " + child + " for removal");	}	children.splice(index, 1);	dojo.html.removeNode(child.domNode);	if (parent.children.length == 0 && !parent.isTree) {		parent.containerNode.style.display = "none";	}	if (index == children.length && index > 0) {		children[index - 1].updateExpandGridColumn();	}	if (parent instanceof dojo.widget.Tree && index == 0 && children.length > 0) {		children[0].updateExpandGrid();	}	child.parent = child.tree = null;	return child;}, markLoading:function () {}, unMarkLoading:function () {}, lock:function () {	!this.lockLevel && this.markLoading();	this.lockLevel++;}, unlock:function () {	if (!this.lockLevel) {		dojo.raise("unlock: not locked");	}	this.lockLevel--;	!this.lockLevel && this.unMarkLoading();}, isLocked:function () {	var node = this;	while (true) {		if (node.lockLevel) {			return true;		}		if (node instanceof dojo.widget.Tree) {			break;		}		node = node.parent;	}	return false;}, flushLock:function () {	this.lockLevel = 0;	this.unMarkLoading();}});

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -