/**
 * 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);
            }
        }
    }
});