/** * Component layout for editors * @private */ Ext.define('Ext.layout.container.Editor', { /* Begin Definitions */ alias: 'layout.editor', extend: 'Ext.layout.container.Container', /* End Definitions */ autoSizeDefault: { width: 'field', height: 'field' }, getItemSizePolicy: function (item) { var me = this, autoSize = me.owner.autoSize; return me.sizePolicy || (me.sizePolicy = { setsWidth: autoSize && autoSize.width === 'boundEl' ? 1 : 0, setsHeight: autoSize && autoSize.height === 'boundEl' ? 1 : 0 }); }, calculate: function(ownerContext) { var me = this, owner = me.owner, autoSize = owner.autoSize, fieldWidth, fieldHeight; if (autoSize === true) { autoSize = me.autoSizeDefault; } // Calculate size of both Editor, and its owned Field if (autoSize) { fieldWidth = me.getDimension(owner, autoSize.width, 'getWidth', owner.width); fieldHeight = me.getDimension(owner, autoSize.height, 'getHeight', owner.height); } // Set Field size ownerContext.childItems[0].setSize(fieldWidth, fieldHeight); // Bypass validity checking. Container layouts should not usually set their owner's size. ownerContext.setWidth(fieldWidth); ownerContext.setHeight(fieldHeight); // This is a Container layout, so publish content size ownerContext.setContentSize(fieldWidth || owner.field.getWidth(), fieldHeight || owner.field.getHeight()); }, getDimension: function(owner, type, getMethod, ownerSize){ switch (type) { // Size to boundEl's dimension case 'boundEl': return owner.boundEl[getMethod](); // Auto size (shrink wrap the Field's size case 'field': return undefined; // Size to the Editor's configured size default: return ownerSize; } } });