/**
 * This class is used internally to manage the layout of `Ext.button.Segmented`.
 * @private
 */
Ext.define('Ext.layout.container.SegmentedButton', {
    extend: 'Ext.layout.container.Container',
    alias: 'layout.segmentedbutton',
 
    needsItemSize: false,
    setsItemSize: false,
 
    _btnRowCls: Ext.baseCSSPrefix + 'segmented-button-row',
 
    getRenderTree: function() {
        var me = this,
            result = me.callParent(),
            i, ln;
 
        if (me.owner.getVertical()) {
            for (= 0, ln = result.length; i < ln; i++) {
                result[i] = {
                    cls: me._btnRowCls,
                    cn: result[i]
                };
            }
        }
 
        return result;
    },
 
    getItemLayoutEl: function(item) {
        var dom = item.el.dom;
 
        return this.owner.getVertical() ? dom.parentNode : dom;
    },
 
    onDestroy: function() {
        var targetEl, row;
        
        // The items of a Segmented Button create an Ext.dom.Element reference
        // to their "container" element (see Ext.util.Renderable#finishRender)
        // for vertical Segmented Buttons this container ends up being the
        // 'segmented-button-row' element, which is not a childEl of either the container
        // or the layout and so it does not get automatically cleaned up upon destruction,
        // leaving the element orphaned, unless we destroy it now.
        if (this.owner.rendered) {
            targetEl = this.getRenderTarget();
 
            while ((row = targetEl.last())) {
                row.destroy();
            }
        }
    }
});