RadioGroup.js
上传用户:kimgenplus
上传日期:2016-06-05
资源大小:20877k
文件大小:4k
源码类别:

OA系统

开发平台:

Java

  1. /*
  2. Copyright (c) 2004-2006, The Dojo Foundation
  3. All Rights Reserved.
  4. Licensed under the Academic Free License version 2.1 or above OR the
  5. modified BSD license. For more information on Dojo licensing, see:
  6. http://dojotoolkit.org/community/licensing.shtml
  7. */
  8. dojo.provide("dojo.widget.RadioGroup");
  9. dojo.require("dojo.lang.common");
  10. dojo.require("dojo.event.browser");
  11. dojo.require("dojo.html.selection");
  12. dojo.require("dojo.widget.*");
  13. dojo.require("dojo.widget.HtmlWidget");
  14. dojo.widget.defineWidget("dojo.widget.RadioGroup", dojo.widget.HtmlWidget, function () {
  15. this.selectedItem = null;
  16. this.items = [];
  17. this.selected = [];
  18. this.groupCssClass = "radioGroup";
  19. this.selectedCssClass = "selected";
  20. this.itemContentCssClass = "itemContent";
  21. }, {isContainer:false, templatePath:null, templateCssPath:null, postCreate:function () {
  22. this._parseStructure();
  23. dojo.html.addClass(this.domNode, this.groupCssClass);
  24. this._setupChildren();
  25. dojo.event.browser.addListener(this.domNode, "onclick", dojo.lang.hitch(this, "onSelect"));
  26. if (this.selectedItem) {
  27. this._selectItem(this.selectedItem);
  28. }
  29. }, _parseStructure:function () {
  30. if (this.domNode.tagName.toLowerCase() != "ul" && this.domNode.tagName.toLowerCase() != "ol") {
  31. dojo.raise("RadioGroup: Expected ul or ol content.");
  32. return;
  33. }
  34. this.items = [];
  35. var nl = this.domNode.getElementsByTagName("li");
  36. for (var i = 0; i < nl.length; i++) {
  37. if (nl[i].parentNode == this.domNode) {
  38. this.items.push(nl[i]);
  39. }
  40. }
  41. }, add:function (node) {
  42. if (node.parentNode != this.domNode) {
  43. this.domNode.appendChild(node);
  44. }
  45. this.items.push(node);
  46. this._setup(node);
  47. }, remove:function (node) {
  48. var idx = -1;
  49. for (var i = 0; i < this.items.length; i++) {
  50. if (this.items[i] == node) {
  51. idx = i;
  52. break;
  53. }
  54. }
  55. if (idx < 0) {
  56. return;
  57. }
  58. this.items.splice(idx, 1);
  59. node.parentNode.removeChild(node);
  60. }, clear:function () {
  61. for (var i = 0; i < this.items.length; i++) {
  62. this.domNode.removeChild(this.items[i]);
  63. }
  64. this.items = [];
  65. }, clearSelections:function () {
  66. for (var i = 0; i < this.items.length; i++) {
  67. dojo.html.removeClass(this.items[i], this.selectedCssClass);
  68. }
  69. this.selectedItem = null;
  70. }, _setup:function (node) {
  71. var span = document.createElement("span");
  72. dojo.html.disableSelection(span);
  73. dojo.html.addClass(span, this.itemContentCssClass);
  74. dojo.dom.moveChildren(node, span);
  75. node.appendChild(span);
  76. if (this.selected.length > 0) {
  77. var uid = dojo.html.getAttribute(node, "id");
  78. if (uid && uid == this.selected) {
  79. this.selectedItem = node;
  80. }
  81. }
  82. dojo.event.browser.addListener(node, "onclick", dojo.lang.hitch(this, "onItemSelect"));
  83. if (dojo.html.hasAttribute(node, "onitemselect")) {
  84. var tn = dojo.lang.nameAnonFunc(new Function(dojo.html.getAttribute(node, "onitemselect")), this);
  85. dojo.event.browser.addListener(node, "onclick", dojo.lang.hitch(this, tn));
  86. }
  87. }, _setupChildren:function () {
  88. for (var i = 0; i < this.items.length; i++) {
  89. this._setup(this.items[i]);
  90. }
  91. }, _selectItem:function (node, event, nofire) {
  92. if (this.selectedItem) {
  93. dojo.html.removeClass(this.selectedItem, this.selectedCssClass);
  94. }
  95. this.selectedItem = node;
  96. dojo.html.addClass(this.selectedItem, this.selectedCssClass);
  97. if (!dj_undef("currentTarget", event)) {
  98. return;
  99. }
  100. if (!nofire) {
  101. if (dojo.render.html.ie) {
  102. this.selectedItem.fireEvent("onclick");
  103. } else {
  104. var e = document.createEvent("MouseEvents");
  105. e.initEvent("click", true, false);
  106. this.selectedItem.dispatchEvent(e);
  107. }
  108. }
  109. }, getValue:function () {
  110. return this.selectedItem;
  111. }, onSelect:function (e) {
  112. }, onItemSelect:function (e) {
  113. if (!dj_undef("currentTarget", e)) {
  114. this._selectItem(e.currentTarget, e);
  115. }
  116. }});