/*
 * 特别声明：本技术材料受《中华人民共和国著作权法》、《计算机软件保护条例》等法律、法规、行政
 * 规章以及有关国际条约的保护，赞同科技享有知识产权、保留一切权利并视其为技术秘密。未经本公司书
 * 面许可，任何人不得擅自（包括但不限于：以非法的方式复制、传播、展示、镜像、上载、下载）使用，
 * 不得向第三方泄露、透露、披露。否则，本公司将依法追究侵权者的法律责任。特此声明！
 *
 * Special Declaration: These technical material reserved as the technical secrets by AGREE
 * TECHNOLOGY have been protected by the "Copyright Law" "ordinances on Protection of Computer
 * Software" and other relevant administrative regulations and international treaties. Without
 * the written permission of the Company, no person may use (including but not limited to the
 * illegal copy, distribute, display, image, upload, and download) and disclose the above
 * technical documents to any third party. Otherwise, any infringer shall afford the legal
 * liability to the company.
 */

/**
 * Created by huangdeyun on 2015/3/31.
 */
define(["adoreapp/widget/BaseWidget", "adoreapp/widget/EventHub",
        "adoreapp/widget/TableColumn", "adoreapp/widget/TableItem"],
    function (BaseWidget, EventHub, TableColumn, TableItem) {
        return BaseWidget.extend(function (base) {
            return {
                _initWidget: function (attrs) {
                    this.children = new Array();
                    this.columns = new Array();
                    this.items = new Array();
                    var template = attrs.template;
                    this.jqueryNode = $(template).attr("id", this.id);
                    this.attachNode = this.jqueryNode;
                    this._tHead = this.jqueryNode.find("tr");
                    this._tBody = this.jqueryNode.find("tbody");
                },

                addChild: function (child) {
                    if (child instanceof TableColumn) {
                        // 添加TableColumn
                        this.columns.push(child);
                    } else if (child instanceof TableItem) {
                        // 添加TableItem
                        this.items.push(child);
                    }
                    this.children.push(child);
                },

                _layout: function () {
                    base._layout.call(this);
                },

                // 设置每列的宽度，保证每列的宽度均衡,由TableColumn的layout发起调用
                refreshColumnsWidth: function () {
                    var size = 0, i;
                    for (i = 0; i < this.columns.length; i++) {
                        if (this.columns[i].visible) {
                            size++;
                        }
                    }
                    size = size <= 0 ? 1 : size;
                    var widthContent = (100.0 / size) + "%";
                    this._tHead.find("th").css("width", widthContent);
                }

            };
        });
    })