Ext.tree.DWRTreeLoader = function(config) {
// Ext.apply(this,config);
Ext.tree.DWRTreeLoader.superclass.constructor.call(this, config);
};
Ext.extend(Ext.tree.DWRTreeLoader, Ext.tree.TreeLoader, {
requestData : function(node, callback) {
if (this.fireEvent("beforeload", this, node, callback) !== false) {
// todo
// var params = this.getParams(node);
var callParams = new Array();
var success = this.handleResponse.createDelegate(this, [node,
callback], 1);
var error = this.handleFailure.createDelegate(this,
[node, callback], 1);
callParams.push(node.id);
if (typeof this.baseParams == 'object') {
for (var p in this.baseParams) {
callParams.push(this.baseParams[p]);
}
}
callParams.push({
callback : success,
errorHandler : error
});
// todo: do we need to set this to something else?
this.transId = true;
this.dataUrl.apply(this, callParams);
} else {
// if the load is cancelled, make sure we notify
// the node that we are done
if (typeof callback == "function") {
callback();
}
}
},
processResponse : function(response, node, callback) {
try {
for (var i = 0; i < response.length; i++) {
var n = this.createNode(response[i]);
if (n) {
node.appendChild(n);
}
}
if (typeof callback == "function") {
callback(this, node);
}
} catch (e) {
this.handleFailure(response);
}
},
handleResponse : function(response, node, callback) {
this.transId = false;
this.processResponse(response, node, callback);
this.fireEvent("load", this, node, response);
},
handleFailure : function(response, node, callback) {
this.transId = false;
this.fireEvent("loadexception", this, node, response);
if (typeof callback == "function") {
callback(this, node);
}
}
});