diff options
Diffstat (limited to 'js/dojo-1.6/dojox/grid/enhanced/_Events.js')
| -rw-r--r-- | js/dojo-1.6/dojox/grid/enhanced/_Events.js | 223 |
1 files changed, 223 insertions, 0 deletions
diff --git a/js/dojo-1.6/dojox/grid/enhanced/_Events.js b/js/dojo-1.6/dojox/grid/enhanced/_Events.js new file mode 100644 index 0000000..fb81ccc --- /dev/null +++ b/js/dojo-1.6/dojox/grid/enhanced/_Events.js @@ -0,0 +1,223 @@ +/*
+ Copyright (c) 2004-2011, 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.enhanced._Events"]){ //_hasResource checks added by build. Do not use _hasResource directly in your code.
+dojo._hasResource["dojox.grid.enhanced._Events"] = true;
+dojo.provide("dojox.grid.enhanced._Events");
+
+dojo.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){
+ //get the default Grid events
+ this._events = new dojox.grid._Events();
+ //for methods that won't be overwritten, copy them to "this" scope
+ for(var p in this._events){
+ if(!this[p]){
+ this.p = this._events.p;
+ }
+ }
+ //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 dk = dojo.keys;
+ var focus = this.focus;
+ switch(e.keyCode){
+ case dk.TAB:
+ if(e.ctrlKey){ return; }
+ focus.tab(e.shiftKey ? -1:1,e);
+ break;
+ case dk.UP_ARROW:
+ case dk.DOWN_ARROW:
+ focus.currentArea().move(e.keyCode == dk.UP_ARROW ? -1 : 1, 0, e);
+ break;
+ case dk.LEFT_ARROW:
+ case dk.RIGHT_ARROW:
+ var offset = (e.keyCode == dk.LEFT_ARROW) ? 1 : -1;
+ if(dojo._isBodyLtr()){ offset *= -1; }
+ focus.currentArea().move(0, offset, e);
+ break;
+ case dk.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()
+ dojo.addClass(e.cellNode, this.cellActiveClass);
+ dojo.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
+ dojo.removeClass(e.cellNode, this.cellActiveClass);
+ dojo.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);
+ //now focus.setFocusCell need isEditing info, so call it after that is set.
+ this.focus.setFocusCell(e.cell, e.rowIndex);
+ },
+ onRowClick: function(e){
+ // summary:
+ // Overwritten, see dojox.grid._Events.onRowClick()
+ this.edit.rowClick(e);
+ if(e.cell && !e.cell.isRowSelector && (!this.rowSelectCell || !this.rowSelectCell.disabled(e.rowIndex))){
+ 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 !== dojo.keys.F10 && "pageX" in e ? {
+ x: e.pageX,
+ y: e.pageY
+ } : null
+ });
+ dojo.stopEvent(e);
+ }
+ },
+ onHeaderCellMouseOut: function(e){
+ // summary:
+ // Overwritten, see dojox.grid._Events.onHeaderCellMouseOut()
+ if(e.cellNode){
+ dojo.removeClass(e.cellNode, this.cellOverClass);
+ dojo.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?
+ dojo.addClass(e.cellNode, this.headerCellActiveClass);
+ }
+ },
+ onHeaderCellMouseUp: function(e){
+ // summary:
+ // New event
+ if(e.cellNode){
+ dojo.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){}
+});
+
+}
|
