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.TreeDemo");
dojo.require("dojo.Deferred");
dojo.widget.TreeDemo = {reportIfDefered:function (res) {
        if (res instanceof dojo.Deferred) {
                res.addCallbacks(function (res) {
                        return res;
                }, function (err) {
                        dojo.debug("Error");
                        dojo.debugShallow(err);
                });
        }
}, resetRandomChildren:function (maxCount) {
        this.randomChildrenMaxCount = maxCount;
        this.randomChildrenCount = 0;
        this.randomChildrenDepth = 0;
}, makeRandomChildren:function (title) {
        this.randomChildrenDepth++;
        var children = [];
        for (var i = 1; i <= 5; i++) {
                var t = title + (this.randomChildrenDepth == 1 ? "" : ".") + i;
                var node = {title:t};
                children.push(node);
                this.randomChildrenCount++;
                if (this.randomChildrenCount >= this.randomChildrenMaxCount) {
                        break;
                }
        }
        var i = 1;
        var _this = this;
        dojo.lang.forEach(children, function (child) {
                var t = title + (_this.randomChildrenDepth == 1 ? "" : ".") + i;
                i++;
                if (_this.randomChildrenCount < _this.randomChildrenMaxCount && (_this.randomChildrenDepth == 1 && child === children[0] || _this.randomChildrenDepth < 5 && Math.random() > 0.3)) {
                        child.children = _this.makeRandomChildren(t);
                }
        });
        this.randomChildrenDepth--;
        return children;
}, bindDemoMenu:function (controller) {
        var _t = this;
        dojo.event.topic.subscribe("treeContextMenuDestroy/engage", function (menuItem) {
                var node = menuItem.getTreeNode();
                _t.reportIfDefered(controller.destroyChild(node));
        });
        dojo.event.topic.subscribe("treeContextMenuRefresh/engage", function (menuItem) {
                var node = menuItem.getTreeNode();
                _t.reportIfDefered(controller.refreshChildren(node));
        });
        dojo.event.topic.subscribe("treeContextMenuCreate/engage", function (menuItem) {
                var node = menuItem.getTreeNode();
                var d = controller.createAndEdit(node, 0);
                _t.reportIfDefered(d);
        });
        dojo.event.topic.subscribe("treeContextMenuUp/engage", function (menuItem) {
                var node = menuItem.getTreeNode();
                if (node.isFirstChild()) {
                        return;
                }
                _t.reportIfDefered(controller.move(node, node.parent, node.getParentIndex() - 1));
        });
        dojo.event.topic.subscribe("treeContextMenuDown/engage", function (menuItem) {
                var node = menuItem.getTreeNode();
                if (node.isLastChild()) {
                        return;
                }
                _t.reportIfDefered(controller.move(node, node.parent, node.getParentIndex() + 1));
        });
        dojo.event.topic.subscribe("treeContextMenuEdit/engage", function (menuItem) {
                var node = menuItem.getTreeNode();
                _t.reportIfDefered(controller.editLabelStart(node));
        });
}};