/** * 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' }, sizePolicies: { // indexed by autoSize.width $: { // indexed by autoSize.height $: { readsWidth: 1, readsHeight: 1, setsWidth: 0, setsHeight: 0 }, boundEl: { readsWidth: 1, readsHeight: 0, setsWidth: 0, setsHeight: 1 } }, boundEl: { // indexed by autoSize.height $: { readsWidth: 0, readsHeight: 1, setsWidth: 1, setsHeight: 0 }, boundEl: { readsWidth: 0, readsHeight: 0, setsWidth: 1, setsHeight: 1 } } }, getItemSizePolicy: function (item) { var me = this, autoSize = me.owner.autoSize, key = autoSize && autoSize.width, policy = me.sizePolicies; policy = policy[key] || policy.$; key = autoSize && autoSize.height; policy = policy[key] || policy.$; return policy; }, 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; } }});