/**
 * @private
 */
Ext.define('Ext.exporter.file.ooxml.excel.Border', {
    extend: 'Ext.exporter.file.ooxml.Base',
 
    requires: [
        'Ext.exporter.file.ooxml.excel.BorderPr'
    ],
 
    config: {
        /**
         * @cfg {Ext.exporter.file.ooxml.excel.BorderPr} left
         *
         * Left border settings
         */
        left: null,
        
        /**
         * @cfg {Ext.exporter.file.ooxml.excel.BorderPr} right
         *
         * Right border settings
         */
        right: null,
        
        /**
         * @cfg {Ext.exporter.file.ooxml.excel.BorderPr} top
         *
         * Top border settings
         */
        top: null,
        
        /**
         * @cfg {Ext.exporter.file.ooxml.excel.BorderPr} bottom
         *
         * Bottom border settings
         */
        bottom: null
    },
 
    tpl: [
        '<border>',
        '<tpl if="left">{[values.left.render()]}</tpl>',
        '<tpl if="right">{[values.right.render()]}</tpl>',
        '<tpl if="top">{[values.top.render()]}</tpl>',
        '<tpl if="bottom">{[values.bottom.render()]}</tpl>',
        '</border>'
    ],
 
    autoGenerateKey: ['left', 'right', 'top', 'bottom'],
 
    destroy: function() {
        this.setConfig({
            left: null,
            right: null,
            top: null,
            bottom: null
        });
        
        this.callParent();
    },
 
    applyLeft: function(border) {
        if (border && !border.isBorderPr) {
            return new Ext.exporter.file.ooxml.excel.BorderPr(border);
        }
 
        return border;
    },
 
    applyTop: function(border) {
        if (border && !border.isBorderPr) {
            return new Ext.exporter.file.ooxml.excel.BorderPr(border);
        }
 
        return border;
    },
 
    applyRight: function(border) {
        if (border && !border.isBorderPr) {
            return new Ext.exporter.file.ooxml.excel.BorderPr(border);
        }
 
        return border;
    },
 
    applyBottom: function(border) {
        if (border && !border.isBorderPr) {
            return new Ext.exporter.file.ooxml.excel.BorderPr(border);
        }
 
        return border;
    },
 
    updateLeft: function(border, oldData) {
        Ext.destroy(oldData);
 
        if (border) {
            border.setTag('left');
        }
    },
 
    updateTop: function(border, oldData) {
        Ext.destroy(oldData);
 
        if (border) {
            border.setTag('top');
        }
    },
 
    updateRight: function(border, oldData) {
        Ext.destroy(oldData);
 
        if (border) {
            border.setTag('right');
        }
    },
 
    updateBottom: function(border, oldData) {
        Ext.destroy(oldData);
 
        if (border) {
            border.setTag('bottom');
        }
    }
});