/** * @private * Private Container class used by the {@link Ext.grid.RowEditor} to hold its buttons. */ Ext.define('Ext.grid.RowEditorButtons', { extend: 'Ext.container.Container', alias: 'widget.roweditorbuttons', frame: true, shrinkWrap: true, position: 'bottom', constructor: function(config) { var me = this, rowEditor = config.rowEditor, cssPrefix = Ext.baseCSSPrefix, plugin = rowEditor.editingPlugin; config = Ext.apply({ baseCls: cssPrefix + 'grid-row-editor-buttons', defaults: { xtype: 'button', ui: rowEditor.buttonUI, scope: plugin, flex: 1, minWidth: Ext.panel.Panel.prototype.minButtonWidth }, items: [{ cls: cssPrefix + 'row-editor-update-button', itemId: 'update', handler: plugin.completeEdit, text: rowEditor.saveBtnText, disabled: rowEditor.updateButtonDisabled }, { cls: cssPrefix + 'row-editor-cancel-button', handler: plugin.cancelEdit, text: rowEditor.cancelBtnText }] }, config); me.callParent([config]); me.addClsWithUI(me.position); }, setButtonPosition: function(position) { var me = this; me.removeClsWithUI(me.position); me.position = position; me.addClsWithUI(position); }, getFramingInfoCls: function(){ return this.baseCls + '-' + this.ui + '-' + this.position; }, getFrameInfo: function() { var frameInfo = this.callParent(); // Trick Renderable into rendering the top framing elements, even though they // are not needed in the default "bottom" position. This allows us to flip the // buttons into "top" position without re-rendering. frameInfo.top = true; return frameInfo; } });