Rev 1422 | Blame | Compare with Previous | Last modification | View Log | RSS feed
/*Copyright (c) 2004-2006, The Dojo FoundationAll Rights Reserved.Licensed under the Academic Free License version 2.1 or above OR themodified BSD license. For more information on Dojo licensing, see:http://dojotoolkit.org/community/licensing.shtml*/dojo.provide("dojo.widget.RadioGroup");dojo.require("dojo.lang.common");dojo.require("dojo.event.browser");dojo.require("dojo.html.selection");dojo.require("dojo.widget.*");dojo.require("dojo.widget.HtmlWidget");dojo.widget.defineWidget("dojo.widget.RadioGroup", dojo.widget.HtmlWidget, function () {this.selectedItem = null;this.items = [];this.selected = [];this.groupCssClass = "radioGroup";this.selectedCssClass = "selected";this.itemContentCssClass = "itemContent";}, {isContainer:false, templatePath:null, templateCssPath:null, postCreate:function () {this._parseStructure();dojo.html.addClass(this.domNode, this.groupCssClass);this._setupChildren();dojo.event.browser.addListener(this.domNode, "onclick", dojo.lang.hitch(this, "onSelect"));if (this.selectedItem) {this._selectItem(this.selectedItem);}}, _parseStructure:function () {if (this.domNode.tagName.toLowerCase() != "ul" && this.domNode.tagName.toLowerCase() != "ol") {dojo.raise("RadioGroup: Expected ul or ol content.");return;}this.items = [];var nl = this.domNode.getElementsByTagName("li");for (var i = 0; i < nl.length; i++) {if (nl[i].parentNode == this.domNode) {this.items.push(nl[i]);}}}, add:function (node) {if (node.parentNode != this.domNode) {this.domNode.appendChild(node);}this.items.push(node);this._setup(node);}, remove:function (node) {var idx = -1;for (var i = 0; i < this.items.length; i++) {if (this.items[i] == node) {idx = i;break;}}if (idx < 0) {return;}this.items.splice(idx, 1);node.parentNode.removeChild(node);}, clear:function () {for (var i = 0; i < this.items.length; i++) {this.domNode.removeChild(this.items[i]);}this.items = [];}, clearSelections:function () {for (var i = 0; i < this.items.length; i++) {dojo.html.removeClass(this.items[i], this.selectedCssClass);}this.selectedItem = null;}, _setup:function (node) {var span = document.createElement("span");dojo.html.disableSelection(span);dojo.html.addClass(span, this.itemContentCssClass);dojo.dom.moveChildren(node, span);node.appendChild(span);if (this.selected.length > 0) {var uid = dojo.html.getAttribute(node, "id");if (uid && uid == this.selected) {this.selectedItem = node;}}dojo.event.browser.addListener(node, "onclick", dojo.lang.hitch(this, "onItemSelect"));if (dojo.html.hasAttribute(node, "onitemselect")) {var tn = dojo.lang.nameAnonFunc(new Function(dojo.html.getAttribute(node, "onitemselect")), this);dojo.event.browser.addListener(node, "onclick", dojo.lang.hitch(this, tn));}}, _setupChildren:function () {for (var i = 0; i < this.items.length; i++) {this._setup(this.items[i]);}}, _selectItem:function (node, event, nofire) {if (this.selectedItem) {dojo.html.removeClass(this.selectedItem, this.selectedCssClass);}this.selectedItem = node;dojo.html.addClass(this.selectedItem, this.selectedCssClass);if (!dj_undef("currentTarget", event)) {return;}if (!nofire) {if (dojo.render.html.ie) {this.selectedItem.fireEvent("onclick");} else {var e = document.createEvent("MouseEvents");e.initEvent("click", true, false);this.selectedItem.dispatchEvent(e);}}}, getValue:function () {return this.selectedItem;}, onSelect:function (e) {}, onItemSelect:function (e) {if (!dj_undef("currentTarget", e)) {this._selectItem(e.currentTarget, e);}}});