blob: 5ce79d4691f707854601e2ad73627e07d3e8780b [file] [log] [blame]
dojo.provide("dojo.widget.TreeCommon");
dojo.require("dojo.widget.*");
dojo.declare("dojo.widget.TreeCommon",null,{listenTreeEvents:[],listenedTrees:{},listenNodeFilter:null,listenTree:function(_1){
var _2=this;
if(this.listenedTrees[_1.widgetId]){
return;
}
dojo.lang.forEach(this.listenTreeEvents,function(_3){
var _4="on"+_3.charAt(0).toUpperCase()+_3.substr(1);
dojo.event.topic.subscribe(_1.eventNames[_3],_2,_4);
});
var _5;
if(this.listenNodeFilter){
this.processDescendants(_1,this.listenNodeFilter,this.listenNode,true);
}
this.listenedTrees[_1.widgetId]=true;
},listenNode:function(){
},unlistenNode:function(){
},unlistenTree:function(_6,_7){
var _8=this;
if(!this.listenedTrees[_6.widgetId]){
return;
}
dojo.lang.forEach(this.listenTreeEvents,function(_9){
var _a="on"+_9.charAt(0).toUpperCase()+_9.substr(1);
dojo.event.topic.unsubscribe(_6.eventNames[_9],_8,_a);
});
if(this.listenNodeFilter){
this.processDescendants(_6,this.listenNodeFilter,this.unlistenNode,true);
}
delete this.listenedTrees[_6.widgetId];
},checkPathCondition:function(_b,_c){
while(_b&&!_b.widgetId){
if(_c.call(null,_b)){
return true;
}
_b=_b.parentNode;
}
return false;
},domElement2TreeNode:function(_d){
while(_d&&!_d.widgetId){
_d=_d.parentNode;
}
if(!_d){
return null;
}
var _e=dojo.widget.byId(_d.widgetId);
if(!_e.isTreeNode){
return null;
}
return _e;
},processDescendants:function(_f,_10,_11,_12){
var _13=this;
if(!_12){
if(!_10.call(_13,_f)){
return;
}
_11.call(_13,_f);
}
var _14=[_f];
while(_f=_14.pop()){
dojo.lang.forEach(_f.children,function(_15){
if(_10.call(_13,_15)){
_11.call(_13,_15);
_14.push(_15);
}
});
}
}});