| /* |
| Copyright (c) 2004-2009, The Dojo Foundation All Rights Reserved. |
| Available via Academic Free License >= 2.1 OR the modified BSD license. |
| see: http://dojotoolkit.org/license for details |
| */ |
| |
| |
| if(!dojo._hasResource["dojox.grid.Selection"]){ |
| dojo._hasResource["dojox.grid.Selection"]=true; |
| dojo.provide("dojox.grid.Selection"); |
| dojo.declare("dojox.grid.Selection",null,{constructor:function(_1){ |
| this.grid=_1; |
| this.selected=[]; |
| this.setMode(_1.selectionMode); |
| },mode:"extended",selected:null,updating:0,selectedIndex:-1,setMode:function(_2){ |
| if(this.selected.length){ |
| this.deselectAll(); |
| } |
| if(_2!="extended"&&_2!="multiple"&&_2!="single"&&_2!="none"){ |
| this.mode="extended"; |
| }else{ |
| this.mode=_2; |
| } |
| },onCanSelect:function(_3){ |
| return this.grid.onCanSelect(_3); |
| },onCanDeselect:function(_4){ |
| return this.grid.onCanDeselect(_4); |
| },onSelected:function(_5){ |
| },onDeselected:function(_6){ |
| },onChanging:function(){ |
| },onChanged:function(){ |
| },isSelected:function(_7){ |
| if(this.mode=="none"){ |
| return false; |
| } |
| return this.selected[_7]; |
| },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(_8){ |
| if(this.mode=="none"){ |
| return -1; |
| } |
| for(var i=_8+1,l=this.selected.length;i<l;i++){ |
| if(this.selected[i]){ |
| return i; |
| } |
| } |
| return -1; |
| },getSelected:function(){ |
| var _9=[]; |
| for(var i=0,l=this.selected.length;i<l;i++){ |
| if(this.selected[i]){ |
| _9.push(i); |
| } |
| } |
| return _9; |
| },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(_a){ |
| if(this.mode=="none"){ |
| return; |
| } |
| if(this.mode!="multiple"){ |
| this.deselectAll(_a); |
| this.addToSelection(_a); |
| }else{ |
| this.toggleSelect(_a); |
| } |
| },addToSelection:function(_b){ |
| if(this.mode=="none"){ |
| return; |
| } |
| if(dojo.isArray(_b)){ |
| dojo.forEach(_b,this.addToSelection,this); |
| return; |
| } |
| _b=Number(_b); |
| if(this.selected[_b]){ |
| this.selectedIndex=_b; |
| }else{ |
| if(this.onCanSelect(_b)!==false){ |
| this.selectedIndex=_b; |
| var _c=this.grid.getRowNode(_b); |
| if(_c){ |
| dojo.attr(_c,"aria-selected","true"); |
| } |
| this._beginUpdate(); |
| this.selected[_b]=true; |
| this.onSelected(_b); |
| this._endUpdate(); |
| } |
| } |
| },deselect:function(_d){ |
| if(this.mode=="none"){ |
| return; |
| } |
| if(dojo.isArray(_d)){ |
| dojo.forEach(_d,this.deselect,this); |
| return; |
| } |
| _d=Number(_d); |
| if(this.selectedIndex==_d){ |
| this.selectedIndex=-1; |
| } |
| if(this.selected[_d]){ |
| if(this.onCanDeselect(_d)===false){ |
| return; |
| } |
| var _e=this.grid.getRowNode(_d); |
| if(_e){ |
| dojo.attr(_e,"aria-selected","false"); |
| } |
| this._beginUpdate(); |
| delete this.selected[_d]; |
| this.onDeselected(_d); |
| this._endUpdate(); |
| } |
| },setSelected:function(_f,_10){ |
| this[(_10?"addToSelection":"deselect")](_f); |
| },toggleSelect:function(_11){ |
| if(dojo.isArray(_11)){ |
| dojo.forEach(_11,this.toggleSelect,this); |
| return; |
| } |
| this.setSelected(_11,!this.selected[_11]); |
| },_range:function(_12,_13,_14){ |
| var s=(_12>=0?_12:_13),e=_13; |
| if(s>e){ |
| e=s; |
| s=_13; |
| } |
| for(var i=s;i<=e;i++){ |
| _14(i); |
| } |
| },selectRange:function(_15,_16){ |
| this._range(_15,_16,dojo.hitch(this,"addToSelection")); |
| },deselectRange:function(_17,_18){ |
| this._range(_17,_18,dojo.hitch(this,"deselect")); |
| },insert:function(_19){ |
| this.selected.splice(_19,0,false); |
| if(this.selectedIndex>=_19){ |
| this.selectedIndex++; |
| } |
| },remove:function(_1a){ |
| this.selected.splice(_1a,1); |
| if(this.selectedIndex>=_1a){ |
| this.selectedIndex--; |
| } |
| },deselectAll:function(_1b){ |
| for(var i in this.selected){ |
| if((i!=_1b)&&(this.selected[i]===true)){ |
| this.deselect(i); |
| } |
| } |
| },clickSelect:function(_1c,_1d,_1e){ |
| if(this.mode=="none"){ |
| return; |
| } |
| this._beginUpdate(); |
| if(this.mode!="extended"){ |
| this.select(_1c); |
| }else{ |
| var _1f=this.selectedIndex; |
| if(!_1d){ |
| this.deselectAll(_1c); |
| } |
| if(_1e){ |
| this.selectRange(_1f,_1c); |
| }else{ |
| if(_1d){ |
| this.toggleSelect(_1c); |
| }else{ |
| this.addToSelection(_1c); |
| } |
| } |
| } |
| this._endUpdate(); |
| },clickSelectEvent:function(e){ |
| this.clickSelect(e.rowIndex,dojo.isCopyKey(e),e.shiftKey); |
| },clear:function(){ |
| this._beginUpdate(); |
| this.deselectAll(); |
| this._endUpdate(); |
| }}); |
| } |