Project

General

Profile

Statistics
| Revision:

root / trunk / web / dojo / dijit / Tooltip.js @ 11

History | View | Annotate | Download (4.85 KB)

1
/*
2
        Copyright (c) 2004-2010, 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

    
7

    
8
if(!dojo._hasResource["dijit.Tooltip"]){
9
dojo._hasResource["dijit.Tooltip"]=true;
10
dojo.provide("dijit.Tooltip");
11
dojo.require("dijit._Widget");
12
dojo.require("dijit._Templated");
13
dojo.declare("dijit._MasterTooltip",[dijit._Widget,dijit._Templated],{duration:dijit.defaultDuration,templateString:dojo.cache("dijit","templates/Tooltip.html","<div class=\"dijitTooltip dijitTooltipLeft\" id=\"dojoTooltip\">\n\t<div class=\"dijitTooltipContainer dijitTooltipContents\" dojoAttachPoint=\"containerNode\" waiRole='alert'></div>\n\t<div class=\"dijitTooltipConnector\"></div>\n</div>\n"),postCreate:function(){
14
dojo.body().appendChild(this.domNode);
15
this.bgIframe=new dijit.BackgroundIframe(this.domNode);
16
this.fadeIn=dojo.fadeIn({node:this.domNode,duration:this.duration,onEnd:dojo.hitch(this,"_onShow")});
17
this.fadeOut=dojo.fadeOut({node:this.domNode,duration:this.duration,onEnd:dojo.hitch(this,"_onHide")});
18
},show:function(_1,_2,_3,_4){
19
if(this.aroundNode&&this.aroundNode===_2){
20
return;
21
}
22
if(this.fadeOut.status()=="playing"){
23
this._onDeck=arguments;
24
return;
25
}
26
this.containerNode.innerHTML=_1;
27
var _5=dijit.placeOnScreenAroundElement(this.domNode,_2,dijit.getPopupAroundAlignment((_3&&_3.length)?_3:dijit.Tooltip.defaultPosition,!_4),dojo.hitch(this,"orient"));
28
dojo.style(this.domNode,"opacity",0);
29
this.fadeIn.play();
30
this.isShowingNow=true;
31
this.aroundNode=_2;
32
},orient:function(_6,_7,_8){
33
_6.className="dijitTooltip "+{"BL-TL":"dijitTooltipBelow dijitTooltipABLeft","TL-BL":"dijitTooltipAbove dijitTooltipABLeft","BR-TR":"dijitTooltipBelow dijitTooltipABRight","TR-BR":"dijitTooltipAbove dijitTooltipABRight","BR-BL":"dijitTooltipRight","BL-BR":"dijitTooltipLeft"}[_7+"-"+_8];
34
},_onShow:function(){
35
if(dojo.isIE){
36
this.domNode.style.filter="";
37
}
38
},hide:function(_9){
39
if(this._onDeck&&this._onDeck[1]==_9){
40
this._onDeck=null;
41
}else{
42
if(this.aroundNode===_9){
43
this.fadeIn.stop();
44
this.isShowingNow=false;
45
this.aroundNode=null;
46
this.fadeOut.play();
47
}else{
48
}
49
}
50
},_onHide:function(){
51
this.domNode.style.cssText="";
52
this.containerNode.innerHTML="";
53
if(this._onDeck){
54
this.show.apply(this,this._onDeck);
55
this._onDeck=null;
56
}
57
}});
58
dijit.showTooltip=function(_a,_b,_c,_d){
59
if(!dijit._masterTT){
60
dijit._masterTT=new dijit._MasterTooltip();
61
}
62
return dijit._masterTT.show(_a,_b,_c,_d);
63
};
64
dijit.hideTooltip=function(_e){
65
if(!dijit._masterTT){
66
dijit._masterTT=new dijit._MasterTooltip();
67
}
68
return dijit._masterTT.hide(_e);
69
};
70
dojo.declare("dijit.Tooltip",dijit._Widget,{label:"",showDelay:400,connectId:[],position:[],constructor:function(){
71
this._nodeConnectionsById={};
72
},_setConnectIdAttr:function(_f){
73
for(var _10 in this._nodeConnectionsById){
74
this.removeTarget(_10);
75
}
76
dojo.forEach(dojo.isArrayLike(_f)?_f:[_f],this.addTarget,this);
77
},_getConnectIdAttr:function(){
78
var ary=[];
79
for(var id in this._nodeConnectionsById){
80
ary.push(id);
81
}
82
return ary;
83
},addTarget:function(id){
84
var _11=dojo.byId(id);
85
if(!_11){
86
return;
87
}
88
if(_11.id in this._nodeConnectionsById){
89
return;
90
}
91
this._nodeConnectionsById[_11.id]=[this.connect(_11,"onmouseenter","_onTargetMouseEnter"),this.connect(_11,"onmouseleave","_onTargetMouseLeave"),this.connect(_11,"onfocus","_onTargetFocus"),this.connect(_11,"onblur","_onTargetBlur")];
92
},removeTarget:function(_12){
93
var id=_12.id||_12;
94
if(id in this._nodeConnectionsById){
95
dojo.forEach(this._nodeConnectionsById[id],this.disconnect,this);
96
delete this._nodeConnectionsById[id];
97
}
98
},postCreate:function(){
99
dojo.addClass(this.domNode,"dijitTooltipData");
100
},startup:function(){
101
this.inherited(arguments);
102
var ids=this.connectId;
103
dojo.forEach(dojo.isArrayLike(ids)?ids:[ids],this.addTarget,this);
104
},_onTargetMouseEnter:function(e){
105
this._onHover(e);
106
},_onTargetMouseLeave:function(e){
107
this._onUnHover(e);
108
},_onTargetFocus:function(e){
109
this._focus=true;
110
this._onHover(e);
111
},_onTargetBlur:function(e){
112
this._focus=false;
113
this._onUnHover(e);
114
},_onHover:function(e){
115
if(!this._showTimer){
116
var _13=e.target;
117
this._showTimer=setTimeout(dojo.hitch(this,function(){
118
this.open(_13);
119
}),this.showDelay);
120
}
121
},_onUnHover:function(e){
122
if(this._focus){
123
return;
124
}
125
if(this._showTimer){
126
clearTimeout(this._showTimer);
127
delete this._showTimer;
128
}
129
this.close();
130
},open:function(_14){
131
if(this._showTimer){
132
clearTimeout(this._showTimer);
133
delete this._showTimer;
134
}
135
dijit.showTooltip(this.label||this.domNode.innerHTML,_14,this.position,!this.isLeftToRight());
136
this._connectNode=_14;
137
this.onShow(_14,this.position);
138
},close:function(){
139
if(this._connectNode){
140
dijit.hideTooltip(this._connectNode);
141
delete this._connectNode;
142
this.onHide();
143
}
144
if(this._showTimer){
145
clearTimeout(this._showTimer);
146
delete this._showTimer;
147
}
148
},onShow:function(_15,_16){
149
},onHide:function(){
150
},uninitialize:function(){
151
this.close();
152
this.inherited(arguments);
153
}});
154
dijit.Tooltip.defaultPosition=["after","before"];
155
}