You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
84 lines
2.4 KiB
JavaScript
84 lines
2.4 KiB
JavaScript
14 years ago
|
/*
|
||
|
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.ForestStoreModel"]){
|
||
|
dojo._hasResource["dijit.tree.ForestStoreModel"]=true;
|
||
|
dojo.provide("dijit.tree.ForestStoreModel");
|
||
|
dojo.require("dijit.tree.TreeStoreModel");
|
||
|
dojo.declare("dijit.tree.ForestStoreModel",dijit.tree.TreeStoreModel,{rootId:"$root$",rootLabel:"ROOT",query:null,constructor:function(_1){
|
||
|
this.root={store:this,root:true,id:_1.rootId,label:_1.rootLabel,children:_1.rootChildren};
|
||
|
},mayHaveChildren:function(_2){
|
||
|
return _2===this.root||this.inherited(arguments);
|
||
|
},getChildren:function(_3,_4,_5){
|
||
|
if(_3===this.root){
|
||
|
if(this.root.children){
|
||
|
_4(this.root.children);
|
||
|
}else{
|
||
|
this.store.fetch({query:this.query,onComplete:dojo.hitch(this,function(_6){
|
||
|
this.root.children=_6;
|
||
|
_4(_6);
|
||
|
}),onError:_5});
|
||
|
}
|
||
|
}else{
|
||
|
this.inherited(arguments);
|
||
|
}
|
||
|
},isItem:function(_7){
|
||
|
return (_7===this.root)?true:this.inherited(arguments);
|
||
|
},fetchItemByIdentity:function(_8){
|
||
|
if(_8.identity==this.root.id){
|
||
|
var _9=_8.scope?_8.scope:dojo.global;
|
||
|
if(_8.onItem){
|
||
|
_8.onItem.call(_9,this.root);
|
||
|
}
|
||
|
}else{
|
||
|
this.inherited(arguments);
|
||
|
}
|
||
|
},getIdentity:function(_a){
|
||
|
return (_a===this.root)?this.root.id:this.inherited(arguments);
|
||
|
},getLabel:function(_b){
|
||
|
return (_b===this.root)?this.root.label:this.inherited(arguments);
|
||
|
},newItem:function(_c,_d,_e){
|
||
|
if(_d===this.root){
|
||
|
this.onNewRootItem(_c);
|
||
|
return this.store.newItem(_c);
|
||
|
}else{
|
||
|
return this.inherited(arguments);
|
||
|
}
|
||
|
},onNewRootItem:function(_f){
|
||
|
},pasteItem:function(_10,_11,_12,_13,_14){
|
||
|
if(_11===this.root){
|
||
|
if(!_13){
|
||
|
this.onLeaveRoot(_10);
|
||
|
}
|
||
|
}
|
||
|
dijit.tree.TreeStoreModel.prototype.pasteItem.call(this,_10,_11===this.root?null:_11,_12===this.root?null:_12,_13,_14);
|
||
|
if(_12===this.root){
|
||
|
this.onAddToRoot(_10);
|
||
|
}
|
||
|
},onAddToRoot:function(_15){
|
||
|
},onLeaveRoot:function(_16){
|
||
|
},_requeryTop:function(){
|
||
|
var _17=this.root.children||[];
|
||
|
this.store.fetch({query:this.query,onComplete:dojo.hitch(this,function(_18){
|
||
|
this.root.children=_18;
|
||
|
if(_17.length!=_18.length||dojo.some(_17,function(_19,idx){
|
||
|
return _18[idx]!=_19;
|
||
|
})){
|
||
|
this.onChildrenChange(this.root,_18);
|
||
|
}
|
||
|
})});
|
||
|
},onNewItem:function(_1a,_1b){
|
||
|
this._requeryTop();
|
||
|
this.inherited(arguments);
|
||
|
},onDeleteItem:function(_1c){
|
||
|
if(dojo.indexOf(this.root.children,_1c)!=-1){
|
||
|
this._requeryTop();
|
||
|
}
|
||
|
this.inherited(arguments);
|
||
|
}});
|
||
|
}
|