Subversion Repositories Applications.papyrus

Rev

Rev 1318 | Blame | Compare with Previous | Last modification | View Log | RSS feed

/*
        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.TreeRPCController");
dojo.require("dojo.event.*");
dojo.require("dojo.json");
dojo.require("dojo.io.*");
dojo.require("dojo.widget.TreeLoadingController");
dojo.widget.defineWidget("dojo.widget.TreeRPCController", dojo.widget.TreeLoadingController, {doMove:function (child, newParent, index) {
        var params = {child:this.getInfo(child), childTree:this.getInfo(child.tree), newParent:this.getInfo(newParent), newParentTree:this.getInfo(newParent.tree), newIndex:index};
        var success;
        this.runRPC({url:this.getRPCUrl("move"), load:function (response) {
                success = this.doMoveProcessResponse(response, child, newParent, index);
        }, sync:true, lock:[child, newParent], params:params});
        return success;
}, doMoveProcessResponse:function (response, child, newParent, index) {
        if (!dojo.lang.isUndefined(response.error)) {
                this.RPCErrorHandler("server", response.error);
                return false;
        }
        var args = [child, newParent, index];
        return dojo.widget.TreeLoadingController.prototype.doMove.apply(this, args);
}, doRemoveNode:function (node, callObj, callFunc) {
        var params = {node:this.getInfo(node), tree:this.getInfo(node.tree)};
        this.runRPC({url:this.getRPCUrl("removeNode"), load:function (response) {
                this.doRemoveNodeProcessResponse(response, node, callObj, callFunc);
        }, params:params, lock:[node]});
}, doRemoveNodeProcessResponse:function (response, node, callObj, callFunc) {
        if (!dojo.lang.isUndefined(response.error)) {
                this.RPCErrorHandler("server", response.error);
                return false;
        }
        if (!response) {
                return false;
        }
        if (response == true) {
                var args = [node, callObj, callFunc];
                dojo.widget.TreeLoadingController.prototype.doRemoveNode.apply(this, args);
                return;
        } else {
                if (dojo.lang.isObject(response)) {
                        dojo.raise(response.error);
                } else {
                        dojo.raise("Invalid response " + response);
                }
        }
}, doCreateChild:function (parent, index, output, callObj, callFunc) {
        var params = {tree:this.getInfo(parent.tree), parent:this.getInfo(parent), index:index, data:output};
        this.runRPC({url:this.getRPCUrl("createChild"), load:function (response) {
                this.doCreateChildProcessResponse(response, parent, index, callObj, callFunc);
        }, params:params, lock:[parent]});
}, doCreateChildProcessResponse:function (response, parent, index, callObj, callFunc) {
        if (!dojo.lang.isUndefined(response.error)) {
                this.RPCErrorHandler("server", response.error);
                return false;
        }
        if (!dojo.lang.isObject(response)) {
                dojo.raise("Invalid result " + response);
        }
        var args = [parent, index, response, callObj, callFunc];
        dojo.widget.TreeLoadingController.prototype.doCreateChild.apply(this, args);
}});