Grid HeaderContextMenu
Na komunitním fóru byla poptávka po kontextovém menu pro Ext.grid.Panel. V tuto chvíli již existuje modifikace přímo od jednoho z vývojářů Sencha Evanta Trimboli. Nicméně v téže době jsem na fórum publikoval další plugin, který umožňoval právě tuto funkčnost.
Obdobně jako v pluginu pro Extj.tab.Panel zde vytváříme událost headercontextmenu opět kompatibilní s ExtJS 3.
Ext.define('Ext.ux.grid.HeaderContextMenu', {
alias : 'plugin.headercontextmenu',
mixins : {
observable : 'Ext.util.Observable'
},
init : function(grid) {
this.gridPanel = grid;
this.headerCt = grid.headerCt;
this.headerCt.addEvents('contextmenu');
this.gridPanel.addEvents('headercontextmenu');
this.mon(this.headerCt, {
scope : this,
afterlayout : this.onAfterLayout,
single : true
});
},
onAfterLayout : function() {
this.mon(this.headerCt.el, {
scope : this,
contextmenu : this.onContextMenu,
delegate : 'div.x-column-header'
});
},
onContextMenu : function(event, target) {
var me = this,
column = this.headerCt.getChildByElement(target);
event.preventDefault();
this.gridPanel.fireEvent(
'headercontextmenu', this.gridPanel,
column.getIndex(), column, event, target
);
}
});