diff options
Diffstat (limited to 'includes/js/dojox/grid/_grid/focus.js')
-rw-r--r-- | includes/js/dojox/grid/_grid/focus.js | 207 |
1 files changed, 0 insertions, 207 deletions
diff --git a/includes/js/dojox/grid/_grid/focus.js b/includes/js/dojox/grid/_grid/focus.js deleted file mode 100644 index 8761042..0000000 --- a/includes/js/dojox/grid/_grid/focus.js +++ /dev/null @@ -1,207 +0,0 @@ -if(!dojo._hasResource["dojox.grid._grid.focus"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code. -dojo._hasResource["dojox.grid._grid.focus"] = true; -dojo.provide("dojox.grid._grid.focus"); - -// focus management -dojo.declare("dojox.grid.focus", null, { - // summary: - // Controls grid cell focus. Owned by grid and used internally for focusing. - // Note: grid cell actually receives keyboard input only when cell is being edited. - constructor: function(inGrid){ - this.grid = inGrid; - this.cell = null; - this.rowIndex = -1; - dojo.connect(this.grid.domNode, "onfocus", this, "doFocus"); - }, - tabbingOut: false, - focusClass: "dojoxGrid-cell-focus", - focusView: null, - initFocusView: function(){ - this.focusView = this.grid.views.getFirstScrollingView(); - }, - isFocusCell: function(inCell, inRowIndex){ - // summary: - // states if the given cell is focused - // inCell: object - // grid cell object - // inRowIndex: int - // grid row index - // returns: - // true of the given grid cell is focused - return (this.cell == inCell) && (this.rowIndex == inRowIndex); - }, - isLastFocusCell: function(){ - return (this.rowIndex == this.grid.rowCount-1) && (this.cell.index == this.grid.layout.cellCount-1); - }, - isFirstFocusCell: function(){ - return (this.rowIndex == 0) && (this.cell.index == 0); - }, - isNoFocusCell: function(){ - return (this.rowIndex < 0) || !this.cell; - }, - _focusifyCellNode: function(inBork){ - var n = this.cell && this.cell.getNode(this.rowIndex); - if(n){ - dojo.toggleClass(n, this.focusClass, inBork); - if (inBork){ - this.scrollIntoView(); - try{ - if(!this.grid.edit.isEditing()) - dojox.grid.fire(n, "focus"); - }catch(e){} - } - } - }, - scrollIntoView: function() { - if(!this.cell){ - return; - } - var - c = this.cell, - s = c.view.scrollboxNode, - sr = { - w: s.clientWidth, - l: s.scrollLeft, - t: s.scrollTop, - h: s.clientHeight - }, - n = c.getNode(this.rowIndex), - r = c.view.getRowNode(this.rowIndex), - rt = this.grid.scroller.findScrollTop(this.rowIndex); - // place cell within horizontal view - if(n.offsetLeft + n.offsetWidth > sr.l + sr.w){ - s.scrollLeft = n.offsetLeft + n.offsetWidth - sr.w; - }else if(n.offsetLeft < sr.l){ - s.scrollLeft = n.offsetLeft; - } - // place cell within vertical view - if(rt + r.offsetHeight > sr.t + sr.h){ - this.grid.setScrollTop(rt + r.offsetHeight - sr.h); - }else if(rt < sr.t){ - this.grid.setScrollTop(rt); - } - }, - styleRow: function(inRow){ - return; - }, - setFocusIndex: function(inRowIndex, inCellIndex){ - // summary: - // focuses the given grid cell - // inRowIndex: int - // grid row index - // inCellIndex: int - // grid cell index - this.setFocusCell(this.grid.getCell(inCellIndex), inRowIndex); - }, - setFocusCell: function(inCell, inRowIndex){ - // summary: - // focuses the given grid cell - // inCell: object - // grid cell object - // inRowIndex: int - // grid row index - if(inCell && !this.isFocusCell(inCell, inRowIndex)){ - this.tabbingOut = false; - this.focusGridView(); - this._focusifyCellNode(false); - this.cell = inCell; - this.rowIndex = inRowIndex; - this._focusifyCellNode(true); - } - // even if this cell isFocusCell, the document focus may need to be rejiggered - // call opera on delay to prevent keypress from altering focus - if(dojo.isOpera){ - setTimeout(dojo.hitch(this.grid, 'onCellFocus', this.cell, this.rowIndex), 1); - }else{ - this.grid.onCellFocus(this.cell, this.rowIndex); - } - }, - next: function(){ - // summary: - // focus next grid cell - var row=this.rowIndex, col=this.cell.index+1, cc=this.grid.layout.cellCount-1, rc=this.grid.rowCount-1; - if(col > cc){ - col = 0; - row++; - } - if(row > rc){ - col = cc; - row = rc; - } - this.setFocusIndex(row, col); - }, - previous: function(){ - // summary: - // focus previous grid cell - var row=(this.rowIndex || 0), col=(this.cell.index || 0) - 1; - if(col < 0){ - col = this.grid.layout.cellCount-1; - row--; - } - if(row < 0){ - row = 0; - col = 0; - } - this.setFocusIndex(row, col); - }, - move: function(inRowDelta, inColDelta) { - // summary: - // focus grid cell based on position relative to current focus - // inRowDelta: int - // vertical distance from current focus - // inColDelta: int - // horizontal distance from current focus - var - rc = this.grid.rowCount-1, - cc = this.grid.layout.cellCount-1, - r = this.rowIndex, - i = this.cell.index, - row = Math.min(rc, Math.max(0, r+inRowDelta)), - col = Math.min(cc, Math.max(0, i+inColDelta)); - this.setFocusIndex(row, col); - if(inRowDelta){ - this.grid.updateRow(r); - } - }, - previousKey: function(e){ - if(this.isFirstFocusCell()){ - this.tabOut(this.grid.domNode); - }else{ - dojo.stopEvent(e); - this.previous(); - } - }, - nextKey: function(e) { - if(this.isLastFocusCell()){ - this.tabOut(this.grid.lastFocusNode); - }else{ - dojo.stopEvent(e); - this.next(); - } - }, - tabOut: function(inFocusNode){ - this.tabbingOut = true; - inFocusNode.focus(); - }, - focusGridView: function(){ - dojox.grid.fire(this.focusView, "focus"); - }, - focusGrid: function(inSkipFocusCell){ - this.focusGridView(); - this._focusifyCellNode(true); - }, - doFocus: function(e){ - // trap focus only for grid dom node - if(e && e.target != e.currentTarget){ - return; - } - // do not focus for scrolling if grid is about to blur - if(!this.tabbingOut && this.isNoFocusCell()){ - // establish our virtual-focus, if necessary - this.setFocusIndex(0, 0); - } - this.tabbingOut = false; - } -}); - -} |