202 lines
3.9 KiB
JavaScript
202 lines
3.9 KiB
JavaScript
//>>built
|
|
define("dojox/grid/Selection",["dojo/_base/declare","dojo/_base/array","dojo/_base/lang","dojo/dom-attr"],function(_1,_2,_3,_4){
|
|
return _1("dojox.grid.Selection",null,{constructor:function(_5){
|
|
this.grid=_5;
|
|
this.selected=[];
|
|
this.setMode(_5.selectionMode);
|
|
},mode:"extended",selected:null,updating:0,selectedIndex:-1,setMode:function(_6){
|
|
if(this.selected.length){
|
|
this.deselectAll();
|
|
}
|
|
if(_6!="extended"&&_6!="multiple"&&_6!="single"&&_6!="none"){
|
|
this.mode="extended";
|
|
}else{
|
|
this.mode=_6;
|
|
}
|
|
},onCanSelect:function(_7){
|
|
return this.grid.onCanSelect(_7);
|
|
},onCanDeselect:function(_8){
|
|
return this.grid.onCanDeselect(_8);
|
|
},onSelected:function(_9){
|
|
},onDeselected:function(_a){
|
|
},onChanging:function(){
|
|
},onChanged:function(){
|
|
},isSelected:function(_b){
|
|
if(this.mode=="none"){
|
|
return false;
|
|
}
|
|
return this.selected[_b];
|
|
},getFirstSelected:function(){
|
|
if(!this.selected.length||this.mode=="none"){
|
|
return -1;
|
|
}
|
|
for(var i=0,l=this.selected.length;i<l;i++){
|
|
if(this.selected[i]){
|
|
return i;
|
|
}
|
|
}
|
|
return -1;
|
|
},getNextSelected:function(_c){
|
|
if(this.mode=="none"){
|
|
return -1;
|
|
}
|
|
for(var i=_c+1,l=this.selected.length;i<l;i++){
|
|
if(this.selected[i]){
|
|
return i;
|
|
}
|
|
}
|
|
return -1;
|
|
},getSelected:function(){
|
|
var _d=[];
|
|
for(var i=0,l=this.selected.length;i<l;i++){
|
|
if(this.selected[i]){
|
|
_d.push(i);
|
|
}
|
|
}
|
|
return _d;
|
|
},getSelectedCount:function(){
|
|
var c=0;
|
|
for(var i=0;i<this.selected.length;i++){
|
|
if(this.selected[i]){
|
|
c++;
|
|
}
|
|
}
|
|
return c;
|
|
},_beginUpdate:function(){
|
|
if(this.updating===0){
|
|
this.onChanging();
|
|
}
|
|
this.updating++;
|
|
},_endUpdate:function(){
|
|
this.updating--;
|
|
if(this.updating===0){
|
|
this.onChanged();
|
|
}
|
|
},select:function(_e){
|
|
if(this.mode=="none"){
|
|
return;
|
|
}
|
|
if(this.mode!="multiple"){
|
|
this.deselectAll(_e);
|
|
this.addToSelection(_e);
|
|
}else{
|
|
this.toggleSelect(_e);
|
|
}
|
|
},addToSelection:function(_f){
|
|
if(this.mode=="none"){
|
|
return;
|
|
}
|
|
if(_3.isArray(_f)){
|
|
_2.forEach(_f,this.addToSelection,this);
|
|
return;
|
|
}
|
|
_f=Number(_f);
|
|
if(this.selected[_f]){
|
|
this.selectedIndex=_f;
|
|
}else{
|
|
if(this.onCanSelect(_f)!==false){
|
|
this.selectedIndex=_f;
|
|
var _10=this.grid.getRowNode(_f);
|
|
if(_10){
|
|
_4.set(_10,"aria-selected","true");
|
|
}
|
|
this._beginUpdate();
|
|
this.selected[_f]=true;
|
|
this.onSelected(_f);
|
|
this._endUpdate();
|
|
}
|
|
}
|
|
},deselect:function(_11){
|
|
if(this.mode=="none"){
|
|
return;
|
|
}
|
|
if(_3.isArray(_11)){
|
|
_2.forEach(_11,this.deselect,this);
|
|
return;
|
|
}
|
|
_11=Number(_11);
|
|
if(this.selectedIndex==_11){
|
|
this.selectedIndex=-1;
|
|
}
|
|
if(this.selected[_11]){
|
|
if(this.onCanDeselect(_11)===false){
|
|
return;
|
|
}
|
|
var _12=this.grid.getRowNode(_11);
|
|
if(_12){
|
|
_4.set(_12,"aria-selected","false");
|
|
}
|
|
this._beginUpdate();
|
|
delete this.selected[_11];
|
|
this.onDeselected(_11);
|
|
this._endUpdate();
|
|
}
|
|
},setSelected:function(_13,_14){
|
|
this[(_14?"addToSelection":"deselect")](_13);
|
|
},toggleSelect:function(_15){
|
|
if(_3.isArray(_15)){
|
|
_2.forEach(_15,this.toggleSelect,this);
|
|
return;
|
|
}
|
|
this.setSelected(_15,!this.selected[_15]);
|
|
},_range:function(_16,_17,_18){
|
|
var s=(_16>=0?_16:_17),e=_17;
|
|
if(s>e){
|
|
e=s;
|
|
s=_17;
|
|
}
|
|
for(var i=s;i<=e;i++){
|
|
_18(i);
|
|
}
|
|
},selectRange:function(_19,_1a){
|
|
this._range(_19,_1a,_3.hitch(this,"addToSelection"));
|
|
},deselectRange:function(_1b,_1c){
|
|
this._range(_1b,_1c,_3.hitch(this,"deselect"));
|
|
},insert:function(_1d){
|
|
this.selected.splice(_1d,0,false);
|
|
if(this.selectedIndex>=_1d){
|
|
this.selectedIndex++;
|
|
}
|
|
},remove:function(_1e){
|
|
this.selected.splice(_1e,1);
|
|
if(this.selectedIndex>=_1e){
|
|
this.selectedIndex--;
|
|
}
|
|
},deselectAll:function(_1f){
|
|
for(var i in this.selected){
|
|
if((i!=_1f)&&(this.selected[i]===true)){
|
|
this.deselect(i);
|
|
}
|
|
}
|
|
},clickSelect:function(_20,_21,_22){
|
|
if(this.mode=="none"){
|
|
return;
|
|
}
|
|
this._beginUpdate();
|
|
if(this.mode!="extended"){
|
|
this.select(_20);
|
|
}else{
|
|
var _23=this.selectedIndex;
|
|
if(!_21){
|
|
this.deselectAll(_20);
|
|
}
|
|
if(_22){
|
|
this.selectRange(_23,_20);
|
|
}else{
|
|
if(_21){
|
|
this.toggleSelect(_20);
|
|
}else{
|
|
this.addToSelection(_20);
|
|
}
|
|
}
|
|
}
|
|
this._endUpdate();
|
|
},clickSelectEvent:function(e){
|
|
this.clickSelect(e.rowIndex,dojo.isCopyKey(e),e.shiftKey);
|
|
},clear:function(){
|
|
this._beginUpdate();
|
|
this.deselectAll();
|
|
this._endUpdate();
|
|
}});
|
|
});
|