import { WebControl, CommonEvent } from "../../ui/events";
import { observable } from "mobx";
import { ControlModel } from "../../ui/controls/ControlModel";

enum MenuEvent {
    DisplayChanged,
    ElementClick
}

export class ContextMenuModel extends ControlModel<MenuEvent> {

    @observable
    display : string;

    constructor(name : string, options) {
        super(WebControl.Button, name, options);

        this.setOptions(options);
    }

    onClick() {
        this.triggerEvent(MenuEvent.ElementClick);
    }

    onInitialized() {
        this.triggerCommon(CommonEvent.Initialized, {
            display: this.display
        });
    }

    updateOptions(props) {
        if (this.display !== props.display) {
            this.display = props.display;
        }      
    }

    protected setOptions(options) {
        this.display = options.display;  
    }

    protected onEvent(event : MenuEvent, name : string, ...args : any[]) {
        if (this.name !== name) {
            return;
        }

        switch (event) {
            case MenuEvent.ElementClick:
                break;
            case MenuEvent.DisplayChanged:
                this.display = args[0];
                break;
            default:
                super.onEvent(event, name, ...args);
                break;
        }
    }

}
