/* 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.TreeSelector"); dojo.require("dojo.widget.HtmlWidget"); dojo.widget.tags.addParseTreeHandler("dojo:TreeSelector"); dojo.widget.TreeSelector = function() { dojo.widget.HtmlWidget.call(this); this.eventNames = {}; this.listenedTrees = []; } dojo.inherits(dojo.widget.TreeSelector, dojo.widget.HtmlWidget); dojo.lang.extend(dojo.widget.TreeSelector, { widgetType: "TreeSelector", selectedNode: null, dieWithTree: false, eventNamesDefault: { select : "select", destroy : "destroy", deselect : "deselect", dblselect: "dblselect" // select already selected node.. Edit or whatever }, initialize: function() { for(name in this.eventNamesDefault) { if (dojo.lang.isUndefined(this.eventNames[name])) { this.eventNames[name] = this.widgetId+"/"+this.eventNamesDefault[name]; } } }, destroy: function() { dojo.event.topic.publish(this.eventNames.destroy, { source: this } ); return dojo.widget.HtmlWidget.prototype.destroy.apply(this, arguments); }, listenTree: function(tree) { dojo.event.topic.subscribe(tree.eventNames.titleClick, this, "select"); dojo.event.topic.subscribe(tree.eventNames.iconClick, this, "select"); dojo.event.topic.subscribe(tree.eventNames.collapse, this, "onCollapse"); dojo.event.topic.subscribe(tree.eventNames.moveFrom, this, "onMoveFrom"); dojo.event.topic.subscribe(tree.eventNames.removeNode, this, "onRemoveNode"); dojo.event.topic.subscribe(tree.eventNames.treeDestroy, this, "onTreeDestroy"); /* remember all my trees to deselect when element is movedFrom them */ this.listenedTrees.push(tree); }, unlistenTree: function(tree) { dojo.event.topic.unsubscribe(tree.eventNames.titleClick, this, "select"); dojo.event.topic.unsubscribe(tree.eventNames.iconClick, this, "select"); dojo.event.topic.unsubscribe(tree.eventNames.collapse, this, "onCollapse"); dojo.event.topic.unsubscribe(tree.eventNames.moveFrom, this, "onMoveFrom"); dojo.event.topic.unsubscribe(tree.eventNames.removeNode, this, "onRemoveNode"); dojo.event.topic.unsubscribe(tree.eventNames.treeDestroy, this, "onTreeDestroy"); for(var i=0; i