All Downloads are FREE. Search and download functionalities are using the official Maven repository.
Please wait. This can take some minutes ...
Many resources are needed to download a project. Please understand that we have to compensate our server costs. Thank you in advance.
Project price only 1 $
You can buy this project and download/modify it how often you want.
org.apache.myfaces.custom.dojo.resource.src.widget.TreeLoadingControllerV3.js Maven / Gradle / Ivy
/*
Copyright (c) 2004-2006, The Dojo Foundation
All Rights Reserved.
Licensed under the Academic Free License version 2.1 or above OR the
modified BSD license. For more information on Dojo licensing, see:
http://dojotoolkit.org/community/licensing.shtml
*/
dojo.provide("dojo.widget.TreeLoadingControllerV3");
dojo.require("dojo.widget.TreeBasicControllerV3");
dojo.require("dojo.event.*");
dojo.require("dojo.json")
dojo.require("dojo.io.*");
dojo.require("dojo.Deferred");
dojo.require("dojo.DeferredList");
dojo.declare(
"dojo.Error",
Error,
function(message, extra) {
this.message = message;
this.extra = extra;
this.stack = (new Error()).stack;
}
);
dojo.declare(
"dojo.CommunicationError",
dojo.Error,
function() {
this.name="CommunicationError";
}
);
dojo.declare(
"dojo.LockedError",
dojo.Error,
function() {
this.name="LockedError";
}
);
dojo.declare(
"dojo.FormatError",
dojo.Error,
function() {
this.name="FormatError";
}
);
dojo.declare(
"dojo.RpcError",
dojo.Error,
function() {
this.name="RpcError";
}
);
dojo.widget.defineWidget(
"dojo.widget.TreeLoadingControllerV3",
dojo.widget.TreeBasicControllerV3,
{
RpcUrl: "",
RpcActionParam: "action", // used for GET for RpcUrl
preventCache: true,
checkValidRpcResponse: function(type, obj) {
if (type != "load") {
var extra = {}
for(var i=1; i-1 ? "&" : "?") + this.RpcActionParam+"="+action;
},
/**
* Add all loaded nodes from array obj as node children and expand it
*/
loadProcessResponse: function(node, result) {
//dojo.debug("Process response "+node);
if (!dojo.lang.isArray(result)) {
throw new dojo.FormatError('loadProcessResponse: Not array loaded: '+result);
}
node.setChildren(result);
},
/**
* kw = { url, sync, params }
*/
runRpc: function(kw) {
var _this = this;
var deferred = new dojo.Deferred();
dojo.io.bind({
url: kw.url,
handle: this.getDeferredBindHandler(deferred),
mimetype: "text/javascript",
preventCache: this.preventCache,
sync: kw.sync,
content: { data: dojo.json.serialize(kw.params) }
});
return deferred;
},
/**
* Load children of the node from server
* Synchroneous loading doesn't break control flow
* I need sync mode for DnD
*/
loadRemote: function(node, sync){
var _this = this;
var params = {
node: this.getInfo(node),
tree: this.getInfo(node.tree)
};
var deferred = this.runRpc({
url: this.getRpcUrl('getChildren'),
sync: sync,
params: params
});
deferred.addCallback(function(res) { return _this.loadProcessResponse(node,res) });
return deferred;
},
batchExpandTimeout: 0,
recurseToLevel: function(widget, level, callFunc, callObj, skipFirst, sync) {
if (level == 0) return;
if (!skipFirst) {
var deferred = callFunc.call(callObj, widget, sync);
} else {
var deferred = dojo.Deferred.prototype.makeCalled();
}
//dojo.debug("expand deferred saved "+node+" sync "+sync);
var _this = this;
var recurseOnExpand = function() {
var children = widget.children;
var deferreds = [];
for(var i=0; i