New file |
0,0 → 1,185 |
if(!dojo._hasResource['dojox.grid._grid.selection']){ //_hasResource checks added by build. Do not use _hasResource directly in your code. |
dojo._hasResource['dojox.grid._grid.selection'] = true; |
dojo.provide('dojox.grid._grid.selection'); |
|
dojo.declare("dojox.grid.selection", null, { |
// summary: |
// Manages row selection for grid. Owned by grid and used internally |
// for selection. Override to implement custom selection. |
constructor: function(inGrid){ |
this.grid = inGrid; |
this.selected = []; |
}, |
multiSelect: true, |
selected: null, |
updating: 0, |
selectedIndex: -1, |
onCanSelect: function(inIndex){ |
return this.grid.onCanSelect(inIndex); |
}, |
onCanDeselect: function(inIndex){ |
return this.grid.onCanDeselect(inIndex); |
}, |
onSelected: function(inIndex){ |
return this.grid.onSelected(inIndex); |
}, |
onDeselected: function(inIndex){ |
return this.grid.onDeselected(inIndex); |
}, |
//onSetSelected: function(inIndex, inSelect) { }; |
onChanging: function(){ |
}, |
onChanged: function(){ |
return this.grid.onSelectionChanged(); |
}, |
isSelected: function(inIndex){ |
return this.selected[inIndex]; |
}, |
getFirstSelected: function(){ |
for(var i=0, l=this.selected.length; i<l; i++){ |
if(this.selected[i]){ |
return i; |
} |
} |
return -1; |
}, |
getNextSelected: function(inPrev){ |
for(var i=inPrev+1, l=this.selected.length; i<l; i++){ |
if(this.selected[i]){ |
return i; |
} |
} |
return -1; |
}, |
getSelected: function(){ |
var result = []; |
for(var i=0, l=this.selected.length; i<l; i++){ |
if(this.selected[i]){ |
result.push(i); |
} |
} |
return result; |
}, |
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(inIndex){ |
this.unselectAll(inIndex); |
this.addToSelection(inIndex); |
}, |
addToSelection: function(inIndex){ |
inIndex = Number(inIndex); |
if(this.selected[inIndex]){ |
this.selectedIndex = inIndex; |
}else{ |
if(this.onCanSelect(inIndex) !== false){ |
this.selectedIndex = inIndex; |
this.beginUpdate(); |
this.selected[inIndex] = true; |
this.grid.onSelected(inIndex); |
//this.onSelected(inIndex); |
//this.onSetSelected(inIndex, true); |
this.endUpdate(); |
} |
} |
}, |
deselect: function(inIndex){ |
inIndex = Number(inIndex); |
if(this.selectedIndex == inIndex){ |
this.selectedIndex = -1; |
} |
if(this.selected[inIndex]){ |
if(this.onCanDeselect(inIndex) === false){ |
return; |
} |
this.beginUpdate(); |
delete this.selected[inIndex]; |
this.grid.onDeselected(inIndex); |
//this.onDeselected(inIndex); |
//this.onSetSelected(inIndex, false); |
this.endUpdate(); |
} |
}, |
setSelected: function(inIndex, inSelect){ |
this[(inSelect ? 'addToSelection' : 'deselect')](inIndex); |
}, |
toggleSelect: function(inIndex){ |
this.setSelected(inIndex, !this.selected[inIndex]) |
}, |
insert: function(inIndex){ |
this.selected.splice(inIndex, 0, false); |
if(this.selectedIndex >= inIndex){ |
this.selectedIndex++; |
} |
}, |
remove: function(inIndex){ |
this.selected.splice(inIndex, 1); |
if(this.selectedIndex >= inIndex){ |
this.selectedIndex--; |
} |
}, |
unselectAll: function(inExcept){ |
for(var i in this.selected){ |
if((i!=inExcept)&&(this.selected[i]===true)){ |
this.deselect(i); |
} |
} |
}, |
shiftSelect: function(inFrom, inTo){ |
var s = (inFrom >= 0 ? inFrom : inTo), e = inTo; |
if(s > e){ |
e = s; |
s = inTo; |
} |
for(var i=s; i<=e; i++){ |
this.addToSelection(i); |
} |
}, |
clickSelect: function(inIndex, inCtrlKey, inShiftKey){ |
this.beginUpdate(); |
if(!this.multiSelect){ |
this.select(inIndex); |
}else{ |
var lastSelected = this.selectedIndex; |
if(!inCtrlKey){ |
this.unselectAll(inIndex); |
} |
if(inShiftKey){ |
this.shiftSelect(lastSelected, inIndex); |
}else if(inCtrlKey){ |
this.toggleSelect(inIndex); |
}else{ |
this.addToSelection(inIndex) |
} |
} |
this.endUpdate(); |
}, |
clickSelectEvent: function(e){ |
this.clickSelect(e.rowIndex, e.ctrlKey, e.shiftKey); |
}, |
clear: function(){ |
this.beginUpdate(); |
this.unselectAll(); |
this.endUpdate(); |
} |
}); |
|
} |