diff options
author | Andrew Dolgov <[email protected]> | 2010-11-15 10:39:52 +0300 |
---|---|---|
committer | Andrew Dolgov <[email protected]> | 2010-11-15 10:39:52 +0300 |
commit | 2f01fe57a8d37767827d6db42850aef86a767c53 (patch) | |
tree | 516a95ffce2fc2435aed8d9976e444dbcba7dce3 /lib/dijit/Tree.js | |
parent | 951906dcecb1d3c7bcf751976a03e0c196ca6db0 (diff) |
add dijit/dojo stuff; initial ui mockup
Diffstat (limited to 'lib/dijit/Tree.js')
-rw-r--r-- | lib/dijit/Tree.js | 678 |
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"); +} |