Project

General

Profile

Statistics
| Revision:

root / trunk / web / dojo / dojox / drawing / ui / dom / Pan.js

History | View | Annotate | Download (3.45 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.drawing.ui.dom.Pan"]){
9
dojo._hasResource["dojox.drawing.ui.dom.Pan"]=true;
10
dojo.provide("dojox.drawing.ui.dom.Pan");
11
dojo.require("dojox.drawing.plugins._Plugin");
12
dojo.deprecated("dojox.drawing.ui.dom.Pan","It may not even make it to the 1.4 release.",1.4);
13
dojox.drawing.ui.dom.Pan=dojox.drawing.util.oo.declare(dojox.drawing.plugins._Plugin,function(_1){
14
this.domNode=_1.node;
15
var _2;
16
dojo.connect(this.domNode,"click",this,"onSetPan");
17
dojo.connect(this.keys,"onKeyUp",this,"onKeyUp");
18
dojo.connect(this.keys,"onKeyDown",this,"onKeyDown");
19
dojo.connect(this.anchors,"onAnchorUp",this,"checkBounds");
20
dojo.connect(this.stencils,"register",this,"checkBounds");
21
dojo.connect(this.canvas,"resize",this,"checkBounds");
22
dojo.connect(this.canvas,"setZoom",this,"checkBounds");
23
dojo.connect(this.canvas,"onScroll",this,function(){
24
if(this._blockScroll){
25
this._blockScroll=false;
26
return;
27
}
28
_2&&clearTimeout(_2);
29
_2=setTimeout(dojo.hitch(this,"checkBounds"),200);
30
});
31
this._mouseHandle=this.mouse.register(this);
32
},{selected:false,type:"dojox.drawing.ui.dom.Pan",onKeyUp:function(_3){
33
if(_3.keyCode==32){
34
this.onSetPan(false);
35
}
36
},onKeyDown:function(_4){
37
if(_4.keyCode==32){
38
this.onSetPan(true);
39
}
40
},onSetPan:function(_5){
41
if(_5===true||_5===false){
42
this.selected=!_5;
43
}
44
if(this.selected){
45
this.selected=false;
46
dojo.removeClass(this.domNode,"selected");
47
}else{
48
this.selected=true;
49
dojo.addClass(this.domNode,"selected");
50
}
51
this.mouse.setEventMode(this.selected?"pan":"");
52
},onPanDrag:function(_6){
53
var x=_6.x-_6.last.x;
54
var y=_6.y-_6.last.y;
55
this.canvas.domNode.parentNode.scrollTop-=_6.move.y;
56
this.canvas.domNode.parentNode.scrollLeft-=_6.move.x;
57
this.canvas.onScroll();
58
},onStencilUp:function(_7){
59
this.checkBounds();
60
},onStencilDrag:function(_8){
61
},checkBounds:function(){
62
var _9=function(){
63
};
64
var _a=function(){
65
};
66
var t=Infinity,r=-Infinity,b=-Infinity,l=Infinity,sx=0,sy=0,dy=0,dx=0,mx=this.stencils.group?this.stencils.group.getTransform():{dx:0,dy:0},sc=this.mouse.scrollOffset(),_b=sc.left?10:0,_c=sc.top?10:0,ch=this.canvas.height,cw=this.canvas.width,z=this.canvas.zoom,_d=this.canvas.parentHeight,_e=this.canvas.parentWidth;
67
this.stencils.withSelected(function(m){
68
var o=m.getBounds();
69
_a("SEL BOUNDS:",o);
70
t=Math.min(o.y1+mx.dy,t);
71
r=Math.max(o.x2+mx.dx,r);
72
b=Math.max(o.y2+mx.dy,b);
73
l=Math.min(o.x1+mx.dx,l);
74
});
75
this.stencils.withUnselected(function(m){
76
var o=m.getBounds();
77
_a("UN BOUNDS:",o);
78
t=Math.min(o.y1,t);
79
r=Math.max(o.x2,r);
80
b=Math.max(o.y2,b);
81
l=Math.min(o.x1,l);
82
});
83
b*=z;
84
var _f=0,_10=0;
85
_9("Bottom test","b:",b,"z:",z,"ch:",ch,"pch:",_d,"top:",sc.top,"sy:",sy);
86
if(b>_d||sc.top){
87
_9("*bottom scroll*");
88
ch=Math.max(b,_d+sc.top);
89
sy=sc.top;
90
_f+=this.canvas.getScrollWidth();
91
}else{
92
if(!sy&&ch>_d){
93
_9("*bottom remove*");
94
ch=_d;
95
}
96
}
97
r*=z;
98
if(r>_e||sc.left){
99
cw=Math.max(r,_e+sc.left);
100
sx=sc.left;
101
_10+=this.canvas.getScrollWidth();
102
}else{
103
if(!sx&&cw>_e){
104
cw=_e;
105
}
106
}
107
cw+=_f*2;
108
ch+=_10*2;
109
this._blockScroll=true;
110
this.stencils.group&&this.stencils.group.applyTransform({dx:dx,dy:dy});
111
this.stencils.withUnselected(function(m){
112
m.transformPoints({dx:dx,dy:dy});
113
});
114
this.canvas.setDimensions(cw,ch,sx,sy);
115
}});
116
dojox.drawing.ui.dom.Pan.setup={name:"dojox.drawing.ui.dom.Pan",tooltip:"Pan Tool",iconClass:"iconPan"};
117
dojox.drawing.register(dojox.drawing.ui.dom.Pan.setup,"plugin");
118
}