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

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.Button");
  9. dojo.require("dojo.lang.extras");
  10. dojo.require("dojo.html.*");
  11. dojo.require("dojo.html.selection");
  12. dojo.require("dojo.widget.*");
  13. dojo.widget.defineWidget("dojo.widget.Button", dojo.widget.HtmlWidget, {isContainer:true, caption:"", templateString:"<div dojoAttachPoint="buttonNode" class="dojoButton" style="position:relative;" dojoAttachEvent="onMouseOver; onMouseOut; onMouseDown; onMouseUp; onClick:buttonClick; onKey:onKey; onFocus;">n  <div class="dojoButtonContents" align=center dojoAttachPoint="containerNode" style="position:absolute;z-index:2;"></div>n  <img dojoAttachPoint="leftImage" style="position:absolute;left:0px;">n  <img dojoAttachPoint="centerImage" style="position:absolute;z-index:1;">n  <img dojoAttachPoint="rightImage" style="position:absolute;top:0px;right:0px;">n</div>n", templateCssString:"/* ---- button --- */n.dojoButton {ntpadding: 0 0 0 0;ntfont-size: 8pt;ntwhite-space: nowrap;ntcursor: pointer;ntfont-family: Myriad, Tahoma, Verdana, sans-serif;n}nn.dojoButton .dojoButtonContents {ntpadding: 2px 2px 2px 2px;nttext-align: center;tt/* if icon and label are split across two lines, center icon */ntcolor: white;n}nn.dojoButtonLeftPart .dojoButtonContents {ntpadding-right: 8px;n}nn.dojoButtonDisabled {ntcursor: url("images/no.gif"), default;n}nnn.dojoButtonContents img {ntvertical-align: middle;t/* if icon and label are on same line, center them */n}nn/* -------- colors ------------ */nn.dojoButtonHover .dojoButtonContents {n}nn.dojoButtonDepressed .dojoButtonContents {ntcolor: #293a4b;n}nn.dojoButtonDisabled .dojoButtonContents {ntcolor: #aaa;n}nnn/* ---------- drop down button specific ---------- */nn/* border between label and arrow (for drop down buttons */n.dojoButton .border {ntwidth: 1px;ntbackground: gray;n}nn/* button arrow */n.dojoButton .downArrow {ntpadding-left: 10px;nttext-align: center;n}nn.dojoButton.disabled .downArrow {ntcursor : default;n}n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/ButtonTemplate.css"), inactiveImg:"templates/images/soriaButton-", activeImg:"templates/images/soriaActive-", pressedImg:"templates/images/soriaPressed-", disabledImg:"templates/images/soriaDisabled-", width2height:1 / 3, fillInTemplate:function () {
  14. if (this.caption) {
  15. this.containerNode.appendChild(document.createTextNode(this.caption));
  16. }
  17. dojo.html.disableSelection(this.containerNode);
  18. }, postCreate:function () {
  19. this._sizeMyself();
  20. }, _sizeMyself:function () {
  21. if (this.domNode.parentNode) {
  22. var placeHolder = document.createElement("span");
  23. dojo.html.insertBefore(placeHolder, this.domNode);
  24. }
  25. dojo.body().appendChild(this.domNode);
  26. this._sizeMyselfHelper();
  27. if (placeHolder) {
  28. dojo.html.insertBefore(this.domNode, placeHolder);
  29. dojo.html.removeNode(placeHolder);
  30. }
  31. }, _sizeMyselfHelper:function () {
  32. var mb = dojo.html.getMarginBox(this.containerNode);
  33. this.height = mb.height;
  34. this.containerWidth = mb.width;
  35. var endWidth = this.height * this.width2height;
  36. this.containerNode.style.left = endWidth + "px";
  37. this.leftImage.height = this.rightImage.height = this.centerImage.height = this.height;
  38. this.leftImage.width = this.rightImage.width = endWidth + 1;
  39. this.centerImage.width = this.containerWidth;
  40. this.centerImage.style.left = endWidth + "px";
  41. this._setImage(this.disabled ? this.disabledImg : this.inactiveImg);
  42. if (this.disabled) {
  43. dojo.html.prependClass(this.domNode, "dojoButtonDisabled");
  44. this.domNode.removeAttribute("tabIndex");
  45. dojo.widget.wai.setAttr(this.domNode, "waiState", "disabled", true);
  46. } else {
  47. dojo.html.removeClass(this.domNode, "dojoButtonDisabled");
  48. this.domNode.setAttribute("tabIndex", "0");
  49. dojo.widget.wai.setAttr(this.domNode, "waiState", "disabled", false);
  50. }
  51. this.domNode.style.height = this.height + "px";
  52. this.domNode.style.width = (this.containerWidth + 2 * endWidth) + "px";
  53. }, onMouseOver:function (e) {
  54. if (this.disabled) {
  55. return;
  56. }
  57. if (!dojo.html.hasClass(this.buttonNode, "dojoButtonHover")) {
  58. dojo.html.prependClass(this.buttonNode, "dojoButtonHover");
  59. }
  60. this._setImage(this.activeImg);
  61. }, onMouseDown:function (e) {
  62. if (this.disabled) {
  63. return;
  64. }
  65. dojo.html.prependClass(this.buttonNode, "dojoButtonDepressed");
  66. dojo.html.removeClass(this.buttonNode, "dojoButtonHover");
  67. this._setImage(this.pressedImg);
  68. }, onMouseUp:function (e) {
  69. if (this.disabled) {
  70. return;
  71. }
  72. dojo.html.prependClass(this.buttonNode, "dojoButtonHover");
  73. dojo.html.removeClass(this.buttonNode, "dojoButtonDepressed");
  74. this._setImage(this.activeImg);
  75. }, onMouseOut:function (e) {
  76. if (this.disabled) {
  77. return;
  78. }
  79. if (e.toElement && dojo.html.isDescendantOf(e.toElement, this.buttonNode)) {
  80. return;
  81. }
  82. dojo.html.removeClass(this.buttonNode, "dojoButtonHover");
  83. dojo.html.removeClass(this.buttonNode, "dojoButtonDepressed");
  84. this._setImage(this.inactiveImg);
  85. }, onKey:function (e) {
  86. if (!e.key) {
  87. return;
  88. }
  89. var menu = dojo.widget.getWidgetById(this.menuId);
  90. if (e.key == e.KEY_ENTER || e.key == " ") {
  91. this.onMouseDown(e);
  92. this.buttonClick(e);
  93. dojo.lang.setTimeout(this, "onMouseUp", 75, e);
  94. dojo.event.browser.stopEvent(e);
  95. }
  96. if (menu && menu.isShowingNow && e.key == e.KEY_DOWN_ARROW) {
  97. dojo.event.disconnect(this.domNode, "onblur", this, "onBlur");
  98. }
  99. }, onFocus:function (e) {
  100. var menu = dojo.widget.getWidgetById(this.menuId);
  101. if (menu) {
  102. dojo.event.connectOnce(this.domNode, "onblur", this, "onBlur");
  103. }
  104. }, onBlur:function (e) {
  105. var menu = dojo.widget.getWidgetById(this.menuId);
  106. if (!menu) {
  107. return;
  108. }
  109. if (menu.close && menu.isShowingNow) {
  110. menu.close();
  111. }
  112. }, buttonClick:function (e) {
  113. if (!this.disabled) {
  114. try {
  115. this.domNode.focus();
  116. }
  117. catch (e2) {
  118. }
  119. this.onClick(e);
  120. }
  121. }, onClick:function (e) {
  122. }, _setImage:function (prefix) {
  123. this.leftImage.src = dojo.uri.moduleUri("dojo.widget", prefix + "l.gif");
  124. this.centerImage.src = dojo.uri.moduleUri("dojo.widget", prefix + "c.gif");
  125. this.rightImage.src = dojo.uri.moduleUri("dojo.widget", prefix + "r.gif");
  126. }, _toggleMenu:function (menuId) {
  127. var menu = dojo.widget.getWidgetById(menuId);
  128. if (!menu) {
  129. return;
  130. }
  131. if (menu.open && !menu.isShowingNow) {
  132. var pos = dojo.html.getAbsolutePosition(this.domNode, false);
  133. menu.open(pos.x, pos.y + this.height, this);
  134. dojo.event.disconnect(this.domNode, "onblur", this, "onBlur");
  135. } else {
  136. if (menu.close && menu.isShowingNow) {
  137. menu.close();
  138. } else {
  139. menu.toggle();
  140. }
  141. }
  142. }, setCaption:function (content) {
  143. this.caption = content;
  144. this.containerNode.innerHTML = content;
  145. this._sizeMyself();
  146. }, setDisabled:function (disabled) {
  147. this.disabled = disabled;
  148. this._sizeMyself();
  149. }});
  150. dojo.widget.defineWidget("dojo.widget.DropDownButton", dojo.widget.Button, {menuId:"", downArrow:"templates/images/whiteDownArrow.gif", disabledDownArrow:"templates/images/whiteDownArrow.gif", fillInTemplate:function () {
  151. dojo.widget.DropDownButton.superclass.fillInTemplate.apply(this, arguments);
  152. this.arrow = document.createElement("img");
  153. dojo.html.setClass(this.arrow, "downArrow");
  154. dojo.widget.wai.setAttr(this.domNode, "waiState", "haspopup", this.menuId);
  155. }, _sizeMyselfHelper:function () {
  156. this.arrow.src = dojo.uri.moduleUri("dojo.widget", this.disabled ? this.disabledDownArrow : this.downArrow);
  157. this.containerNode.appendChild(this.arrow);
  158. dojo.widget.DropDownButton.superclass._sizeMyselfHelper.call(this);
  159. }, onClick:function (e) {
  160. this._toggleMenu(this.menuId);
  161. }});
  162. dojo.widget.defineWidget("dojo.widget.ComboButton", dojo.widget.Button, {menuId:"", templateString:"<div class="dojoButton" style="position:relative;top:0px;left:0px; text-align:none;" dojoAttachEvent="onKey;onFocus">nnt<div dojoAttachPoint="buttonNode" class="dojoButtonLeftPart" style="position:absolute;left:0px;top:0px;"nttdojoAttachEvent="onMouseOver; onMouseOut; onMouseDown; onMouseUp; onClick:buttonClick;">ntt<div class="dojoButtonContents" dojoAttachPoint="containerNode" style="position:absolute;top:0px;right:0px;z-index:2;"></div>ntt<img dojoAttachPoint="leftImage" style="position:absolute;left:0px;top:0px;">ntt<img dojoAttachPoint="centerImage" style="position:absolute;right:0px;top:0px;z-index:1;">nt</div>nnt<div dojoAttachPoint="rightPart" class="dojoButtonRightPart" style="position:absolute;top:0px;right:0px;"nttdojoAttachEvent="onMouseOver:rightOver; onMouseOut:rightOut; onMouseDown:rightDown; onMouseUp:rightUp; onClick:rightClick;">ntt<img dojoAttachPoint="arrowBackgroundImage" style="position:absolute;top:0px;left:0px;z-index:1;">ntt<img src="${dojoWidgetModuleUri}templates/images/whiteDownArrow.gif"ntt  ttstyle="z-index:2;position:absolute;left:3px;top:50%;">ntt<img dojoAttachPoint="rightImage" style="position:absolute;top:0px;right:0px;">nt</div>nn</div>n", splitWidth:2, arrowWidth:5, _sizeMyselfHelper:function (e) {
  163. var mb = dojo.html.getMarginBox(this.containerNode);
  164. this.height = mb.height;
  165. this.containerWidth = mb.width;
  166. var endWidth = this.height / 3;
  167. if (this.disabled) {
  168. dojo.widget.wai.setAttr(this.domNode, "waiState", "disabled", true);
  169. this.domNode.removeAttribute("tabIndex");
  170. } else {
  171. dojo.widget.wai.setAttr(this.domNode, "waiState", "disabled", false);
  172. this.domNode.setAttribute("tabIndex", "0");
  173. }
  174. this.leftImage.height = this.rightImage.height = this.centerImage.height = this.arrowBackgroundImage.height = this.height;
  175. this.leftImage.width = endWidth + 1;
  176. this.centerImage.width = this.containerWidth;
  177. this.buttonNode.style.height = this.height + "px";
  178. this.buttonNode.style.width = endWidth + this.containerWidth + "px";
  179. this._setImage(this.disabled ? this.disabledImg : this.inactiveImg);
  180. this.arrowBackgroundImage.width = this.arrowWidth;
  181. this.rightImage.width = endWidth + 1;
  182. this.rightPart.style.height = this.height + "px";
  183. this.rightPart.style.width = this.arrowWidth + endWidth + "px";
  184. this._setImageR(this.disabled ? this.disabledImg : this.inactiveImg);
  185. this.domNode.style.height = this.height + "px";
  186. var totalWidth = this.containerWidth + this.splitWidth + this.arrowWidth + 2 * endWidth;
  187. this.domNode.style.width = totalWidth + "px";
  188. }, _setImage:function (prefix) {
  189. this.leftImage.src = dojo.uri.moduleUri("dojo.widget", prefix + "l.gif");
  190. this.centerImage.src = dojo.uri.moduleUri("dojo.widget", prefix + "c.gif");
  191. }, rightOver:function (e) {
  192. if (this.disabled) {
  193. return;
  194. }
  195. dojo.html.prependClass(this.rightPart, "dojoButtonHover");
  196. this._setImageR(this.activeImg);
  197. }, rightDown:function (e) {
  198. if (this.disabled) {
  199. return;
  200. }
  201. dojo.html.prependClass(this.rightPart, "dojoButtonDepressed");
  202. dojo.html.removeClass(this.rightPart, "dojoButtonHover");
  203. this._setImageR(this.pressedImg);
  204. }, rightUp:function (e) {
  205. if (this.disabled) {
  206. return;
  207. }
  208. dojo.html.prependClass(this.rightPart, "dojoButtonHover");
  209. dojo.html.removeClass(this.rightPart, "dojoButtonDepressed");
  210. this._setImageR(this.activeImg);
  211. }, rightOut:function (e) {
  212. if (this.disabled) {
  213. return;
  214. }
  215. dojo.html.removeClass(this.rightPart, "dojoButtonHover");
  216. dojo.html.removeClass(this.rightPart, "dojoButtonDepressed");
  217. this._setImageR(this.inactiveImg);
  218. }, rightClick:function (e) {
  219. if (this.disabled) {
  220. return;
  221. }
  222. try {
  223. this.domNode.focus();
  224. }
  225. catch (e2) {
  226. }
  227. this._toggleMenu(this.menuId);
  228. }, _setImageR:function (prefix) {
  229. this.arrowBackgroundImage.src = dojo.uri.moduleUri("dojo.widget", prefix + "c.gif");
  230. this.rightImage.src = dojo.uri.moduleUri("dojo.widget", prefix + "r.gif");
  231. }, onKey:function (e) {
  232. if (!e.key) {
  233. return;
  234. }
  235. var menu = dojo.widget.getWidgetById(this.menuId);
  236. if (e.key == e.KEY_ENTER || e.key == " ") {
  237. this.onMouseDown(e);
  238. this.buttonClick(e);
  239. dojo.lang.setTimeout(this, "onMouseUp", 75, e);
  240. dojo.event.browser.stopEvent(e);
  241. } else {
  242. if (e.key == e.KEY_DOWN_ARROW && e.altKey) {
  243. this.rightDown(e);
  244. this.rightClick(e);
  245. dojo.lang.setTimeout(this, "rightUp", 75, e);
  246. dojo.event.browser.stopEvent(e);
  247. } else {
  248. if (menu && menu.isShowingNow && e.key == e.KEY_DOWN_ARROW) {
  249. dojo.event.disconnect(this.domNode, "onblur", this, "onBlur");
  250. }
  251. }
  252. }
  253. }});