import { DockLayoutBase, View, dockProperty, stretchLastChildProperty } from "./dock-layout-common";

export * from "./dock-layout-common";

View.prototype[dockProperty.setNative] = function(this: View, value: "left" | "top" | "right" | "bottom") {
    const nativeView: android.view.View = this.nativeViewProtected;
    const lp = nativeView.getLayoutParams() || new org.nativescript.widgets.CommonLayoutParams();
    if (lp instanceof org.nativescript.widgets.CommonLayoutParams) {
        switch (value) {
            case "left":
                lp.dock = org.nativescript.widgets.Dock.left;
                break;

            case "top":
                lp.dock = org.nativescript.widgets.Dock.top;
                break;

            case "right":
                lp.dock = org.nativescript.widgets.Dock.right;
                break;

            case "bottom":
                lp.dock = org.nativescript.widgets.Dock.bottom;
                break;

            default:
                throw new Error(`Invalid value for dock property: ${value}`);
        }

        nativeView.setLayoutParams(lp);
    }
}

export class DockLayout extends DockLayoutBase {
    nativeViewProtected: org.nativescript.widgets.DockLayout;

    public createNativeView() {
        return new org.nativescript.widgets.DockLayout(this._context);
    }

    [stretchLastChildProperty.getDefault](): boolean {
        return true;
    }
    [stretchLastChildProperty.setNative](value: boolean) {
        this.nativeViewProtected.setStretchLastChild(value);
    }
}
