/** * @class Ext.layout.container.AbstractContainer * @extends Ext.layout.Layout * Please refer to sub classes documentation */ Ext.define('Ext.layout.container.AbstractContainer', { /* Begin Definitions */ extend: 'Ext.layout.Layout', /* End Definitions */ type: 'container', fixedLayout: true, // @private managedHeight: true, // @private managedWidth: true, /** * @cfg {Boolean} bindToOwnerCtComponent * Flag to notify the ownerCt Component on afterLayout of a change */ bindToOwnerCtComponent: false, /** * @cfg {Boolean} bindToOwnerCtContainer * Flag to notify the ownerCt Container on afterLayout of a change */ bindToOwnerCtContainer: false, /** * @cfg {String} itemCls * <p>An optional extra CSS class that will be added to the container. This can be useful for adding * customized styles to the container or any of its children using standard CSS rules. See * {@link Ext.Component}.{@link Ext.Component#ctCls ctCls} also.</p> * </p> */ isManaged: function(dimension) { dimension = Ext.String.capitalize(dimension); var me = this, child = me, managed = me['managed' + dimension], ancestor = me.owner.ownerCt; if (ancestor && ancestor.layout) { while (ancestor && ancestor.layout) { if (managed === false || ancestor.layout['managed' + dimension] === false) { managed = false; break; } ancestor = ancestor.ownerCt; } } return managed; }, layout: function() { var me = this, owner = me.owner; if (Ext.isNumber(owner.height) || owner.isViewport) { me.managedHeight = false; } if (Ext.isNumber(owner.width) || owner.isViewport) { me.managedWidth = false; } me.callParent(arguments); }, /** * Set the size of an item within the Container. We should always use setCalculatedSize. * @private */ setItemSize: function(item, width, height) { if (Ext.isObject(width)) { height = width.height; width = width.width; } item.setCalculatedSize(width, height, this.owner); }, /** * <p>Returns an array of child components either for a render phase (Performed in the beforeLayout method of the layout's * base class), or the layout phase (onLayout).</p> * @return {Array} of child components */ getLayoutItems: function() { return this.owner && this.owner.items && this.owner.items.items || []; }, afterLayout: function() { this.owner.afterLayout(this); }, /** * Returns the owner component's resize element. * @return {Ext.core.Element} */ getTarget: function() { return this.owner.getTargetEl(); }, /** * <p>Returns the element into which rendering must take place. Defaults to the owner Container's {@link Ext.AbstractComponent#targetEl}.</p> * May be overridden in layout managers which implement an inner element. * @return {Ext.core.Element} */ getRenderTarget: function() { return this.owner.getTargetEl(); } });