package com.github.xburning.dubboswitch.view.app;

import com.github.xburning.dubboswitch.entity.ZookeeperApp;
import com.github.xburning.dubboswitch.repository.ZookeeperAppRepository;
import com.vaadin.server.FontAwesome;
import com.vaadin.spring.annotation.SpringUI;
import com.vaadin.ui.*;
import com.vaadin.ui.themes.ValoTheme;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.util.StringUtils;

/**
 * 添加Zookeeper 应用服务
 */
@SpringUI
public class ZookeeperAppAddUI extends Window{

    private final ZookeeperAppRepository zookeeperAppRepository;

    public boolean isAddSuccess = false;

    private TextField nameField;

    @Autowired
    public ZookeeperAppAddUI(ZookeeperAppRepository zookeeperAppRepository) {
        super("添加应用服务");
        this.zookeeperAppRepository = zookeeperAppRepository;
        center();
        setModal(true);
        setClosable(true);
        setDraggable(false);
        setResizable(false);
        setWidth(300,Unit.PIXELS);
        setHeight(150,Unit.PIXELS);
        createSubmitForm();
    }

    /**
     * 创建提交表单
     */
    private void createSubmitForm() {
        FormLayout formLayout = new FormLayout();
        nameField = new TextField();
        nameField.setCaption("服务名称");
        formLayout.addComponent(nameField);
        formLayout.addComponent(createSaveButton());
        formLayout.setMargin(true);
        setContent(formLayout);
    }

    /**
     * 创建保存按钮
     * @return
     */
    private Button createSaveButton() {
        Button saveButton = new Button("保存", FontAwesome.CHECK);
        saveButton.addStyleName(ValoTheme.BUTTON_PRIMARY);
        saveButton.addClickListener((Button.ClickListener) clickEvent -> {
            String name = nameField.getValue();
            if (StringUtils.isEmpty(name)) {
                Notification.show("服务名称不能为空!",Notification.Type.ERROR_MESSAGE);
                return;
            }
            //insert data
            ZookeeperApp zookeeperApp = new ZookeeperApp();
            zookeeperApp.setName(name);
            zookeeperAppRepository.save(zookeeperApp);
            isAddSuccess = true;
            close();
        });
        return saveButton;
    }

    /**
     * 重置表单
     */
    public void clearForm() {
        nameField.clear();
    }
}