var Column = Namespace.declare("com.twitter.Bootstrap.Grid",
    class Column extends UcpComponent {
        static get implements() {
            return [];
        }

        static get overwriteServerDescriptor() {
            return true;
        }

        static get dependencies() {
            return [
                "/EAMD.ucp/Components/org/lesscss/Less/3.8.1/Less.component.xml",
            ];
        }

        static get weBeanUnitPaths() {
            return [
                "./src/html/weBeans/Column.weBean.html"
            ];
        }

        static start() {
            UcpComponentSupport.importLink(this.IOR.loader.basePath + "/src/less/" + this.name + ".less", "stylesheet/less", "text/css");
        }

        constructor() {
            super();
        }

        init() {
            super.init();

            const demoModel = {
                name: "Column",
                description: "",
                badge: "",
                xs: 12,
                sm: null,
                md: null,
                lg: null,
                offset_xs: null,
                offset_sm: null,
                offset_md: null,
                offset_lg: null,
                pull_xs: null,
                pull_sm: null,
                pull_md: null,
                pull_lg: null,
                push_xs: null,
                push_sm: null,
                push_md: null,
                push_lg: null,
                cssClasses: "col-xs-12"
            };
            this.model = demoModel;
            this.model.autoUpdate = true;
            this.actionIndex = Thinglish.createActionIndexOf(Column, this);
            return this;
        }

        onDomReady(view) {
        }

        updateView(view, updateObject) {
            // if (!(view instanceof DefaultView)) return;

            // if (!updateObject) {
            //     return;
            // }
            Object.keys(updateObject).forEach(
                member => {
                    switch (member) {
                        case "xs":
                        case "offset_xs":
                        case "pull_xs":
                        case "push_xs":
                            this._private.xs = '';
                            if (this.model.xs != undefined) this._private.xs += " col-xs-" + this.model.xs;
                            if (this.model.offset_xs != undefined) this._private.xs += " col-xs-offset-" + this.model.offset_xs;
                            if (this.model.pull_xs != undefined) this._private.xs += " col-xs-pull-" + this.model.pull_xs;
                            if (this.model.push_xs != undefined) this._private.xs += " col-xs-push-" + this.model.push_xs;
                            break;
                        case "sm":
                        case "offset_sm":
                        case "pull_sm":
                        case "push_sm":
                            this._private.sm = '';
                            if (this.model.sm != undefined) this._private.sm += " col-sm-" + this.model.sm;
                            if (this.model.offset_sm != undefined) this._private.sm += " col-sm-offset-" + this.model.offset_sm;
                            if (this.model.pull_sm != undefined) this._private.sm += " col-sm-pull-" + this.model.pull_sm;
                            if (this.model.push_sm != undefined) this._private.sm += " col-sm-push-" + this.model.push_sm;
                            break;
                        case "md":
                        case "offset_md":
                        case "pull_md":
                        case "push_md":
                            this._private.md = '';
                            if (this.model.md != undefined) this._private.md += " col-md-" + this.model.md;
                            if (this.model.offset_md != undefined) this._private.md += " col-md-offset-" + this.model.offset_md;
                            if (this.model.pull_md != undefined) this._private.md += " col-md-pull-" + this.model.pull_md;
                            if (this.model.push_md != undefined) this._private.md += " col-md-push-" + this.model.push_md;
                            break;
                        case "lg":
                        case "offset_lg":
                        case "pull_lg":
                        case "push_lg":
                            this._private.lg = '';
                            if (this.model.lg != undefined) this._private.lg += " col-lg-" + this.model.lg;
                            if (this.model.offset_lg != undefined) this._private.lg += " col-lg-offset-" + this.model.offset_lg;
                            if (this.model.pull_lg != undefined) this._private.lg += " col-lg-pull-" + this.model.pull_lg;
                            if (this.model.push_lg != undefined) this._private.lg += " col-lg-push-" + this.model.push_lg;
                            break;
                        case "cssClasses":
                            return;
                        default:
                        //update something in any case
                    }
                    let css = ''
                    if(this._private.xs != undefined) css += this._private.xs;
                    if(this._private.sm != undefined) css += this._private.sm;
                    if(this._private.md != undefined) css += this._private.md;
                    if(this._private.lg != undefined) css += this._private.lg;
                    this.model.cssClasses = css;
                }
            );
        }

        handleSelection(event, item) {
            Action.do(DetailsView.ACTION_SHOW, this);
        }

        startSelectWorkflow() {
            console.info(this.constructor.name, "startSelectWorkflow");
        }

        assign() {
            console.info(this.constructor.name, "assign");
        }

        setEmpty() {
            console.info(this.constructor.name, "setEmpty");
        }
    }
);