Project

General

Profile

Statistics
| Revision:

root / trunk / web / dojo / dojox / layout / ScrollPane.js @ 9

History | View | Annotate | Download (2.89 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.layout.ScrollPane"]){
9
dojo._hasResource["dojox.layout.ScrollPane"]=true;
10
dojo.provide("dojox.layout.ScrollPane");
11
dojo.experimental("dojox.layout.ScrollPane");
12
dojo.require("dijit.layout.ContentPane");
13
dojo.require("dijit._Templated");
14
dojo.declare("dojox.layout.ScrollPane",[dijit.layout.ContentPane,dijit._Templated],{_line:null,_lo:null,_offset:15,orientation:"vertical",autoHide:true,templateString:dojo.cache("dojox.layout","resources/ScrollPane.html","<div class=\"dojoxScrollWindow\" dojoAttachEvent=\"onmouseenter: _enter, onmouseleave: _leave\">\n    <div class=\"dojoxScrollWrapper\" style=\"${style}\" dojoAttachPoint=\"wrapper\" dojoAttachEvent=\"onmousemove: _calc\">\n\t<div class=\"dojoxScrollPane\" dojoAttachPoint=\"containerNode\"></div>\n    </div>\n    <div dojoAttachPoint=\"helper\" class=\"dojoxScrollHelper\"><span class=\"helperInner\">|</span></div>\n</div>\n"),resize:function(_1){
15
if(_1){
16
if(_1.h){
17
dojo.style(this.domNode,"height",_1.h+"px");
18
}
19
if(_1.w){
20
dojo.style(this.domNode,"width",_1.w+"px");
21
}
22
}
23
var _2=this._dir,_3=this._vertical,_4=this.containerNode[(_3?"scrollHeight":"scrollWidth")];
24
dojo.style(this.wrapper,this._dir,this.domNode.style[this._dir]);
25
this._lo=dojo.coords(this.wrapper,true);
26
this._size=Math.max(0,_4-this._lo[(_3?"h":"w")]);
27
if(!this._size){
28
this.helper.style.display="none";
29
this.wrapper[this._scroll]=0;
30
return;
31
}else{
32
this.helper.style.display="";
33
}
34
this._line=new dojo._Line(0-this._offset,this._size+(this._offset*2));
35
var u=this._lo[(_3?"h":"w")],r=Math.min(1,u/_4),s=u*r,c=Math.floor(u-(u*r));
36
this._helpLine=new dojo._Line(0,c);
37
dojo.style(this.helper,_2,Math.floor(s)+"px");
38
},postCreate:function(){
39
this.inherited(arguments);
40
if(this.autoHide){
41
this._showAnim=dojo._fade({node:this.helper,end:0.5,duration:350});
42
this._hideAnim=dojo.fadeOut({node:this.helper,duration:750});
43
}
44
this._vertical=(this.orientation=="vertical");
45
if(!this._vertical){
46
dojo.addClass(this.containerNode,"dijitInline");
47
this._dir="width";
48
this._edge="left";
49
this._scroll="scrollLeft";
50
}else{
51
this._dir="height";
52
this._edge="top";
53
this._scroll="scrollTop";
54
}
55
if(this._hideAnim){
56
this._hideAnim.play();
57
}
58
dojo.style(this.wrapper,"overflow","hidden");
59
},_set:function(n){
60
if(!this._size){
61
return;
62
}
63
this.wrapper[this._scroll]=Math.floor(this._line.getValue(n));
64
dojo.style(this.helper,this._edge,Math.floor(this._helpLine.getValue(n))+"px");
65
},_calc:function(e){
66
if(!this._lo){
67
this.resize();
68
}
69
this._set(this._vertical?((e.pageY-this._lo.y)/this._lo.h):((e.pageX-this._lo.x)/this._lo.w));
70
},_enter:function(e){
71
if(this._hideAnim){
72
if(this._hideAnim.status()=="playing"){
73
this._hideAnim.stop();
74
}
75
this._showAnim.play();
76
}
77
},_leave:function(e){
78
if(this._hideAnim){
79
this._hideAnim.play();
80
}
81
}});
82
}