/** * @private */Ext.define('Ext.grid.plugin.HeaderReorderer', { extend: 'Ext.plugin.Abstract', alias: 'plugin.gridheaderreorderer', requires: [ 'Ext.grid.header.DragZone', 'Ext.grid.header.DropZone' ], init: function(headerCt) { this.headerCt = headerCt; headerCt.on({ boxready: this.onHeaderCtRender, single: true, scope: this }); }, destroy: function() { var me = this; // The grid may happen to never render me.headerCt.un('boxready', me.onHeaderCtRender, me); Ext.destroy(me.dragZone, me.dropZone); me.headerCt = me.dragZone = me.dropZone = null; me.callParent(); }, onHeaderCtRender: function(headerCt) { var me = this; me.dragZone = new Ext.grid.header.DragZone(me.headerCt); me.dropZone = new Ext.grid.header.DropZone(me.headerCt); if (me.disabled) { me.dragZone.disable(); } headerCt.setTouchAction({ panX: false }); }, enable: function() { this.disabled = false; if (this.dragZone) { this.dragZone.enable(); } }, disable: function() { this.disabled = true; if (this.dragZone) { this.dragZone.disable(); } }});