diff options
Diffstat (limited to 'js/dojo-1.7.2/dojox/grid/enhanced/_Events.js')
| -rw-r--r-- | js/dojo-1.7.2/dojox/grid/enhanced/_Events.js | 215 |
1 files changed, 215 insertions, 0 deletions
diff --git a/js/dojo-1.7.2/dojox/grid/enhanced/_Events.js b/js/dojo-1.7.2/dojox/grid/enhanced/_Events.js new file mode 100644 index 0000000..c461531 --- /dev/null +++ b/js/dojo-1.7.2/dojox/grid/enhanced/_Events.js @@ -0,0 +1,215 @@ +//>>built +define("dojox/grid/enhanced/_Events", [ + "dojo/_base/kernel", + "dojo/_base/declare", + "dojo/keys", + "dojo/_base/html", + "dojo/_base/event", + "dojox/grid/_Events" +], function(dojo, declare, keys, html, event, _Events){ + +return declare("dojox.grid.enhanced._Events", null, { + // summary: + // Overwrite some default events of DataGrid + // + // description: + // Methods are copied or replaced for overwriting, this might be refined once + // an overall plugin architecture is set up for DataGrid. + + //_events: Object + // Method map cached from dojox.grid._Events(). + _events: null, + + // headerCellActiveClass: String + // css class to apply to grid header cells when activated(mouse down) + headerCellActiveClass: 'dojoxGridHeaderActive', + + // cellActiveClass: String + // css class to apply to grid content cells when activated(mouse down) + cellActiveClass: 'dojoxGridCellActive', + + // rowActiveClass: String + // css class to apply to grid rows when activated(mouse down) + rowActiveClass: 'dojoxGridRowActive', + + constructor: function(inGrid){ + //TODO - extend dojox.grid._Events rather than mixin for 1.8 + this._events = new _Events(); + //mixin "this" to Grid + inGrid.mixin(inGrid, this); + }, + dokeyup: function(e){ + // summary: + // Grid key up event handler. + // e: Event + // Un-decorated event object + this.focus.currentArea().keyup(e); + }, + onKeyDown: function(e){ + // summary: + // Overwritten, see dojox.grid._Events.onKeyDown(); + if(e.altKey || e.metaKey){ return; } + var focus = this.focus; + var editing = this.edit.isEditing(); + switch(e.keyCode){ + case keys.TAB: + if(e.ctrlKey){ return; } + focus.tab(e.shiftKey ? -1:1,e); + break; + case keys.UP_ARROW: + case keys.DOWN_ARROW: + if(editing){ return; } + focus.currentArea().move(e.keyCode == keys.UP_ARROW ? -1 : 1, 0, e); + break; + case keys.LEFT_ARROW: + case keys.RIGHT_ARROW: + if(editing){ return; } + var offset = (e.keyCode == keys.LEFT_ARROW) ? 1 : -1; + if(html._isBodyLtr()){ offset *= -1; } + focus.currentArea().move(0, offset, e); + break; + case keys.F10: + if(this.menus && e.shiftKey){ + this.onRowContextMenu(e); + } + break; + default: + focus.currentArea().keydown(e); + break; + } + }, + //TODO - make the following events more reasonalble - e.g. more accurate conditions + //events for row selectors + domouseup: function(e){ + if(e.cellNode){ + this.onMouseUp(e); + }else{ + this.onRowSelectorMouseUp(e); + } + }, + domousedown: function(e){ + if(!e.cellNode){ + this.onRowSelectorMouseDown(e); + } + }, + onMouseUp: function(e){ + // summary: + // New - Event fired when mouse is up inside grid. + // e: Event + // Decorated event object that contains reference to grid, cell, and rowIndex + this[e.rowIndex == -1 ? "onHeaderCellMouseUp" : "onCellMouseUp"](e); + }, + onCellMouseDown: function(e){ + // summary: + // Overwritten, see dojox.grid._Events.onCellMouseDown() + html.addClass(e.cellNode, this.cellActiveClass); + html.addClass(e.rowNode, this.rowActiveClass); + }, + onCellMouseUp: function(e){ + // summary: + // New - Event fired when mouse is up inside content cell. + // e: Event + // Decorated event object that contains reference to grid, cell, and rowIndex + html.removeClass(e.cellNode, this.cellActiveClass); + html.removeClass(e.rowNode, this.rowActiveClass); + }, + onCellClick: function(e){ + // summary: + // Overwritten, see dojox.grid._Events.onCellClick() + + //invoke dojox.grid._Events.onCellClick() + this._events.onCellClick.call(this, e); + //move mouse events to the focus manager. + this.focus.contentMouseEvent(e);//TODO + }, + onCellDblClick: function(e){ + // summary: + // Overwritten, see dojox.grid._Events.onCellDblClick() + if(this.pluginMgr.isFixedCell(e.cell)){ return; } + if(this._click.length > 1 && (!this._click[0] || !this._click[1])){ + this._click[0] = this._click[1] = e; + } + //invoke dojox.grid._Events.onCellDblClick() + this._events.onCellDblClick.call(this, e); + }, + onRowClick: function(e){ + // summary: + // Overwritten, see dojox.grid._Events.onRowClick() + this.edit.rowClick(e); + if(!e.cell || !this.plugin('indirectSelection')){ + this.selection.clickSelectEvent(e); + } + }, + onRowContextMenu: function(e){ + // summary: + // Overwritten, see dojox.grid._Events.onRowContextMenu() + if(!this.edit.isEditing() && this.menus){ + this.showMenu(e); + } + }, + onSelectedRegionContextMenu: function(e){ + // summary: + // New - Event fired when a selected region context menu is accessed via mouse right click. + // e: Event + // Decorated event object which contains reference to grid and info of selected + // regions(selection type - row|column, selected index - [...]) + if(this.selectedRegionMenu){ + this.selectedRegionMenu._openMyself({ + target: e.target, + coords: e.keyCode !== keys.F10 && "pageX" in e ? { + x: e.pageX, + y: e.pageY + } : null + }); + event.stop(e); + } + }, + onHeaderCellMouseOut: function(e){ + // summary: + // Overwritten, see dojox.grid._Events.onHeaderCellMouseOut() + if(e.cellNode){ + html.removeClass(e.cellNode, this.cellOverClass); + html.removeClass(e.cellNode, this.headerCellActiveClass); + } + }, + onHeaderCellMouseDown: function(e){ + // summary: + // Overwritten, see dojox.grid._Events.onHeaderCellMouseDown() + if(e.cellNode){//TBD - apply to selection region for nested sorting? + html.addClass(e.cellNode, this.headerCellActiveClass); + } + }, + onHeaderCellMouseUp: function(e){ + // summary: + // New event + if(e.cellNode){ + html.removeClass(e.cellNode, this.headerCellActiveClass); + } + }, + onHeaderCellClick: function(e){ + // summary: + // Overwritten, see dojox.grid._Events.onHeaderCellClick() + //move focus to header. + this.focus.currentArea("header"); + //invoke dojox.grid._Events.onHeaderCellClick() + if(!e.cell.isRowSelector){ + this._events.onHeaderCellClick.call(this, e); + } + //move mouse events to the focus manager. + this.focus.headerMouseEvent(e); + }, + onRowSelectorMouseDown: function(e){ + this.focus.focusArea("rowHeader", e); + }, + + onRowSelectorMouseUp: function(e){}, + + //triggered in _View, see Selector plugin + onMouseUpRow: function(e){ + if(e.rowIndex != -1){ + this.onRowMouseUp(e); + } + }, + onRowMouseUp: function(e){} +}); +});
\ No newline at end of file |
