root / trunk / web / dojo / dojox / widget / Standby.js
History | View | Annotate | Download (9.83 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["dojox.widget.Standby"]){ |
9 |
dojo._hasResource["dojox.widget.Standby"]=true; |
10 |
dojo.provide("dojox.widget.Standby");
|
11 |
dojo.require("dojo.window");
|
12 |
dojo.require("dojo.fx");
|
13 |
dojo.require("dijit._Widget");
|
14 |
dojo.require("dijit._Templated");
|
15 |
dojo.experimental("dojox.widget.Standby");
|
16 |
dojo.declare("dojox.widget.Standby",[dijit._Widget,dijit._Templated],{templateString:"<div>"+"<div style=\"display: none; opacity: 0; z-index: 9999; "+"position: absolute; cursor:wait;\" dojoAttachPoint=\"_underlayNode\"></div>"+"<img src=\"${image}\" style=\"opacity: 0; display: none; z-index: -10000; "+"position: absolute; top: 0px; left: 0px; cursor:wait;\" "+"dojoAttachPoint=\"_imageNode\">"+"<div style=\"opacity: 0; display: none; z-index: -10000; position: absolute; "+"top: 0px;\" dojoAttachPoint=\"_textNode\"></div>"+"</div>",_underlayNode:null,_imageNode:null,_textNode:null,_centerNode:null,image:dojo.moduleUrl("dojox","widget/Standby/images/loading.gif").toString(),imageText:"Please Wait...",text:"Please wait...",centerIndicator:"image",_displayed:false,_resizeCheck:null,target:"",color:"#C0C0C0",duration:500,_started:false,_parent:null,zIndex:"auto",startup:function(_1){ |
17 |
if(!this._started){ |
18 |
if(typeof this.target==="string"){ |
19 |
var w=dijit.byId(this.target); |
20 |
if(w){
|
21 |
this.target=w.domNode;
|
22 |
}else{
|
23 |
this.target=dojo.byId(this.target); |
24 |
} |
25 |
} |
26 |
if(this.text){ |
27 |
this._textNode.innerHTML=this.text; |
28 |
} |
29 |
if(this.centerIndicator==="image"){ |
30 |
this._centerNode=this._imageNode; |
31 |
dojo.attr(this._imageNode,"src",this.image); |
32 |
dojo.attr(this._imageNode,"alt",this.imageText); |
33 |
}else{
|
34 |
this._centerNode=this._textNode; |
35 |
} |
36 |
dojo.style(this._underlayNode,{display:"none",backgroundColor:this.color}); |
37 |
dojo.style(this._centerNode,"display","none"); |
38 |
this.connect(this._underlayNode,"onclick","_ignore"); |
39 |
if(this.domNode.parentNode&&this.domNode.parentNode!=dojo.body()){ |
40 |
dojo.body().appendChild(this.domNode);
|
41 |
} |
42 |
if(dojo.isIE==7){ |
43 |
this._ieFixNode=dojo.doc.createElement("div"); |
44 |
dojo.style(this._ieFixNode,{opacity:"0",zIndex:"-1000",position:"absolute",top:"-1000px"}); |
45 |
dojo.body().appendChild(this._ieFixNode);
|
46 |
} |
47 |
} |
48 |
},show:function(){ |
49 |
if(!this._displayed){ |
50 |
this._displayed=true; |
51 |
this._size();
|
52 |
this._disableOverflow();
|
53 |
this._fadeIn();
|
54 |
} |
55 |
},hide:function(){ |
56 |
if(this._displayed){ |
57 |
this._size();
|
58 |
this._fadeOut();
|
59 |
this._displayed=false; |
60 |
if(this._resizeCheck!==null){ |
61 |
clearInterval(this._resizeCheck);
|
62 |
this._resizeCheck=null; |
63 |
} |
64 |
} |
65 |
},isVisible:function(){ |
66 |
return this._displayed; |
67 |
},onShow:function(){ |
68 |
},onHide:function(){ |
69 |
},uninitialize:function(){ |
70 |
this._displayed=false; |
71 |
if(this._resizeCheck){ |
72 |
clearInterval(this._resizeCheck);
|
73 |
} |
74 |
dojo.style(this._centerNode,"display","none"); |
75 |
dojo.style(this._underlayNode,"display","none"); |
76 |
if(dojo.isIE==7){ |
77 |
dojo.body().removeChild(this._ieFixNode);
|
78 |
delete this._ieFixNode; |
79 |
} |
80 |
this.target=null; |
81 |
this._imageNode=null; |
82 |
this._textNode=null; |
83 |
this._centerNode=null; |
84 |
this.inherited(arguments); |
85 |
},_size:function(){ |
86 |
if(this._displayed){ |
87 |
var _2=dojo.attr(dojo.body(),"dir"); |
88 |
if(_2){
|
89 |
_2=_2.toLowerCase(); |
90 |
} |
91 |
var _3;
|
92 |
var _4=this._scrollerWidths(); |
93 |
var _5=this.target; |
94 |
var _6=dojo.style(this._centerNode,"display"); |
95 |
dojo.style(this._centerNode,"display","block"); |
96 |
var _7=dojo.position(_5,true); |
97 |
if(_5===dojo.body()||_5===dojo.doc){
|
98 |
_7=dojo.window.getBox(); |
99 |
_7.x=_7.l; |
100 |
_7.y=_7.t; |
101 |
} |
102 |
var _8=dojo.marginBox(this._centerNode); |
103 |
dojo.style(this._centerNode,"display",_6); |
104 |
if(this._ieFixNode){ |
105 |
_3=-this._ieFixNode.offsetTop/1000; |
106 |
_7.x=Math.floor((_7.x+0.9)/_3);
|
107 |
_7.y=Math.floor((_7.y+0.9)/_3);
|
108 |
_7.w=Math.floor((_7.w+0.9)/_3);
|
109 |
_7.h=Math.floor((_7.h+0.9)/_3);
|
110 |
} |
111 |
var zi=dojo.style(_5,"zIndex"); |
112 |
var _9=zi;
|
113 |
var _a=zi;
|
114 |
if(this.zIndex==="auto"){ |
115 |
if(zi!="auto"){ |
116 |
_9=parseInt(_9,10)+1; |
117 |
_a=parseInt(_a,10)+2; |
118 |
}else{
|
119 |
var _b=_5.parentNode;
|
120 |
var _c=-100000; |
121 |
while(_b&&_b!==dojo.body()){
|
122 |
zi=dojo.style(_b,"zIndex");
|
123 |
if(!zi||zi==="auto"){ |
124 |
_b=_b.parentNode; |
125 |
}else{
|
126 |
var _d=parseInt(zi,10); |
127 |
if(_c<_d){
|
128 |
_c=_d; |
129 |
_9=_d+1;
|
130 |
_a=_d+2;
|
131 |
} |
132 |
_b=_b.parentNode; |
133 |
} |
134 |
} |
135 |
} |
136 |
}else{
|
137 |
_9=parseInt(this.zIndex,10)+1; |
138 |
_a=parseInt(this.zIndex,10)+2; |
139 |
} |
140 |
dojo.style(this._centerNode,"zIndex",_a); |
141 |
dojo.style(this._underlayNode,"zIndex",_9); |
142 |
var pn=_5.parentNode;
|
143 |
if(pn&&pn!==dojo.body()&&_5!==dojo.body()&&_5!==dojo.doc){
|
144 |
var _e=_7.h;
|
145 |
var _f=_7.w;
|
146 |
var _10=dojo.position(pn,true); |
147 |
if(this._ieFixNode){ |
148 |
_3=-this._ieFixNode.offsetTop/1000; |
149 |
_10.x=Math.floor((_10.x+0.9)/_3);
|
150 |
_10.y=Math.floor((_10.y+0.9)/_3);
|
151 |
_10.w=Math.floor((_10.w+0.9)/_3);
|
152 |
_10.h=Math.floor((_10.h+0.9)/_3);
|
153 |
} |
154 |
_10.w-=pn.scrollHeight>pn.clientHeight&&pn.clientHeight>0?_4.v:0; |
155 |
_10.h-=pn.scrollWidth>pn.clientWidth&&pn.clientWidth>0?_4.h:0; |
156 |
if(_2==="rtl"){ |
157 |
if(dojo.isOpera){
|
158 |
_7.x+=pn.scrollHeight>pn.clientHeight&&pn.clientHeight>0?_4.v:0; |
159 |
_10.x+=pn.scrollHeight>pn.clientHeight&&pn.clientHeight>0?_4.v:0; |
160 |
}else{
|
161 |
if(dojo.isIE){
|
162 |
_10.x+=pn.scrollHeight>pn.clientHeight&&pn.clientHeight>0?_4.v:0; |
163 |
}else{
|
164 |
if(dojo.isWebKit){
|
165 |
} |
166 |
} |
167 |
} |
168 |
} |
169 |
if(_10.w<_7.w){
|
170 |
_7.w=_7.w-_10.w; |
171 |
} |
172 |
if(_10.h<_7.h){
|
173 |
_7.h=_7.h-_10.h; |
174 |
} |
175 |
var _11=_10.y;
|
176 |
var _12=_10.y+_10.h;
|
177 |
var _13=_7.y;
|
178 |
var _14=_7.y+_e;
|
179 |
var _15=_10.x;
|
180 |
var _16=_10.x+_10.w;
|
181 |
var _17=_7.x;
|
182 |
var _18=_7.x+_f;
|
183 |
var _19;
|
184 |
if(_14>_11&&_13<_11){
|
185 |
_7.y=_10.y; |
186 |
_19=_11-_13; |
187 |
var _1a=_e-_19;
|
188 |
if(_1a<_10.h){
|
189 |
_7.h=_1a; |
190 |
}else{
|
191 |
_7.h-=2*(pn.scrollWidth>pn.clientWidth&&pn.clientWidth>0?_4.h:0); |
192 |
} |
193 |
}else{
|
194 |
if(_13<_12&&_14>_12){
|
195 |
_7.h=_12-_13; |
196 |
}else{
|
197 |
if(_14<=_11||_13>=_12){
|
198 |
_7.h=0;
|
199 |
} |
200 |
} |
201 |
} |
202 |
if(_18>_15&&_17<_15){
|
203 |
_7.x=_10.x; |
204 |
_19=_15-_17; |
205 |
var _1b=_f-_19;
|
206 |
if(_1b<_10.w){
|
207 |
_7.w=_1b; |
208 |
}else{
|
209 |
_7.w-=2*(pn.scrollHeight>pn.clientHeight&&pn.clientHeight>0?_4.w:0); |
210 |
} |
211 |
}else{
|
212 |
if(_17<_16&&_18>_16){
|
213 |
_7.w=_16-_17; |
214 |
}else{
|
215 |
if(_18<=_15||_17>=_16){
|
216 |
_7.w=0;
|
217 |
} |
218 |
} |
219 |
} |
220 |
} |
221 |
if(_7.h>0&&_7.w>0){ |
222 |
dojo.style(this._underlayNode,{display:"block",width:_7.w+"px",height:_7.h+"px",top:_7.y+"px",left:_7.x+"px"}); |
223 |
var _1c=["borderRadius","borderTopLeftRadius","borderTopRightRadius","borderBottomLeftRadius","borderBottomRightRadius"]; |
224 |
this._cloneStyles(_1c);
|
225 |
if(!dojo.isIE){
|
226 |
_1c=["MozBorderRadius","MozBorderRadiusTopleft","MozBorderRadiusTopright","MozBorderRadiusBottomleft","MozBorderRadiusBottomright","WebkitBorderRadius","WebkitBorderTopLeftRadius","WebkitBorderTopRightRadius","WebkitBorderBottomLeftRadius","WebkitBorderBottomRightRadius"]; |
227 |
this._cloneStyles(_1c,this); |
228 |
} |
229 |
var _1d=(_7.h/2)-(_8.h/2); |
230 |
var _1e=(_7.w/2)-(_8.w/2); |
231 |
if(_7.h>=_8.h&&_7.w>=_8.w){
|
232 |
dojo.style(this._centerNode,{top:(_1d+_7.y)+"px",left:(_1e+_7.x)+"px",display:"block"}); |
233 |
}else{
|
234 |
dojo.style(this._centerNode,"display","none"); |
235 |
} |
236 |
}else{
|
237 |
dojo.style(this._underlayNode,"display","none"); |
238 |
dojo.style(this._centerNode,"display","none"); |
239 |
} |
240 |
if(this._resizeCheck===null){ |
241 |
var _1f=this; |
242 |
this._resizeCheck=setInterval(function(){ |
243 |
_1f._size(); |
244 |
},100);
|
245 |
} |
246 |
} |
247 |
},_cloneStyles:function(_20){ |
248 |
dojo.forEach(_20,function(_21){
|
249 |
dojo.style(this._underlayNode,_21,dojo.style(this.target,_21)); |
250 |
},this);
|
251 |
},_fadeIn:function(){ |
252 |
var _22=this; |
253 |
var _23=dojo.animateProperty({duration:_22.duration,node:_22._underlayNode,properties:{opacity:{start:0,end:0.75}}}); |
254 |
var _24=dojo.animateProperty({duration:_22.duration,node:_22._centerNode,properties:{opacity:{start:0,end:1}},onEnd:function(){ |
255 |
_22.onShow(); |
256 |
}}); |
257 |
var _25=dojo.fx.combine([_23,_24]);
|
258 |
_25.play(); |
259 |
},_fadeOut:function(){ |
260 |
var _26=this; |
261 |
var _27=dojo.animateProperty({duration:_26.duration,node:_26._underlayNode,properties:{opacity:{start:0.75,end:0}},onEnd:function(){ |
262 |
dojo.style(this.node,{"display":"none","zIndex":"-1000"}); |
263 |
}}); |
264 |
var _28=dojo.animateProperty({duration:_26.duration,node:_26._centerNode,properties:{opacity:{start:1,end:0}},onEnd:function(){ |
265 |
dojo.style(this.node,{"display":"none","zIndex":"-1000"}); |
266 |
_26.onHide(); |
267 |
_26._enableOverflow(); |
268 |
}}); |
269 |
var _29=dojo.fx.combine([_27,_28]);
|
270 |
_29.play(); |
271 |
},_ignore:function(_2a){ |
272 |
if(_2a){
|
273 |
dojo.stopEvent(_2a); |
274 |
} |
275 |
},_scrollerWidths:function(){ |
276 |
var div=dojo.doc.createElement("div"); |
277 |
dojo.style(div,{position:"absolute",opacity:0,overflow:"hidden",width:"50px",height:"50px",zIndex:"-100",top:"-200px",left:"-200px",padding:"0px",margin:"0px"}); |
278 |
var _2b=dojo.doc.createElement("div"); |
279 |
dojo.style(_2b,{width:"200px",height:"10px"}); |
280 |
div.appendChild(_2b); |
281 |
dojo.body().appendChild(div); |
282 |
var b=dojo.contentBox(div);
|
283 |
dojo.style(div,"overflow","scroll"); |
284 |
var a=dojo.contentBox(div);
|
285 |
dojo.body().removeChild(div); |
286 |
return {v:b.w-a.w,h:b.h-a.h}; |
287 |
},_setTextAttr:function(_2c){ |
288 |
this._textNode.innerHTML=_2c;
|
289 |
this.text=_2c;
|
290 |
},_setColorAttr:function(c){ |
291 |
dojo.style(this._underlayNode,"backgroundColor",c); |
292 |
this.color=c;
|
293 |
},_setImageTextAttr:function(_2d){ |
294 |
dojo.attr(this._imageNode,"alt",_2d); |
295 |
this.imageText=_2d;
|
296 |
},_setImageAttr:function(url){ |
297 |
dojo.attr(this._imageNode,"src",url); |
298 |
this.image=url;
|
299 |
},_setCenterIndicatorAttr:function(_2e){ |
300 |
this.centerIndicator=_2e;
|
301 |
if(_2e==="image"){ |
302 |
this._centerNode=this._imageNode; |
303 |
dojo.style(this._textNode,"display","none"); |
304 |
}else{
|
305 |
this._centerNode=this._textNode; |
306 |
dojo.style(this._imageNode,"display","none"); |
307 |
} |
308 |
},_disableOverflow:function(){ |
309 |
if(this.target===dojo.body()||this.target===dojo.doc){ |
310 |
this._overflowDisabled=true; |
311 |
var _2f=dojo.body();
|
312 |
if(_2f.style&&_2f.style.overflow){
|
313 |
this._oldOverflow=dojo.style(_2f,"overflow"); |
314 |
}else{
|
315 |
this._oldOverflow=""; |
316 |
} |
317 |
if(dojo.isIE&&!dojo.isQuirks){
|
318 |
if(_2f.parentNode&&_2f.parentNode.style&&_2f.parentNode.style.overflow){
|
319 |
this._oldBodyParentOverflow=_2f.parentNode.style.overflow;
|
320 |
}else{
|
321 |
try{
|
322 |
this._oldBodyParentOverflow=dojo.style(_2f.parentNode,"overflow"); |
323 |
} |
324 |
catch(e){
|
325 |
this._oldBodyParentOverflow="scroll"; |
326 |
} |
327 |
} |
328 |
dojo.style(_2f.parentNode,"overflow","hidden"); |
329 |
} |
330 |
dojo.style(_2f,"overflow","hidden"); |
331 |
} |
332 |
},_enableOverflow:function(){ |
333 |
if(this._overflowDisabled){ |
334 |
delete this._overflowDisabled; |
335 |
var _30=dojo.body();
|
336 |
if(dojo.isIE&&!dojo.isQuirks){
|
337 |
_30.parentNode.style.overflow=this._oldBodyParentOverflow;
|
338 |
delete this._oldBodyParentOverflow; |
339 |
} |
340 |
dojo.style(_30,"overflow",this._oldOverflow); |
341 |
if(dojo.isWebKit){
|
342 |
var div=dojo.create("div",{style:{height:"2px"}}); |
343 |
_30.appendChild(div); |
344 |
setTimeout(function(){
|
345 |
_30.removeChild(div); |
346 |
},0);
|
347 |
} |
348 |
delete this._oldOverflow; |
349 |
} |
350 |
}}); |
351 |
} |