webui-aria2/js/libs/dojox/grid/enhanced/_Events.js.uncompressed.js
2012-05-01 19:52:07 +08:00

215 lines
6.1 KiB
JavaScript

//>>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){}
});
});