/* 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.TreeLoadingController"); dojo.require("dojo.widget.TreeBasicController"); dojo.require("dojo.event.*"); dojo.require("dojo.json") dojo.require("dojo.io.*"); dojo.widget.tags.addParseTreeHandler("dojo:TreeLoadingController"); dojo.widget.TreeLoadingController = function() { dojo.widget.TreeBasicController.call(this); } dojo.inherits(dojo.widget.TreeLoadingController, dojo.widget.TreeBasicController); dojo.lang.extend(dojo.widget.TreeLoadingController, { widgetType: "TreeLoadingController", RPCUrl: "", RPCActionParam: "action", // used for GET for RPCUrl /** * Common RPC error handler (dies) */ RPCErrorHandler: function(type, obj, evt) { alert( "RPC Error: " + (obj.message||"no message")); }, getRPCUrl: function(action) { // RPCUrl=local meant SOLELY for DEMO and LOCAL TESTS. // May lead to widgetId collisions if (this.RPCUrl == "local") { var dir = document.location.href.substr(0, document.location.href.lastIndexOf('/')); var localUrl = dir+"/"+action; //dojo.debug(localUrl); return localUrl; } if (!this.RPCUrl) { dojo.raise("Empty RPCUrl: can't load"); } return this.RPCUrl + ( this.RPCUrl.indexOf("?") > -1 ? "&" : "?") + this.RPCActionParam+"="+action; }, /** * Add all loaded nodes from array obj as node children and expand it */ loadProcessResponse: function(node, result, callObj, callFunc) { if (!dojo.lang.isUndefined(result.error)) { this.RPCErrorHandler("server", result.error); return false; } //dojo.debugShallow(result); var newChildren = result; if (!dojo.lang.isArray(newChildren)) { dojo.raise('loadProcessResponse: Not array loaded: '+newChildren); } for(var i=0; i