summaryrefslogtreecommitdiff
path: root/lib/dijit/Tree.js
diff options
context:
space:
mode:
authorAndrew Dolgov <[email protected]>2010-11-15 10:39:52 +0300
committerAndrew Dolgov <[email protected]>2010-11-15 10:39:52 +0300
commit2f01fe57a8d37767827d6db42850aef86a767c53 (patch)
tree516a95ffce2fc2435aed8d9976e444dbcba7dce3 /lib/dijit/Tree.js
parent951906dcecb1d3c7bcf751976a03e0c196ca6db0 (diff)
add dijit/dojo stuff; initial ui mockup
Diffstat (limited to 'lib/dijit/Tree.js')
-rw-r--r--lib/dijit/Tree.js678
1 files changed, 678 insertions, 0 deletions
diff --git a/lib/dijit/Tree.js b/lib/dijit/Tree.js
new file mode 100644
index 000000000..761d4c3fc
--- /dev/null
+++ b/lib/dijit/Tree.js
@@ -0,0 +1,678 @@
+/*
+ Copyright (c) 2004-2010, The Dojo Foundation All Rights Reserved.
+ Available via Academic Free License >= 2.1 OR the modified BSD license.
+ see: http://dojotoolkit.org/license for details
+*/
+
+
+if(!dojo._hasResource["dijit.Tree"]){
+dojo._hasResource["dijit.Tree"]=true;
+dojo.provide("dijit.Tree");
+dojo.require("dojo.fx");
+dojo.require("dojo.DeferredList");
+dojo.require("dijit._Widget");
+dojo.require("dijit._Templated");
+dojo.require("dijit._Container");
+dojo.require("dijit._Contained");
+dojo.require("dijit._CssStateMixin");
+dojo.require("dojo.cookie");
+dojo.declare("dijit._TreeNode",[dijit._Widget,dijit._Templated,dijit._Container,dijit._Contained,dijit._CssStateMixin],{item:null,isTreeNode:true,label:"",isExpandable:null,isExpanded:false,state:"UNCHECKED",templateString:dojo.cache("dijit","templates/TreeNode.html","<div class=\"dijitTreeNode\" waiRole=\"presentation\"\n\t><div dojoAttachPoint=\"rowNode\" class=\"dijitTreeRow\" waiRole=\"presentation\" dojoAttachEvent=\"onmouseenter:_onMouseEnter, onmouseleave:_onMouseLeave, onclick:_onClick, ondblclick:_onDblClick\"\n\t\t><img src=\"${_blankGif}\" alt=\"\" dojoAttachPoint=\"expandoNode\" class=\"dijitTreeExpando\" waiRole=\"presentation\"\n\t\t/><span dojoAttachPoint=\"expandoNodeText\" class=\"dijitExpandoText\" waiRole=\"presentation\"\n\t\t></span\n\t\t><span dojoAttachPoint=\"contentNode\"\n\t\t\tclass=\"dijitTreeContent\" waiRole=\"presentation\">\n\t\t\t<img src=\"${_blankGif}\" alt=\"\" dojoAttachPoint=\"iconNode\" class=\"dijitIcon dijitTreeIcon\" waiRole=\"presentation\"\n\t\t\t/><span dojoAttachPoint=\"labelNode\" class=\"dijitTreeLabel\" wairole=\"treeitem\" tabindex=\"-1\" waiState=\"selected-false\" dojoAttachEvent=\"onfocus:_onLabelFocus\"></span>\n\t\t</span\n\t></div>\n\t<div dojoAttachPoint=\"containerNode\" class=\"dijitTreeContainer\" waiRole=\"presentation\" style=\"display: none;\"></div>\n</div>\n"),baseClass:"dijitTreeNode",cssStateNodes:{rowNode:"dijitTreeRow",labelNode:"dijitTreeLabel"},attributeMap:dojo.delegate(dijit._Widget.prototype.attributeMap,{label:{node:"labelNode",type:"innerText"},tooltip:{node:"rowNode",type:"attribute",attribute:"title"}}),postCreate:function(){
+this.inherited(arguments);
+this._setExpando();
+this._updateItemClasses(this.item);
+if(this.isExpandable){
+dijit.setWaiState(this.labelNode,"expanded",this.isExpanded);
+}
+},_setIndentAttr:function(_1){
+this.indent=_1;
+var _2=(Math.max(_1,0)*this.tree._nodePixelIndent)+"px";
+dojo.style(this.domNode,"backgroundPosition",_2+" 0px");
+dojo.style(this.rowNode,this.isLeftToRight()?"paddingLeft":"paddingRight",_2);
+dojo.forEach(this.getChildren(),function(_3){
+_3.set("indent",_1+1);
+});
+},markProcessing:function(){
+this.state="LOADING";
+this._setExpando(true);
+},unmarkProcessing:function(){
+this._setExpando(false);
+},_updateItemClasses:function(_4){
+var _5=this.tree,_6=_5.model;
+if(_5._v10Compat&&_4===_6.root){
+_4=null;
+}
+this._applyClassAndStyle(_4,"icon","Icon");
+this._applyClassAndStyle(_4,"label","Label");
+this._applyClassAndStyle(_4,"row","Row");
+},_applyClassAndStyle:function(_7,_8,_9){
+var _a="_"+_8+"Class";
+var _b=_8+"Node";
+if(this[_a]){
+dojo.removeClass(this[_b],this[_a]);
+}
+this[_a]=this.tree["get"+_9+"Class"](_7,this.isExpanded);
+if(this[_a]){
+dojo.addClass(this[_b],this[_a]);
+}
+dojo.style(this[_b],this.tree["get"+_9+"Style"](_7,this.isExpanded)||{});
+},_updateLayout:function(){
+var _c=this.getParent();
+if(!_c||_c.rowNode.style.display=="none"){
+dojo.addClass(this.domNode,"dijitTreeIsRoot");
+}else{
+dojo.toggleClass(this.domNode,"dijitTreeIsLast",!this.getNextSibling());
+}
+},_setExpando:function(_d){
+var _e=["dijitTreeExpandoLoading","dijitTreeExpandoOpened","dijitTreeExpandoClosed","dijitTreeExpandoLeaf"],_f=["*","-","+","*"],idx=_d?0:(this.isExpandable?(this.isExpanded?1:2):3);
+dojo.removeClass(this.expandoNode,_e);
+dojo.addClass(this.expandoNode,_e[idx]);
+this.expandoNodeText.innerHTML=_f[idx];
+},expand:function(){
+if(this._expandDeferred){
+return this._expandDeferred;
+}
+this._wipeOut&&this._wipeOut.stop();
+this.isExpanded=true;
+dijit.setWaiState(this.labelNode,"expanded","true");
+dijit.setWaiRole(this.containerNode,"group");
+dojo.addClass(this.contentNode,"dijitTreeContentExpanded");
+this._setExpando();
+this._updateItemClasses(this.item);
+if(this==this.tree.rootNode){
+dijit.setWaiState(this.tree.domNode,"expanded","true");
+}
+var def,_10=dojo.fx.wipeIn({node:this.containerNode,duration:dijit.defaultDuration,onEnd:function(){
+def.callback(true);
+}});
+def=(this._expandDeferred=new dojo.Deferred(function(){
+_10.stop();
+}));
+_10.play();
+return def;
+},collapse:function(){
+if(!this.isExpanded){
+return;
+}
+if(this._expandDeferred){
+this._expandDeferred.cancel();
+delete this._expandDeferred;
+}
+this.isExpanded=false;
+dijit.setWaiState(this.labelNode,"expanded","false");
+if(this==this.tree.rootNode){
+dijit.setWaiState(this.tree.domNode,"expanded","false");
+}
+dojo.removeClass(this.contentNode,"dijitTreeContentExpanded");
+this._setExpando();
+this._updateItemClasses(this.item);
+if(!this._wipeOut){
+this._wipeOut=dojo.fx.wipeOut({node:this.containerNode,duration:dijit.defaultDuration});
+}
+this._wipeOut.play();
+},indent:0,setChildItems:function(_11){
+var _12=this.tree,_13=_12.model,_14=[];
+dojo.forEach(this.getChildren(),function(_15){
+dijit._Container.prototype.removeChild.call(this,_15);
+},this);
+this.state="LOADED";
+if(_11&&_11.length>0){
+this.isExpandable=true;
+dojo.forEach(_11,function(_16){
+var id=_13.getIdentity(_16),_17=_12._itemNodesMap[id],_18;
+if(_17){
+for(var i=0;i<_17.length;i++){
+if(_17[i]&&!_17[i].getParent()){
+_18=_17[i];
+_18.set("indent",this.indent+1);
+break;
+}
+}
+}
+if(!_18){
+_18=this.tree._createTreeNode({item:_16,tree:_12,isExpandable:_13.mayHaveChildren(_16),label:_12.getLabel(_16),tooltip:_12.getTooltip(_16),dir:_12.dir,lang:_12.lang,indent:this.indent+1});
+if(_17){
+_17.push(_18);
+}else{
+_12._itemNodesMap[id]=[_18];
+}
+}
+this.addChild(_18);
+if(this.tree.autoExpand||this.tree._state(_16)){
+_14.push(_12._expandNode(_18));
+}
+},this);
+dojo.forEach(this.getChildren(),function(_19,idx){
+_19._updateLayout();
+});
+}else{
+this.isExpandable=false;
+}
+if(this._setExpando){
+this._setExpando(false);
+}
+this._updateItemClasses(this.item);
+if(this==_12.rootNode){
+var fc=this.tree.showRoot?this:this.getChildren()[0];
+if(fc){
+fc.setFocusable(true);
+_12.lastFocused=fc;
+}else{
+_12.domNode.setAttribute("tabIndex","0");
+}
+}
+return new dojo.DeferredList(_14);
+},removeChild:function(_1a){
+this.inherited(arguments);
+var _1b=this.getChildren();
+if(_1b.length==0){
+this.isExpandable=false;
+this.collapse();
+}
+dojo.forEach(_1b,function(_1c){
+_1c._updateLayout();
+});
+},makeExpandable:function(){
+this.isExpandable=true;
+this._setExpando(false);
+},_onLabelFocus:function(evt){
+this.tree._onNodeFocus(this);
+},setSelected:function(_1d){
+dijit.setWaiState(this.labelNode,"selected",_1d);
+dojo.toggleClass(this.rowNode,"dijitTreeRowSelected",_1d);
+},setFocusable:function(_1e){
+this.labelNode.setAttribute("tabIndex",_1e?"0":"-1");
+},_onClick:function(evt){
+this.tree._onClick(this,evt);
+},_onDblClick:function(evt){
+this.tree._onDblClick(this,evt);
+},_onMouseEnter:function(evt){
+this.tree._onNodeMouseEnter(this,evt);
+},_onMouseLeave:function(evt){
+this.tree._onNodeMouseLeave(this,evt);
+}});
+dojo.declare("dijit.Tree",[dijit._Widget,dijit._Templated],{store:null,model:null,query:null,label:"",showRoot:true,childrenAttr:["children"],path:[],selectedItem:null,openOnClick:false,openOnDblClick:false,templateString:dojo.cache("dijit","templates/Tree.html","<div class=\"dijitTree dijitTreeContainer\" waiRole=\"tree\"\n\tdojoAttachEvent=\"onkeypress:_onKeyPress\">\n\t<div class=\"dijitInline dijitTreeIndent\" style=\"position: absolute; top: -9999px\" dojoAttachPoint=\"indentDetector\"></div>\n</div>\n"),persist:true,autoExpand:false,dndController:null,dndParams:["onDndDrop","itemCreator","onDndCancel","checkAcceptance","checkItemAcceptance","dragThreshold","betweenThreshold"],onDndDrop:null,itemCreator:null,onDndCancel:null,checkAcceptance:null,checkItemAcceptance:null,dragThreshold:5,betweenThreshold:0,_nodePixelIndent:19,_publish:function(_1f,_20){
+dojo.publish(this.id,[dojo.mixin({tree:this,event:_1f},_20||{})]);
+},postMixInProperties:function(){
+this.tree=this;
+if(this.autoExpand){
+this.persist=false;
+}
+this._itemNodesMap={};
+if(!this.cookieName){
+this.cookieName=this.id+"SaveStateCookie";
+}
+this._loadDeferred=new dojo.Deferred();
+this.inherited(arguments);
+},postCreate:function(){
+this._initState();
+if(!this.model){
+this._store2model();
+}
+this.connect(this.model,"onChange","_onItemChange");
+this.connect(this.model,"onChildrenChange","_onItemChildrenChange");
+this.connect(this.model,"onDelete","_onItemDelete");
+this._load();
+this.inherited(arguments);
+if(this.dndController){
+if(dojo.isString(this.dndController)){
+this.dndController=dojo.getObject(this.dndController);
+}
+var _21={};
+for(var i=0;i<this.dndParams.length;i++){
+if(this[this.dndParams[i]]){
+_21[this.dndParams[i]]=this[this.dndParams[i]];
+}
+}
+this.dndController=new this.dndController(this,_21);
+}
+},_store2model:function(){
+this._v10Compat=true;
+dojo.deprecated("Tree: from version 2.0, should specify a model object rather than a store/query");
+var _22={id:this.id+"_ForestStoreModel",store:this.store,query:this.query,childrenAttrs:this.childrenAttr};
+if(this.params.mayHaveChildren){
+_22.mayHaveChildren=dojo.hitch(this,"mayHaveChildren");
+}
+if(this.params.getItemChildren){
+_22.getChildren=dojo.hitch(this,function(_23,_24,_25){
+this.getItemChildren((this._v10Compat&&_23===this.model.root)?null:_23,_24,_25);
+});
+}
+this.model=new dijit.tree.ForestStoreModel(_22);
+this.showRoot=Boolean(this.label);
+},onLoad:function(){
+},_load:function(){
+this.model.getRoot(dojo.hitch(this,function(_26){
+var rn=(this.rootNode=this.tree._createTreeNode({item:_26,tree:this,isExpandable:true,label:this.label||this.getLabel(_26),indent:this.showRoot?0:-1}));
+if(!this.showRoot){
+rn.rowNode.style.display="none";
+}
+this.domNode.appendChild(rn.domNode);
+var _27=this.model.getIdentity(_26);
+if(this._itemNodesMap[_27]){
+this._itemNodesMap[_27].push(rn);
+}else{
+this._itemNodesMap[_27]=[rn];
+}
+rn._updateLayout();
+this._expandNode(rn).addCallback(dojo.hitch(this,function(){
+this._loadDeferred.callback(true);
+this.onLoad();
+}));
+}),function(err){
+console.error(this,": error loading root: ",err);
+});
+},getNodesByItem:function(_28){
+if(!_28){
+return [];
+}
+var _29=dojo.isString(_28)?_28:this.model.getIdentity(_28);
+return [].concat(this._itemNodesMap[_29]);
+},_setSelectedItemAttr:function(_2a){
+var _2b=this.get("selectedItem");
+var _2c=(!_2a||dojo.isString(_2a))?_2a:this.model.getIdentity(_2a);
+if(_2c==_2b?this.model.getIdentity(_2b):null){
+return;
+}
+var _2d=this._itemNodesMap[_2c];
+this._selectNode((_2d&&_2d[0])||null);
+},_getSelectedItemAttr:function(){
+return this.selectedNode&&this.selectedNode.item;
+},_setPathAttr:function(_2e){
+var d=new dojo.Deferred();
+this._selectNode(null);
+if(!_2e||!_2e.length){
+d.resolve(true);
+return d;
+}
+this._loadDeferred.addCallback(dojo.hitch(this,function(){
+if(!this.rootNode){
+d.reject(new Error("!this.rootNode"));
+return;
+}
+if(_2e[0]!==this.rootNode.item&&(dojo.isString(_2e[0])&&_2e[0]!=this.model.getIdentity(this.rootNode.item))){
+d.reject(new Error(this.id+":path[0] doesn't match this.rootNode.item. Maybe you are using the wrong tree."));
+return;
+}
+_2e.shift();
+var _2f=this.rootNode;
+function _30(){
+var _31=_2e.shift(),_32=dojo.isString(_31)?_31:this.model.getIdentity(_31);
+dojo.some(this._itemNodesMap[_32],function(n){
+if(n.getParent()==_2f){
+_2f=n;
+return true;
+}
+return false;
+});
+if(_2e.length){
+this._expandNode(_2f).addCallback(dojo.hitch(this,_30));
+}else{
+this._selectNode(_2f);
+d.resolve(true);
+}
+};
+this._expandNode(_2f).addCallback(dojo.hitch(this,_30));
+}));
+return d;
+},_getPathAttr:function(){
+if(!this.selectedNode){
+return;
+}
+var res=[];
+var _33=this.selectedNode;
+while(_33&&_33!==this.rootNode){
+res.unshift(_33.item);
+_33=_33.getParent();
+}
+res.unshift(this.rootNode.item);
+return res;
+},mayHaveChildren:function(_34){
+},getItemChildren:function(_35,_36){
+},getLabel:function(_37){
+return this.model.getLabel(_37);
+},getIconClass:function(_38,_39){
+return (!_38||this.model.mayHaveChildren(_38))?(_39?"dijitFolderOpened":"dijitFolderClosed"):"dijitLeaf";
+},getLabelClass:function(_3a,_3b){
+},getRowClass:function(_3c,_3d){
+},getIconStyle:function(_3e,_3f){
+},getLabelStyle:function(_40,_41){
+},getRowStyle:function(_42,_43){
+},getTooltip:function(_44){
+return "";
+},_onKeyPress:function(e){
+if(e.altKey){
+return;
+}
+var dk=dojo.keys;
+var _45=dijit.getEnclosingWidget(e.target);
+if(!_45){
+return;
+}
+var key=e.charOrCode;
+if(typeof key=="string"){
+if(!e.altKey&&!e.ctrlKey&&!e.shiftKey&&!e.metaKey){
+this._onLetterKeyNav({node:_45,key:key.toLowerCase()});
+dojo.stopEvent(e);
+}
+}else{
+if(this._curSearch){
+clearTimeout(this._curSearch.timer);
+delete this._curSearch;
+}
+var map=this._keyHandlerMap;
+if(!map){
+map={};
+map[dk.ENTER]="_onEnterKey";
+map[this.isLeftToRight()?dk.LEFT_ARROW:dk.RIGHT_ARROW]="_onLeftArrow";
+map[this.isLeftToRight()?dk.RIGHT_ARROW:dk.LEFT_ARROW]="_onRightArrow";
+map[dk.UP_ARROW]="_onUpArrow";
+map[dk.DOWN_ARROW]="_onDownArrow";
+map[dk.HOME]="_onHomeKey";
+map[dk.END]="_onEndKey";
+this._keyHandlerMap=map;
+}
+if(this._keyHandlerMap[key]){
+this[this._keyHandlerMap[key]]({node:_45,item:_45.item,evt:e});
+dojo.stopEvent(e);
+}
+}
+},_onEnterKey:function(_46,evt){
+this._publish("execute",{item:_46.item,node:_46.node});
+this._selectNode(_46.node);
+this.onClick(_46.item,_46.node,evt);
+},_onDownArrow:function(_47){
+var _48=this._getNextNode(_47.node);
+if(_48&&_48.isTreeNode){
+this.focusNode(_48);
+}
+},_onUpArrow:function(_49){
+var _4a=_49.node;
+var _4b=_4a.getPreviousSibling();
+if(_4b){
+_4a=_4b;
+while(_4a.isExpandable&&_4a.isExpanded&&_4a.hasChildren()){
+var _4c=_4a.getChildren();
+_4a=_4c[_4c.length-1];
+}
+}else{
+var _4d=_4a.getParent();
+if(!(!this.showRoot&&_4d===this.rootNode)){
+_4a=_4d;
+}
+}
+if(_4a&&_4a.isTreeNode){
+this.focusNode(_4a);
+}
+},_onRightArrow:function(_4e){
+var _4f=_4e.node;
+if(_4f.isExpandable&&!_4f.isExpanded){
+this._expandNode(_4f);
+}else{
+if(_4f.hasChildren()){
+_4f=_4f.getChildren()[0];
+if(_4f&&_4f.isTreeNode){
+this.focusNode(_4f);
+}
+}
+}
+},_onLeftArrow:function(_50){
+var _51=_50.node;
+if(_51.isExpandable&&_51.isExpanded){
+this._collapseNode(_51);
+}else{
+var _52=_51.getParent();
+if(_52&&_52.isTreeNode&&!(!this.showRoot&&_52===this.rootNode)){
+this.focusNode(_52);
+}
+}
+},_onHomeKey:function(){
+var _53=this._getRootOrFirstNode();
+if(_53){
+this.focusNode(_53);
+}
+},_onEndKey:function(_54){
+var _55=this.rootNode;
+while(_55.isExpanded){
+var c=_55.getChildren();
+_55=c[c.length-1];
+}
+if(_55&&_55.isTreeNode){
+this.focusNode(_55);
+}
+},multiCharSearchDuration:250,_onLetterKeyNav:function(_56){
+var cs=this._curSearch;
+if(cs){
+cs.pattern=cs.pattern+_56.key;
+clearTimeout(cs.timer);
+}else{
+cs=this._curSearch={pattern:_56.key,startNode:_56.node};
+}
+var _57=this;
+cs.timer=setTimeout(function(){
+delete _57._curSearch;
+},this.multiCharSearchDuration);
+var _58=cs.startNode;
+do{
+_58=this._getNextNode(_58);
+if(!_58){
+_58=this._getRootOrFirstNode();
+}
+}while(_58!==cs.startNode&&(_58.label.toLowerCase().substr(0,cs.pattern.length)!=cs.pattern));
+if(_58&&_58.isTreeNode){
+if(_58!==cs.startNode){
+this.focusNode(_58);
+}
+}
+},_onClick:function(_59,e){
+var _5a=e.target,_5b=(_5a==_59.expandoNode||_5a==_59.expandoNodeText);
+if((this.openOnClick&&_59.isExpandable)||_5b){
+if(_59.isExpandable){
+this._onExpandoClick({node:_59});
+}
+}else{
+this._publish("execute",{item:_59.item,node:_59,evt:e});
+this.onClick(_59.item,_59,e);
+this.focusNode(_59);
+}
+if(!_5b){
+this._selectNode(_59);
+}
+dojo.stopEvent(e);
+},_onDblClick:function(_5c,e){
+var _5d=e.target,_5e=(_5d==_5c.expandoNode||_5d==_5c.expandoNodeText);
+if((this.openOnDblClick&&_5c.isExpandable)||_5e){
+if(_5c.isExpandable){
+this._onExpandoClick({node:_5c});
+}
+}else{
+this._publish("execute",{item:_5c.item,node:_5c,evt:e});
+this.onDblClick(_5c.item,_5c,e);
+this.focusNode(_5c);
+}
+if(!_5e){
+this._selectNode(_5c);
+}
+dojo.stopEvent(e);
+},_onExpandoClick:function(_5f){
+var _60=_5f.node;
+this.focusNode(_60);
+if(_60.isExpanded){
+this._collapseNode(_60);
+}else{
+this._expandNode(_60);
+}
+},onClick:function(_61,_62,evt){
+},onDblClick:function(_63,_64,evt){
+},onOpen:function(_65,_66){
+},onClose:function(_67,_68){
+},_getNextNode:function(_69){
+if(_69.isExpandable&&_69.isExpanded&&_69.hasChildren()){
+return _69.getChildren()[0];
+}else{
+while(_69&&_69.isTreeNode){
+var _6a=_69.getNextSibling();
+if(_6a){
+return _6a;
+}
+_69=_69.getParent();
+}
+return null;
+}
+},_getRootOrFirstNode:function(){
+return this.showRoot?this.rootNode:this.rootNode.getChildren()[0];
+},_collapseNode:function(_6b){
+if(_6b._expandNodeDeferred){
+delete _6b._expandNodeDeferred;
+}
+if(_6b.isExpandable){
+if(_6b.state=="LOADING"){
+return;
+}
+_6b.collapse();
+this.onClose(_6b.item,_6b);
+if(_6b.item){
+this._state(_6b.item,false);
+this._saveState();
+}
+}
+},_expandNode:function(_6c,_6d){
+if(_6c._expandNodeDeferred&&!_6d){
+return _6c._expandNodeDeferred;
+}
+var _6e=this.model,_6f=_6c.item,_70=this;
+switch(_6c.state){
+case "UNCHECKED":
+_6c.markProcessing();
+var def=(_6c._expandNodeDeferred=new dojo.Deferred());
+_6e.getChildren(_6f,function(_71){
+_6c.unmarkProcessing();
+var _72=_6c.setChildItems(_71);
+var ed=_70._expandNode(_6c,true);
+_72.addCallback(function(){
+ed.addCallback(function(){
+def.callback();
+});
+});
+},function(err){
+console.error(_70,": error loading root children: ",err);
+});
+break;
+default:
+def=(_6c._expandNodeDeferred=_6c.expand());
+this.onOpen(_6c.item,_6c);
+if(_6f){
+this._state(_6f,true);
+this._saveState();
+}
+}
+return def;
+},focusNode:function(_73){
+dijit.focus(_73.labelNode);
+},_selectNode:function(_74){
+if(this.selectedNode&&!this.selectedNode._destroyed){
+this.selectedNode.setSelected(false);
+}
+if(_74){
+_74.setSelected(true);
+}
+this.selectedNode=_74;
+},_onNodeFocus:function(_75){
+if(_75&&_75!=this.lastFocused){
+if(this.lastFocused&&!this.lastFocused._destroyed){
+this.lastFocused.setFocusable(false);
+}
+_75.setFocusable(true);
+this.lastFocused=_75;
+}
+},_onNodeMouseEnter:function(_76){
+},_onNodeMouseLeave:function(_77){
+},_onItemChange:function(_78){
+var _79=this.model,_7a=_79.getIdentity(_78),_7b=this._itemNodesMap[_7a];
+if(_7b){
+var _7c=this.getLabel(_78),_7d=this.getTooltip(_78);
+dojo.forEach(_7b,function(_7e){
+_7e.set({item:_78,label:_7c,tooltip:_7d});
+_7e._updateItemClasses(_78);
+});
+}
+},_onItemChildrenChange:function(_7f,_80){
+var _81=this.model,_82=_81.getIdentity(_7f),_83=this._itemNodesMap[_82];
+if(_83){
+dojo.forEach(_83,function(_84){
+_84.setChildItems(_80);
+});
+}
+},_onItemDelete:function(_85){
+var _86=this.model,_87=_86.getIdentity(_85),_88=this._itemNodesMap[_87];
+if(_88){
+dojo.forEach(_88,function(_89){
+var _8a=_89.getParent();
+if(_8a){
+_8a.removeChild(_89);
+}
+_89.destroyRecursive();
+});
+delete this._itemNodesMap[_87];
+}
+},_initState:function(){
+if(this.persist){
+var _8b=dojo.cookie(this.cookieName);
+this._openedItemIds={};
+if(_8b){
+dojo.forEach(_8b.split(","),function(_8c){
+this._openedItemIds[_8c]=true;
+},this);
+}
+}
+},_state:function(_8d,_8e){
+if(!this.persist){
+return false;
+}
+var id=this.model.getIdentity(_8d);
+if(arguments.length===1){
+return this._openedItemIds[id];
+}
+if(_8e){
+this._openedItemIds[id]=true;
+}else{
+delete this._openedItemIds[id];
+}
+},_saveState:function(){
+if(!this.persist){
+return;
+}
+var ary=[];
+for(var id in this._openedItemIds){
+ary.push(id);
+}
+dojo.cookie(this.cookieName,ary.join(","),{expires:365});
+},destroy:function(){
+if(this._curSearch){
+clearTimeout(this._curSearch.timer);
+delete this._curSearch;
+}
+if(this.rootNode){
+this.rootNode.destroyRecursive();
+}
+if(this.dndController&&!dojo.isString(this.dndController)){
+this.dndController.destroy();
+}
+this.rootNode=null;
+this.inherited(arguments);
+},destroyRecursive:function(){
+this.destroy();
+},resize:function(_8f){
+if(_8f){
+dojo.marginBox(this.domNode,_8f);
+dojo.style(this.domNode,"overflow","auto");
+}
+this._nodePixelIndent=dojo.marginBox(this.tree.indentDetector).w;
+if(this.tree.rootNode){
+this.tree.rootNode.set("indent",this.showRoot?0:-1);
+}
+},_createTreeNode:function(_90){
+return new dijit._TreeNode(_90);
+}});
+dojo.require("dijit.tree.TreeStoreModel");
+dojo.require("dijit.tree.ForestStoreModel");
+}