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