root / trunk / web / dojo / dojox / widget / Standby.js
History | View | Annotate | Download (9.83 KB)
1 | 9 | andrej.cim | /*
|
---|---|---|---|
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 | } |