var WODAViews = Namespace.declare("tla.EAM.layer3",
    class WODAViews extends Interface {

        getItemView() {
            if (this.itemView)
                return this.itemView;

            this.itemView = DefaultItem.getInstance();
            return this.itemView;
        }
        getOverView() {
            if (this.overView)
                return this.overView;

            this.overView = DefaultOverview.getInstance();
            return this.overView;
        }
        getDetailsView() {
            if (this.detailsView)
                return this.detailsView;

            this.detailsView = DefaultDetails.getInstance();
            return this.detailsView;
        }
        getActionView() {
            if (this.actionView)
                return this.actionView;

            this.actionView = null;
            return this.actionView;
        }
    }
);

var WODA = Namespace.declare("com.ceruleanCircle.EAM.5_ux",
    class WODA extends UcpComponent {

        static start() {
            var TheLastApp = window["TheLastApp"] = window["TheLastApp"] || new this();

            console.log("TheLastApp is ready ", TheLastApp.type.dependencyTree);
            TheLastApp.init();

        }
        static dependencies() {
            return [
                "/EAMD.ucp/Components/com/ceruleanCircle/EAM/5_ux/WODA/WhatPanel/1.0.0/WhatPanel.component.xml",
                "/EAMD.ucp/Components/com/ceruleanCircle/EAM/5_ux/WODA/OverviewPanel/1.0.0/OverviewPanel.component.xml",
                "/EAMD.ucp/Components/com/ceruleanCircle/EAM/5_ux/WODA/DetailsPanel/1.0.0/DetailsPanel.component.xml",
                "/EAMD.ucp/Components/com/ceruleanCircle/EAM/5_ux/WODA/PageOverview/1.0.0/PageOverview.component.xml",
                //"/EAMD.ucp/Components/com/ceruleanCircle/EAM/5_ux/WODA/DetailsPanel/0.1.0/DetailsPanel.component.xml",
                //"/EAMD.ucp/Components/com/ceruleanCircle/EAM/5_ux/WODA/ActionsPanel/0.1.0/ActionsPanel.component.xml",

                // @todo move to OverviewPanel
                //new IOR().init("/EAMD.ucp/Components/ski/kornel/SlipJS/2.1.0-Once/SlipJS.component.xml"),

                //"/EAMD.ucp/Components/com/ceruleanCircle/EAM/5_ux/WODA/WhatPanel/DefaultItem/0.1.0/DefaultItem.component.xml",
                //"/EAMD.ucp/Components/com/ceruleanCircle/EAM/5_ux/WODA/OverviewPanel/DefaultOverview/0.4.0/DefaultOverview.component.xml",
                //"/EAMD.ucp/Components/com/ceruleanCircle/EAM/5_ux/WODA/DetailsPanel/DefaultDetails/0.1.0/DefaultDetails.component.xml"
            ];
        }

        constructor() {
            super();
            Thinglish.implement(this, WODAViews, true);
        }

        init() {
            if (this.isInitialized)
                return;
            super.init();
            this.defaultView.append();
            this.what = WhatPanel.testInstance;
            this.add(this.what);

            this.overview = OverviewPanel.testInstance;
            this.overview.properties.url = "/EAMD.ucp/Components/com/ceruleanCircle/EAM/5_ux/WODA/OverviewPanel/DefaultOverview/1.0.0/src/html/DefaultOverview.html";
            this.add(this.overview);
            /*
            this.details = PageOverview.getInstance();
            this.details.model.properties = {
                css: "col-sm-4 fullHeight",
                panel: {
                    classes: "fullHeight",
                    heading: "Details",
                    footer: "All the Attributes and Properties"
                },
                url: "http://ceruleancircle.com"
            }
            */
            this.details = DetailsPanel.getInstance();
            this.details.model.properties = {
                css: "col-sm-4 fullHeight",
				panel: {
					classes: "fullHeight",
					heading: "Details",
					overflow: "hidden",
					footer: "All the Attributes and Properties"
				}
            }
            this.add(this.details);

            /*            
            this.details = DetailsPanel.testInstance;
            this.actions = ActionsPanel.testInstance;

                        this.what.init(this.what.constructor.controller);
                        this.overview.init(this.overview.constructor.controller);
                        this.details.init(this.details.constructor.controller);
                        this.actions.init(this.actions.constructor.controller);
            */
            //this.what.controller.eventSupport.addEventListener("selected", this, this.handleSelection.bind(this));
            //this.overview.controller.eventSupport.addEventListener("selected", this, this.handleSelection.bind(this));
            //this.details.controller.eventSupport.addEventListener("selected", this, this.handleSelection.bind(this));

            this.name = "The Last App you will ever need";

            return this;
        }

        get container() {
            return this.panel.defaultView.container;
        }
        get panel() {
            var element = this.documentElement;
            if (!element) return null;
            return element.children[0].weBeanNode.model.ucpComponent;
        }


        handleSelection(event, item) {
            var This = event.target;
            if (event.source != This.overview.controller)
                This.overview.select(item);

            This.details.controller.selectedItem = item;
            //This.actions.controller.selectedItem = item;

        }


        structrSchema() {
            TheLastApp.what.select(Structr.find("SchemaNode"));
        }

        goToRepository() {
            window.location.href = "http://structr.cerulean.it:6082/WODA-i7/b305af4c135f4ef0bdecb328e09d6362";
        }

        goStructrRepository() {
            window.location.href = "http://structr.cerulean.it:6082/WODA-i7/21a808a48b7745b2b2f7076d6ec4be09 ";
        }

        get wodaWeBeanNode() {
            return document.querySelector("[id*='WODA']").weBeanNode;
        }
        get wodaPanelWeBeanNode() {
            return this.wodaWeBeanNode.element.children[0].weBeanNode;
        }

        /*
        start() {
            document.weBeans.find();
            document.weBeans.registry.WODA.append(document.body);

        }
        */

    }
);


var ItemView = Namespace.declare("tla.EAM.layer3.WODAViews",
    class ItemView extends UcpView {
        get name() {}
        get title() {}
        get type() {}
        get description() {}
    }
);

var OverView = Namespace.declare("tla.EAM.layer3.WODAViews",
    class OverView extends UcpView {
        get paginationSize() {}
        set paginationSize(newValue) {}
        get nextPage() {}
    }
);

var DetailsView = Namespace.declare("tla.EAM.layer3.WODAViews",
    class DetailsView extends UcpView {

    }
);


var EditView = Namespace.declare("tla.EAM.layer3.WODAViews",
    class EditView extends UcpView {

    }
);