Rev 1372 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | RSS feed
/*Copyright (c) 2004-2006, The Dojo FoundationAll Rights Reserved.Licensed under the Academic Free License version 2.1 or above OR themodified BSD license. For more information on Dojo licensing, see:http://dojotoolkit.org/community/licensing.shtml*/dojo.require("dojo.lang.declare");dojo.provide("dojo.widget.TreeWithNode");dojo.declare("dojo.widget.TreeWithNode", null, function () {}, {loadStates:{UNCHECKED:"UNCHECKED", LOADING:"LOADING", LOADED:"LOADED"}, state:"UNCHECKED", objectId:"", isContainer:true, lockLevel:0, lock:function () {this.lockLevel++;}, unlock:function () {if (!this.lockLevel) {dojo.raise(this.widgetType + " unlock: not locked");}this.lockLevel--;}, expandLevel:0, loadLevel:0, hasLock:function () {return this.lockLevel > 0;}, isLocked:function () {var node = this;while (true) {if (node.lockLevel) {return true;}if (!node.parent || node.isTree) {break;}node = node.parent;}return false;}, flushLock:function () {this.lockLevel = 0;}, actionIsDisabled:function (action) {var disabled = false;if (dojo.lang.inArray(this.actionsDisabled, action)) {disabled = true;}if (this.isTreeNode) {if (!this.tree.allowAddChildToLeaf && action == this.actions.ADDCHILD && !this.isFolder) {disabled = true;}}return disabled;}, actionIsDisabledNow:function (action) {return this.actionIsDisabled(action) || this.isLocked();}, setChildren:function (childrenArray) {if (this.isTreeNode && !this.isFolder) {this.setFolder();} else {if (this.isTreeNode) {this.state = this.loadStates.LOADED;}}var hadChildren = this.children.length > 0;if (hadChildren && childrenArray) {this.destroyChildren();}if (childrenArray) {this.children = childrenArray;}var hasChildren = this.children.length > 0;if (this.isTreeNode && hasChildren != hadChildren) {this.viewSetHasChildren();}for (var i = 0; i < this.children.length; i++) {var child = this.children[i];if (!(child instanceof dojo.widget.Widget)) {child = this.children[i] = this.tree.createNode(child);var childWidgetCreated = true;} else {var childWidgetCreated = false;}if (!child.parent) {child.parent = this;if (this.tree !== child.tree) {child.updateTree(this.tree);}child.viewAddLayout();this.containerNode.appendChild(child.domNode);var message = {child:child, index:i, parent:this, childWidgetCreated:childWidgetCreated};delete dojo.widget.manager.topWidgets[child.widgetId];dojo.event.topic.publish(this.tree.eventNames.afterAddChild, message);}if (this.tree.eagerWidgetInstantiation) {dojo.lang.forEach(this.children, function (child) {child.setChildren();});}}}, doAddChild:function (child, index) {return this.addChild(child, index, true);}, addChild:function (child, index, dontPublishEvent) {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;}this.children.splice(index, 0, child);child.parent = this;child.addedTo(this, index, dontPublishEvent);delete dojo.widget.manager.topWidgets[child.widgetId];}, onShow:function () {this.animationInProgress = false;}, onHide:function () {this.animationInProgress = false;}});