Tooltip.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.Tooltip");
  9. dojo.require("dojo.widget.ContentPane");
  10. dojo.require("dojo.widget.PopupContainer");
  11. dojo.require("dojo.uri.Uri");
  12. dojo.require("dojo.widget.*");
  13. dojo.require("dojo.event.*");
  14. dojo.require("dojo.html.style");
  15. dojo.require("dojo.html.util");
  16. dojo.widget.defineWidget("dojo.widget.Tooltip", [dojo.widget.ContentPane, dojo.widget.PopupContainerBase], {caption:"", showDelay:500, hideDelay:100, connectId:"", templateCssString:".dojoTooltip {ntborder: solid black 1px;ntbackground: beige;ntcolor: black;ntposition: absolute;ntfont-size: small;ntpadding: 2px 2px 2px 2px;ntz-index: 10;ntdisplay: block;n}n", templateCssPath:dojo.uri.moduleUri("dojo.widget", "templates/TooltipTemplate.css"), fillInTemplate:function (args, frag) {
  17. if (this.caption != "") {
  18. this.domNode.appendChild(document.createTextNode(this.caption));
  19. }
  20. this._connectNode = dojo.byId(this.connectId);
  21. dojo.widget.Tooltip.superclass.fillInTemplate.call(this, args, frag);
  22. this.addOnLoad(this, "_loadedContent");
  23. dojo.html.addClass(this.domNode, "dojoTooltip");
  24. var source = this.getFragNodeRef(frag);
  25. dojo.html.copyStyle(this.domNode, source);
  26. this.applyPopupBasicStyle();
  27. }, postCreate:function (args, frag) {
  28. dojo.event.connect(this._connectNode, "onmouseover", this, "_onMouseOver");
  29. dojo.widget.Tooltip.superclass.postCreate.call(this, args, frag);
  30. }, _onMouseOver:function (e) {
  31. this._mouse = {x:e.pageX, y:e.pageY};
  32. if (!this._tracking) {
  33. dojo.event.connect(document.documentElement, "onmousemove", this, "_onMouseMove");
  34. this._tracking = true;
  35. }
  36. this._onHover(e);
  37. }, _onMouseMove:function (e) {
  38. this._mouse = {x:e.pageX, y:e.pageY};
  39. if (dojo.html.overElement(this._connectNode, e) || dojo.html.overElement(this.domNode, e)) {
  40. this._onHover(e);
  41. } else {
  42. this._onUnHover(e);
  43. }
  44. }, _onHover:function (e) {
  45. if (this._hover) {
  46. return;
  47. }
  48. this._hover = true;
  49. if (this._hideTimer) {
  50. clearTimeout(this._hideTimer);
  51. delete this._hideTimer;
  52. }
  53. if (!this.isShowingNow && !this._showTimer) {
  54. this._showTimer = setTimeout(dojo.lang.hitch(this, "open"), this.showDelay);
  55. }
  56. }, _onUnHover:function (e) {
  57. if (!this._hover) {
  58. return;
  59. }
  60. this._hover = false;
  61. if (this._showTimer) {
  62. clearTimeout(this._showTimer);
  63. delete this._showTimer;
  64. }
  65. if (this.isShowingNow && !this._hideTimer) {
  66. this._hideTimer = setTimeout(dojo.lang.hitch(this, "close"), this.hideDelay);
  67. }
  68. if (!this.isShowingNow) {
  69. dojo.event.disconnect(document.documentElement, "onmousemove", this, "_onMouseMove");
  70. this._tracking = false;
  71. }
  72. }, open:function () {
  73. if (this.isShowingNow) {
  74. return;
  75. }
  76. dojo.widget.PopupContainerBase.prototype.open.call(this, this._mouse.x, this._mouse.y, null, [this._mouse.x, this._mouse.y], "TL,TR,BL,BR", [10, 15]);
  77. }, close:function () {
  78. if (this.isShowingNow) {
  79. if (this._showTimer) {
  80. clearTimeout(this._showTimer);
  81. delete this._showTimer;
  82. }
  83. if (this._hideTimer) {
  84. clearTimeout(this._hideTimer);
  85. delete this._hideTimer;
  86. }
  87. dojo.event.disconnect(document.documentElement, "onmousemove", this, "_onMouseMove");
  88. this._tracking = false;
  89. dojo.widget.PopupContainerBase.prototype.close.call(this);
  90. }
  91. }, _position:function () {
  92. this.move(this._mouse.x, this._mouse.y, [10, 15], "TL,TR,BL,BR");
  93. }, _loadedContent:function () {
  94. if (this.isShowingNow) {
  95. this._position();
  96. }
  97. }, checkSize:function () {
  98. }, uninitialize:function () {
  99. this.close();
  100. dojo.event.disconnect(this._connectNode, "onmouseover", this, "_onMouseOver");
  101. }});