Tooltip.js 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126
  1. /*
  2. Copyright (c) 2004-2012, The Dojo Foundation All Rights Reserved.
  3. Available via Academic Free License >= 2.1 OR the modified BSD license.
  4. see: http://dojotoolkit.org/license for details
  5. */
  6. if(!dojo._hasResource["dojox.drawing.ui.Tooltip"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
  7. dojo._hasResource["dojox.drawing.ui.Tooltip"] = true;
  8. dojo.provide("dojox.drawing.ui.Tooltip");
  9. dojo.require("dojox.drawing.plugins._Plugin");
  10. (function(){
  11. // summary:
  12. // Used for UI tooltips. Buttons in the toolbar.
  13. // This file is not complete.
  14. //
  15. var master = null;
  16. var MasterC = dojox.drawing.util.oo.declare(
  17. dojox.drawing.plugins._Plugin,
  18. function(options){
  19. this.createDom();
  20. },
  21. {
  22. show: function(button, text){
  23. this.domNode.innerHTML = text;
  24. var dx = 30;
  25. var px = button.data.x + button.data.width;
  26. var py = button.data.y + button.data.height;
  27. var x = px + this.mouse.origin.x + dx;
  28. var y = py + this.mouse.origin.y + dx;
  29. dojo.style(this.domNode, {
  30. display: "inline",
  31. left:x +"px",
  32. top:y+"px"
  33. });
  34. var box = dojo.marginBox(this.domNode);
  35. this.createShape(x-this.mouse.origin.x, y-this.mouse.origin.y, box.w, box.h);
  36. },
  37. createShape: function(x,y,w,h){
  38. this.balloon && this.balloon.destroy();
  39. var r = 5, x2 = x+w, y2 = y+h, points = [];
  40. var add = function(){
  41. for(var i=0;i<arguments.length;i++){
  42. points.push(arguments[i]);
  43. }
  44. };
  45. add({x:x,y:y+5},
  46. {t:"Q", x:x,y:y},
  47. {x:x+r,y:y});
  48. add({t:"L", x:x2-r,y:y});
  49. add({t:"Q", x:x2,y:y},
  50. {x:x2,y:y+r});
  51. add({t:"L", x:x2,y:y2-r});
  52. add({t:"Q", x:x2,y:y2},
  53. {x:x2-r,y:y2});
  54. add({t:"L", x:x+r,y:y2});
  55. add({t:"Q", x:x,y:y2},
  56. {x:x,y:y2-r});
  57. add({t:"L", x:x,y:y+r});
  58. this.balloon = this.drawing.addUI("path", {points:points});
  59. },
  60. createDom: function(){
  61. this.domNode = dojo.create('span', {"class":"drawingTooltip"}, document.body);
  62. dojo.style(this.domNode, {
  63. display: "none",
  64. position:"absolute"
  65. });
  66. }
  67. }
  68. );
  69. dojox.drawing.ui.Tooltip = dojox.drawing.util.oo.declare(
  70. dojox.drawing.plugins._Plugin,
  71. function(options){
  72. if(!master){
  73. master = new MasterC(options);
  74. }
  75. if(options.stencil){
  76. //todo
  77. }else if(this.button){
  78. this.connect(this.button, "onOver", this, "onOver");
  79. this.connect(this.button, "onOut", this, "onOut");
  80. }
  81. },
  82. {
  83. width:300,
  84. height:200,
  85. onOver: function(){
  86. //console.log(" tooltip over", this.data.text)
  87. master.show(this.button, this.data.text);
  88. },
  89. onOut: function(){
  90. //console.log(" tooltip out")
  91. }
  92. }
  93. );
  94. dojox.drawing.register({
  95. name:"dojox.drawing.ui.Tooltip"
  96. }, "stencil");
  97. })();
  98. }