Project

General

Profile

Statistics
| Revision:

root / trunk / web / dojo / dojox / grid / enhanced / dnd / _DndMovingManager.js

History | View | Annotate | Download (18.6 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.grid.enhanced.dnd._DndMovingManager"]){
9
dojo._hasResource["dojox.grid.enhanced.dnd._DndMovingManager"]=true;
10
dojo.provide("dojox.grid.enhanced.dnd._DndMovingManager");
11
dojo.require("dojox.grid.enhanced.dnd._DndSelectingManager");
12
dojo.require("dojox.grid.enhanced.dnd._DndMover");
13
dojo.require("dojo.dnd.move");
14
dojo.declare("dojox.grid.enhanced.dnd._DndMovingManager",dojox.grid.enhanced.dnd._DndSelectingManager,{exceptRowsTo:-1,exceptColumnsTo:-1,coverDIVs:[],movers:[],constructor:function(_1){
15
if(this.grid.indirectSelection){
16
this.exceptColumnsTo=this.grid.pluginMgr.getFixedCellNumber()-1;
17
}
18
this.coverDIVs=this.movers=[];
19
dojo.subscribe("CTRL_KEY_DOWN",dojo.hitch(this,function(_2,_3){
20
if(_2==this.grid&&_2!=this){
21
this.keyboardMove(_3);
22
}
23
}));
24
dojo.forEach(this.grid.views.views,function(_4){
25
dojo.connect(_4.scrollboxNode,"onscroll",dojo.hitch(this,function(){
26
this.clearDrugDivs();
27
}));
28
},this);
29
},getGridWidth:function(){
30
return dojo.contentBox(this.grid.domNode).w-this.grid.views.views[0].getWidth().replace("px","");
31
},isColSelected:function(_5){
32
return this.selectedColumns[_5]&&_5>this.exceptColumnsTo;
33
},getHScrollBarHeight:function(){
34
this.scrollbarHeight=0;
35
dojo.forEach(this.grid.views.views,function(_6,_7){
36
if(_6.scrollboxNode){
37
var _8=_6.scrollboxNode.offsetHeight-_6.scrollboxNode.clientHeight;
38
this.scrollbarHeight=_8>this.scrollbarHeight?_8:this.scrollbarHeight;
39
}
40
},this);
41
return this.scrollbarHeight;
42
},getExceptionalColOffsetWidth:function(){
43
if(!this.grid.indirectSelection||!this.grid.rowSelectCell){
44
return 0;
45
}
46
var _9=(normalizedOffsetWidth=0),_a=this.grid.rowSelectCell.view.scrollboxNode;
47
dojo.forEach(this.getHeaderNodes(),function(_b,_c){
48
if(_c<=this.exceptColumnsTo){
49
var _d=dojo.coords(_b);
50
_9+=_d.w;
51
}
52
},this);
53
normalizedOffsetWidth=_9-_a.scrollLeft*(dojo._isBodyLtr()?1:(dojo.isMoz?-1:1));
54
return normalizedOffsetWidth>0?normalizedOffsetWidth:0;
55
},getGridCoords:function(_e){
56
if(!this.gridCoords||_e){
57
this.gridCoords=new Object();
58
if(!this.headerHeight){
59
this.headerHeight=dojo.coords(this.getHeaderNodes()[0]).h;
60
}
61
var _f=dojo.coords(this.grid.views.views[0].domNode);
62
var _10=dojo.coords(this.grid.domNode);
63
var _11=dojo.contentBox(this.grid.domNode);
64
this.gridCoords.h=_11.h-this.headerHeight-this.getHScrollBarHeight();
65
this.gridCoords.t=_10.y;
66
this.gridCoords.l=dojo._isBodyLtr()?(_10.x+_f.w):_10.x;
67
this.gridCoords.w=_11.w-_f.w;
68
}
69
return this.gridCoords;
70
},createAvatar:function(_12,_13,_14,top,_15){
71
this.gridCoords=null;
72
var _16=this.getGridCoords();
73
var _17=dojo.doc.createElement("DIV");
74
_17.className="dojoxGridSelectedDIV";
75
_17.id="grid_dnd_cover_div_"+_14+"_"+top;
76
_17.style.width=_12+"px";
77
var _18=dojo._docScroll();
78
var _19=top<_16.t+this.headerHeight?_16.t+this.headerHeight-top:0;
79
var _1a=_16.t+_16.h+this.headerHeight;
80
var _1b=0;
81
if(top<_16.t+this.headerHeight){
82
_1b=(_16.t+this.headerHeight);
83
}else{
84
if(top>_1a){
85
_1b=10000;
86
}else{
87
_1b=top;
88
}
89
}
90
_17.style.top=_1b+_18.y+"px";
91
_17.style.left=(_14+_18.x)+"px";
92
var _1c=_1b+_13-_19;
93
if(_1c>_1a+(_15?this.scrollbarHeight:0)){
94
_1c=_1a;
95
}
96
_17.style.height=((_1c-_1b)>=0?(_1c-_1b):0)+"px";
97
dojo.doc.body.appendChild(_17);
98
_17.connections=[];
99
_17.connections.push(dojo.connect(_17,"onmouseout",this,function(){
100
this.clearDrugDivs();
101
}));
102
_17.connections.push(dojo.connect(_17,"onclick",this,"avataDivClick"));
103
_17.connections.push(dojo.connect(_17,"keydown",this,function(e){
104
this.handleESC(e,this);
105
}));
106
this.coverDIVs.push(_17);
107
return _17;
108
},handleESC:function(e,_1d){
109
var dk=dojo.keys;
110
switch(e.keyCode){
111
case dk.ESCAPE:
112
try{
113
this.cancelDND();
114
}
115
catch(e){
116
}
117
break;
118
}
119
},cancelDND:function(){
120
this.cleanAll();
121
this.clearDrugDivs();
122
if(this.mover){
123
this.mover.destroy();
124
}
125
this.cleanAll();
126
},createCoverMover:function(_1e,_1f,_20,top,_21){
127
var _22=this.getGridCoords(),_23=(_21=="col"?true:false);
128
var _24={box:{l:(_21=="row"?_20:_22.l)+dojo._docScroll().x,t:(_21=="col"?top:_22.t+this.headerHeight)+dojo._docScroll().y,w:_21=="row"?1:_22.w,h:_21=="col"?1:_22.h},within:true,movingType:_21,mover:dojox.grid.enhanced.dnd._DndMover};
129
return new dojox.grid.enhanced.dnd._DndBoxConstrainedMoveable(this.createAvatar(_1e,_1f,_20,top,_23),_24);
130
},getBorderDiv:function(){
131
var _25=dojo.byId("borderDIV"+this.grid.id);
132
if(_25==null){
133
_25=dojo.doc.createElement("DIV");
134
_25.id="borderDIV"+this.grid.id;
135
_25.className="dojoxGridBorderDIV";
136
dojo.doc.body.appendChild(_25);
137
}
138
return _25;
139
},setBorderDiv:function(_26,_27,_28,top){
140
var _29=this.getBorderDiv();
141
dojo.style(_29,{"height":_27+"px","top":top+"px","width":_26+"px","left":_28+"px"});
142
return _29;
143
},removeOtherMovers:function(id){
144
if(!this.coverDIVs.hasRemovedOtherMovers){
145
var _2a;
146
dojo.forEach(this.coverDIVs,function(div){
147
if(div.id!=id){
148
dojo.doc.body.removeChild(div);
149
}else{
150
_2a=div;
151
}
152
},this);
153
this.coverDIVs=[_2a];
154
this.coverDIVs.hasRemovedOtherMovers=true;
155
}
156
},addColMovers:function(){
157
var _2b=-1;
158
dojo.forEach(this.selectedColumns,function(col,_2c){
159
if(this.isColSelected(_2c)){
160
if(_2b==-1){
161
_2b=_2c;
162
}
163
if(this.selectedColumns[_2c+1]==null){
164
this.addColMover(_2b,_2c);
165
_2b=-1;
166
}
167
}
168
},this);
169
},addColMover:function(_2d,_2e){
170
if(this.lock){
171
return;
172
}
173
var _2f=(rightPosition=0);
174
var top=null,_30=null;
175
if(dojo._isBodyLtr()){
176
dojo.forEach(this.getHeaderNodes(),function(_31,_32){
177
var _33=dojo.coords(_31);
178
if(_32==_2d){
179
_2f=_33.x;
180
top=_33.y+_33.h;
181
_30=_33.h;
182
}
183
if(_32==_2e){
184
rightPosition=_33.x+_33.w;
185
}
186
});
187
}else{
188
dojo.forEach(this.getHeaderNodes(),function(_34,_35){
189
var _36=dojo.coords(_34);
190
if(_35==_2d){
191
rightPosition=_36.x+_36.w;
192
_30=_36.h;
193
}
194
if(_35==_2e){
195
_2f=_36.x;
196
top=_36.y+_36.h;
197
}
198
});
199
}
200
var _37=this.normalizeColMoverCoords(_2f,rightPosition,_2d,_2e);
201
var _38=_37.h,_39=_37.w;
202
_2f=_37.l,rightPosition=_37.r;
203
var _3a=this.createCoverMover(_39,_38,_2f,top,"col");
204
this.movers.push(_3a);
205
var _3b=this.setBorderDiv(3,_38,-1000,top+dojo._docScroll().y);
206
dojo.attr(_3b,"colH",_37.colH);
207
dojo.connect(_3a,"onMoveStart",dojo.hitch(this,function(_3c,_3d){
208
this.mover=_3c;
209
this.removeOtherMovers(_3c.node.id);
210
}));
211
dojo.connect(_3a,"onMove",dojo.hitch(this,function(_3e,_3f,_40){
212
if(_3e.node==null||_3e.node.parentNode==null){
213
return;
214
}
215
this.isMoving=true;
216
this.moveColBorder(_3e,_40,_3b);
217
}));
218
dojo.connect(_3a,"onMoveStop",dojo.hitch(this,function(_41){
219
if(this.drugDestIndex==null||this.isContinuousSelection(this.selectedColumns)&&(this.drugDestIndex==_2d||this.drugDestIndex==_2e||this.drugDestIndex==(_2e+1)&&this.drugBefore)){
220
this.movingIgnored=true;
221
if(this.isMoving){
222
this.isMoving=false;
223
this.clearDrugDivs();
224
}
225
return;
226
}
227
this.isMoving=false;
228
this.mover=null;
229
this.startMoveCols();
230
this.drugDestIndex=null;
231
}));
232
},normalizeColMoverCoords:function(_42,_43,_44,_45){
233
var _46=_43-_42,_47=this.grid.views.views,_48=this.grid.pluginMgr;
234
var _49={"w":_46,"h":0,"l":_42,"r":_43,"colH":0};
235
var _4a=this.getGridWidth()-_47[_47.length-1].getScrollbarWidth();
236
var rtl=!dojo._isBodyLtr();
237
var _4b=_48.getViewByCellIdx(!rtl?_44:_45);
238
var _4c=_48.getViewByCellIdx(!rtl?_45:_44);
239
var _4d=(_4b==_4c);
240
if(!_4b||!_4c){
241
return _49;
242
}
243
var _4e=dojo.coords(_4b.scrollboxNode).x+(rtl&&dojo.isIE?_4b.getScrollbarWidth():0);
244
var _4f=dojo.coords(_4c.scrollboxNode);
245
var _50=_4f.x+_4f.w-((!rtl||!dojo.isIE)?_4c.getScrollbarWidth():0);
246
if(_49.l<_4e){
247
_49.w=_49.r-_4e;
248
_49.l=_4e;
249
}
250
if(_49.r>_50){
251
_49.w=_50-_49.l;
252
}
253
var i,_51=this.grid.views.views[0],_52=dojo.coords(_51.contentNode).h;
254
var _53=_4c,_54=_4f.h;
255
_49.colH=_52;
256
_54=!_4d?_54:(_54-(_53.scrollboxNode.offsetHeight-_53.scrollboxNode.clientHeight));
257
_49.h=_52<_54?_52:_54;
258
return _49;
259
},moveColBorder:function(_55,_56,_57){
260
var _58=dojo._docScroll(),rtl=!dojo._isBodyLtr();
261
_56.x-=_58.x;
262
var _59=this.grid.views.views,_5a=this.getGridCoords();
263
var _5b=_59[!rtl?1:_59.length-1].scrollboxNode;
264
var _5c=_59[!rtl?_59.length-1:1].scrollboxNode;
265
var _5d=(!rtl||!dojo.isIE)?_5a.l:(_5a.l+_5b.offsetWidth-_5b.clientWidth);
266
var _5e=(!rtl||dojo.isMoz)?(_5a.l+_5a.w-(_5c.offsetWidth-_5c.clientWidth)):(_5a.l+_5a.w);
267
dojo.forEach(this.getHeaderNodes(),dojo.hitch(this,function(_5f,_60){
268
if(_60>this.exceptColumnsTo){
269
var x,_61=dojo.coords(_5f);
270
if(_56.x>=_61.x&&_56.x<=_61.x+_61.w){
271
if(!this.selectedColumns[_60]||!this.selectedColumns[_60-1]){
272
x=_61.x+_58.x+(rtl?_61.w:0);
273
if(_56.x<_5d||_56.x>_5e||x<_5d||x>_5e){
274
return;
275
}
276
dojo.style(_57,"left",x+"px");
277
this.drugDestIndex=_60;
278
this.drugBefore=true;
279
!dojo.isIE&&this.normalizeColBorderHeight(_57,_60);
280
}
281
}else{
282
if(this.getHeaderNodes()[_60+1]==null&&(!rtl?(_56.x>_61.x+_61.w):(_56.x<_61.x))){
283
x=_56.x<_5d?_5d:(_56.x>_5e?_5e:(_61.x+_58.x+(rtl?0:_61.w)));
284
dojo.style(_57,"left",x+"px");
285
this.drugDestIndex=_60;
286
this.drugBefore=false;
287
!dojo.isIE&&this.normalizeColBorderHeight(_57,_60);
288
}
289
}
290
}
291
}));
292
},normalizeColBorderHeight:function(_62,_63){
293
var _64=this.grid.pluginMgr.getViewByCellIdx(_63);
294
if(!_64){
295
return;
296
}
297
var _65=_64.scrollboxNode,_66=dojo.attr(_62,"colH");
298
var _67=dojo.coords(_65).h-(_65.offsetHeight-_65.clientHeight);
299
_67=_66>0&&_66<_67?_66:_67;
300
dojo.style(_62,"height",_67+"px");
301
},avataDivClick:function(e){
302
if(this.movingIgnored){
303
this.movingIgnored=false;
304
return;
305
}
306
this.cleanAll();
307
this.clearDrugDivs();
308
},startMoveCols:function(){
309
this.changeCursorState("wait");
310
this.srcIndexdelta=0;
311
deltaColAmount=0;
312
dojo.forEach(this.selectedColumns,dojo.hitch(this,function(col,_68){
313
if(this.isColSelected(_68)){
314
if(this.drugDestIndex>_68){
315
_68-=deltaColAmount;
316
}
317
deltaColAmount+=1;
318
var _69=this.grid.layout.cells[_68].view.idx;
319
var _6a=this.grid.layout.cells[this.drugDestIndex].view.idx;
320
if(_68!=this.drugDestIndex){
321
this.grid.layout.moveColumn(_69,_6a,_68,this.drugDestIndex,this.drugBefore);
322
}
323
if(this.drugDestIndex<=_68&&this.drugDestIndex+1<this.grid.layout.cells.length){
324
this.drugDestIndex+=1;
325
}
326
}
327
}));
328
var _6b=this.drugDestIndex+(this.drugBefore?0:1);
329
this.clearDrugDivs();
330
this.cleanAll();
331
this.resetCellIdx();
332
this.drugSelectionStart.colIndex=_6b-deltaColAmount;
333
this.drugSelectColumn(this.drugSelectionStart.colIndex+deltaColAmount-1);
334
},changeCursorState:function(_6c){
335
dojo.forEach(this.coverDIVs,function(div){
336
div.style.cursor="wait";
337
});
338
},addRowMovers:function(){
339
var _6d=-1;
340
dojo.forEach(this.grid.selection.selected,function(row,_6e){
341
var _6f=this.grid.views.views[0];
342
if(row&&_6f.rowNodes[_6e]){
343
if(_6d==-1){
344
_6d=_6e;
345
}
346
if(this.grid.selection.selected[_6e+1]==null||!_6f.rowNodes[_6e+1]){
347
this.addRowMover(_6d,_6e);
348
_6d=-1;
349
}
350
}
351
},this);
352
},addRowMover:function(_70,to){
353
var _71=0,_72=this.grid.views.views;
354
dojo.forEach(_72,function(_73,_74){
355
_71+=_73.getScrollbarWidth();
356
});
357
var _75=_72[_72.length-1].getScrollbarWidth();
358
var _76=!dojo._isBodyLtr()?(dojo.isIE?_71-_75:_71):0;
359
var _77=this.getGridWidth()-_75;
360
var _78=this.grid.views.views[0];
361
var _79=_78.rowNodes[_70],_7a=_78.rowNodes[to];
362
if(!_79||!_7a){
363
return;
364
}
365
var _7b=dojo.coords(_79),_7c=dojo.coords(_7a);
366
var _7d=this.getExceptionalColOffsetWidth();
367
var _7e=this.createCoverMover(_77-_7d,(_7c.y-_7b.y+_7c.h),dojo._isBodyLtr()?(_7b.x+_7b.w+_7d):(_7b.x-_77-_76),_7b.y,"row");
368
var _7f=this.setBorderDiv(_77,3,(dojo._isBodyLtr()?(_7c.x+_7c.w):(_7c.x-_77-_76))+dojo._docScroll().x,-100);
369
var _80=dojo.connect(_7e,"onMoveStart",dojo.hitch(this,function(_81,_82){
370
this.mover=_81;
371
this.removeOtherMovers(_81.node.id);
372
}));
373
var _83=dojo.connect(_7e,"onMove",dojo.hitch(this,function(_84,_85,_86){
374
if(_84.node==null||_84.node.parentNode==null){
375
return;
376
}
377
this.isMoving=true;
378
this.moveRowBorder(_84,_85,_7f,_86);
379
}));
380
var _87=dojo.connect(_7e,"onMoveStop",dojo.hitch(this,function(_88){
381
if(this.avaOnRowIndex==null||this.isContinuousSelection(this.grid.selection.selected)&&(this.avaOnRowIndex==_70||this.avaOnRowIndex==(to+1))){
382
this.movingIgnored=true;
383
if(this.isMoving){
384
this.isMoving=false;
385
this.clearDrugDivs();
386
}
387
return;
388
}
389
this.isMoving=false;
390
this.mover=null;
391
this.grid.select.outRangeY=false;
392
this.grid.select.moveOutTop=false;
393
this.grid.scroller.findScrollTop(this.grid.scroller.page*this.grid.scroller.rowsPerPage);
394
this.startMoveRows();
395
this.avaOnRowIndex=null;
396
delete _7e;
397
}));
398
},moveRowBorder:function(_89,_8a,_8b,_8c){
399
var _8d=this.getGridCoords(true),_8e=dojo._docScroll();
400
var _8f=_8d.t+this.headerHeight+_8d.h;
401
_8a.t-=_8e.y,_8c.y-=_8e.y;
402
if(_8c.y>=_8f){
403
this.grid.select.outRangeY=true;
404
this.autoMoveToNextRow();
405
}else{
406
if(_8c.y<=_8d.t+this.headerHeight){
407
this.grid.select.moveOutTop=true;
408
this.autoMoveToPreRow();
409
}else{
410
this.grid.select.outRangeY=this.grid.select.moveOutTop=false;
411
var _90=this.grid.views.views[0],_91=_90.rowNodes;
412
var _92=dojo.coords(_90.contentNode).h;
413
var _93=0,_94=-1;
414
for(i in _91){
415
i=parseInt(i);
416
++_93;
417
if(i>_94){
418
_94=i;
419
}
420
}
421
var _95=dojo.coords(_91[_94]);
422
if(_92<_8d.h&&_8c.y>(_95.y+_95.h)){
423
this.avaOnRowIndex=_93;
424
dojo.style(_8b,{"top":_95.y+_95.h+_8e.y+"px"});
425
return;
426
}
427
var _96,_97,_98;
428
for(var _99 in _91){
429
_99=parseInt(_99);
430
if(isNaN(_99)){
431
continue;
432
}
433
_97=_91[_99];
434
if(!_97){
435
continue;
436
}
437
_96=dojo.coords(_97),_98=(_96.y<=_8f);
438
if(_98&&_8c.y>_96.y&&_8c.y<_96.y+_96.h){
439
if(!this.grid.selection.selected[_99]||!this.grid.selection.selected[_99-1]){
440
this.avaOnRowIndex=_99;
441
dojo.style(_8b,{"top":_96.y+_8e.y+"px"});
442
}
443
}
444
}
445
}
446
}
447
},autoMoveToPreRow:function(){
448
if(this.grid.select.moveOutTop){
449
if(this.grid.scroller.firstVisibleRow>0){
450
this.grid.scrollToRow(this.grid.scroller.firstVisibleRow-1);
451
this.autoMoveBorderDivPre();
452
setTimeout(dojo.hitch(this,"autoMoveToPreRow"),this.autoScrollRate);
453
}
454
}
455
},autoMoveBorderDivPre:function(){
456
var _9a=dojo._docScroll(),_9b=this.getGridCoords();
457
var _9c=_9b.t+this.headerHeight+_9a.y;
458
var _9d,_9e=this.getBorderDiv();
459
if(this.avaOnRowIndex-1<=0){
460
this.avaOnRowIndex=0;
461
_9d=_9c;
462
}else{
463
this.avaOnRowIndex--;
464
_9d=dojo.coords(this.grid.views.views[0].rowNodes[this.avaOnRowIndex]).y+_9a.y;
465
}
466
_9e.style.top=(_9d<_9c?_9c:_9d)+"px";
467
},autoMoveToNextRow:function(){
468
if(this.grid.select.outRangeY){
469
if(this.avaOnRowIndex+1<=this.grid.scroller.rowCount){
470
this.grid.scrollToRow(this.grid.scroller.firstVisibleRow+1);
471
this.autoMoveBorderDiv();
472
setTimeout(dojo.hitch(this,"autoMoveToNextRow"),this.autoScrollRate);
473
}
474
}
475
},autoMoveBorderDiv:function(){
476
var _9f=dojo._docScroll(),_a0=this.getGridCoords();
477
var _a1=_a0.t+this.headerHeight+_a0.h+_9f.y;
478
var _a2,_a3=this.getBorderDiv();
479
if(this.avaOnRowIndex+1>=this.grid.scroller.rowCount){
480
this.avaOnRowIndex=this.grid.scroller.rowCount;
481
_a2=_a1;
482
}else{
483
this.avaOnRowIndex++;
484
_a2=dojo.coords(this.grid.views.views[0].rowNodes[this.avaOnRowIndex]).y+_9f.y;
485
}
486
_a3.style.top=(_a2>_a1?_a1:_a2)+"px";
487
},startMoveRows:function(){
488
var _a4=Math.min(this.avaOnRowIndex,this.getFirstSelected());
489
var end=Math.max(this.avaOnRowIndex-1,this.getLastSelected());
490
this.moveRows(_a4,end,this.getPageInfo());
491
},moveRows:function(_a5,end,_a6){
492
var i,_a7=false,_a8=(selectedRowsAboveBorderDIV=0),_a9=[];
493
var _aa=this.grid.scroller,_ab=_aa.rowsPerPage;
494
var _ac=_a6.topPage*_ab,_ad=(_a6.bottomPage+1)*_ab-1;
495
var _ae=dojo.hitch(this,function(_af,to){
496
for(i=_af;i<to;i++){
497
if(!this.grid.selection.selected[i]||!this.grid._by_idx[i]){
498
_a9.push(this.grid._by_idx[i]);
499
}
500
}
501
});
502
_ae(_a5,this.avaOnRowIndex);
503
for(i=_a5;i<=end;i++){
504
if(this.grid.selection.selected[i]&&this.grid._by_idx[i]){
505
_a9.push(this.grid._by_idx[i]);
506
_a8++;
507
if(this.avaOnRowIndex>i){
508
selectedRowsAboveBorderDIV++;
509
}
510
}
511
}
512
_ae(this.avaOnRowIndex,end+1);
513
for(i=_a5,j=0;i<=end;i++){
514
this.grid._by_idx[i]=_a9[j++];
515
if(i>=_ac&&i<=_ad){
516
this.grid.updateRow(i);
517
_a7=true;
518
}
519
}
520
this.avaOnRowIndex+=_a8-selectedRowsAboveBorderDIV;
521
try{
522
this.clearDrugDivs();
523
this.cleanAll();
524
this.drugSelectionStart.rowIndex=this.avaOnRowIndex-_a8;
525
this.drugSelectRow(this.drugSelectionStart.rowIndex+_a8-1);
526
if(_a7){
527
var _b0=_aa.stack;
528
dojo.forEach(_a6.invalidPages,function(_b1){
529
_aa.destroyPage(_b1);
530
i=dojo.indexOf(_b0,_b1);
531
if(i>=0){
532
_b0.splice(i,1);
533
}
534
});
535
}
536
this.publishRowMove();
537
}
538
catch(e){
539
}
540
},clearDrugDivs:function(){
541
if(!this.isMoving){
542
var _b2=this.getBorderDiv();
543
_b2.style.top=-100+"px";
544
_b2.style.height="0px";
545
_b2.style.left=-100+"px";
546
dojo.forEach(this.coverDIVs,function(div){
547
dojo.forEach(div.connections,function(_b3){
548
dojo.disconnect(_b3);
549
});
550
dojo.doc.body.removeChild(div);
551
delete div;
552
},this);
553
this.coverDIVs=[];
554
}
555
},setDrugCoverDivs:function(_b4,_b5){
556
if(!this.isMoving){
557
if(this.isColSelected(_b4)){
558
this.addColMovers();
559
}else{
560
if(this.grid.selection.selected[_b5]){
561
this.addRowMovers();
562
}else{
563
this.clearDrugDivs();
564
}
565
}
566
}
567
},getPageInfo:function(){
568
var _b6=this.grid.scroller,_b7=(bottomPage=_b6.page);
569
var _b8=_b6.firstVisibleRow,_b9=_b6.lastVisibleRow;
570
var _ba=_b6.rowsPerPage,_bb=_b6.pageNodes[0];
571
var _bc,_bd,_be=[],_bf;
572
dojo.forEach(_bb,function(_c0,_c1){
573
if(!_c0){
574
return;
575
}
576
_bf=false;
577
_bc=_c1*_ba;
578
_bd=(_c1+1)*_ba-1;
579
if(_b8>=_bc&&_b8<=_bd){
580
_b7=_c1;
581
_bf=true;
582
}
583
if(_b9>=_bc&&_b9<=_bd){
584
bottomPage=_c1;
585
_bf=true;
586
}
587
if(!_bf&&(_bc>_b9||_bd<_b8)){
588
_be.push(_c1);
589
}
590
});
591
return {topPage:_b7,bottomPage:bottomPage,invalidPages:_be};
592
},resetCellIdx:function(){
593
var _c2=0;
594
var _c3=-1;
595
dojo.forEach(this.grid.views.views,function(_c4,_c5){
596
if(_c5==0){
597
return;
598
}
599
if(_c4.structure.cells&&_c4.structure.cells[0]){
600
dojo.forEach(_c4.structure.cells[0],function(_c6,_c7){
601
var _c8=_c6.markup[2].split(" ");
602
var idx=_c2+_c7;
603
_c8[1]="idx=\""+idx+"\"";
604
_c6.markup[2]=_c8.join(" ");
605
});
606
}
607
for(i in _c4.rowNodes){
608
if(!_c4.rowNodes[i]){
609
return;
610
}
611
dojo.forEach(_c4.rowNodes[i].firstChild.rows[0].cells,function(_c9,_ca){
612
if(_c9&&_c9.attributes){
613
if(_ca+_c2>_c3){
614
_c3=_ca+_c2;
615
}
616
var idx=document.createAttribute("idx");
617
idx.value=_ca+_c2;
618
_c9.attributes.setNamedItem(idx);
619
}
620
});
621
}
622
_c2=_c3+1;
623
});
624
},publishRowMove:function(){
625
dojo.publish(this.grid.rowMovedTopic,[this]);
626
},keyboardMove:function(_cb){
627
var _cc=this.selectedColumns.length>0;
628
var _cd=dojo.hitch(this.grid.selection,dojox.grid.Selection.prototype["getFirstSelected"])()>=0;
629
var i,_ce,dk=dojo.keys,_cf=_cb.keyCode;
630
if(!dojo._isBodyLtr()){
631
_cf=(_cb.keyCode==dk.LEFT_ARROW)?dk.RIGHT_ARROW:(_cb.keyCode==dk.RIGHT_ARROW?dk.LEFT_ARROW:_cf);
632
}
633
switch(_cf){
634
case dk.LEFT_ARROW:
635
if(!_cc){
636
return;
637
}
638
_ce=this.getHeaderNodes().length;
639
for(i=0;i<_ce;i++){
640
if(this.isColSelected(i)){
641
this.drugDestIndex=i-1;
642
this.drugBefore=true;
643
break;
644
}
645
}
646
var _d0=this.grid.indirectSelection?1:0;
647
(this.drugDestIndex>=_d0)?this.startMoveCols():(this.drugDestIndex=_d0);
648
break;
649
case dk.RIGHT_ARROW:
650
if(!_cc){
651
return;
652
}
653
_ce=this.getHeaderNodes().length;
654
this.drugBefore=true;
655
for(i=0;i<_ce;i++){
656
if(this.isColSelected(i)&&!this.isColSelected(i+1)){
657
this.drugDestIndex=i+2;
658
if(this.drugDestIndex==_ce){
659
this.drugDestIndex--;
660
this.drugBefore=false;
661
}
662
break;
663
}
664
}
665
if(this.drugDestIndex<_ce){
666
this.startMoveCols();
667
}
668
break;
669
case dk.UP_ARROW:
670
if(!_cd){
671
return;
672
}
673
this.avaOnRowIndex=dojo.hitch(this.grid.selection,dojox.grid.Selection.prototype["getFirstSelected"])()-1;
674
if(this.avaOnRowIndex>-1){
675
this.startMoveRows();
676
}
677
break;
678
case dk.DOWN_ARROW:
679
if(!_cd){
680
return;
681
}
682
for(i=0;i<this.grid.rowCount;i++){
683
if(this.grid.selection.selected[i]&&!this.grid.selection.selected[i+1]){
684
this.avaOnRowIndex=i+2;
685
break;
686
}
687
}
688
if(this.avaOnRowIndex<=this.grid.rowCount){
689
this.startMoveRows();
690
}
691
}
692
}});
693
}