/**
 * A base panel class for panels with a header a single view.
 * 
 * @private
 */
Ext.define('Ext.calendar.panel.AbstractBase', {
    extend: 'Ext.Panel',

    requires: [
        'Ext.layout.Fit'
    ],

    layout: 'fit',

    autoSize: false,

    initialize: function() {
        var me = this;

        me.callParent();

        if (me.syncHeaderSize) {
            me.element.on('resize', 'handleResize', me);
            // Listen to the refresh event the first time to prevent scrollbar flicker
            me.getView().on('refresh', 'handleRefresh', me, { single: true });
        }
    },

    updateDayHeader: function(dayHeader) {
        if (dayHeader) {
            dayHeader.setDocked('top');
            this.add(dayHeader);
        }
    },

    updateView: function(view) {
        this.add(view);
    },

    privates: {
        handleRefresh: function() {
            this.handleResize();
        },

        handleResize: function() {
            var header = this.getDayHeader();

            if (header) {
                header.setOverflowWidth(this.getView().scrollable.getScrollbarSize().width);
            }
        }
    }
});
