package com.imyeyu.fx.ui.components.alert;

/**
 * 询问确认弹窗
 *
 * @author 夜雨
 * @since 2022-08-20 23:37
 */
public abstract class AlertConfirm extends AlertTips {

	/**
	 * 默认构造器
	 *
	 * @param content 询问内容
	 */
	public AlertConfirm(String content) {
		this(AlertType.INFORMATION, content);
	}

	/**
	 * 构造器
	 *
	 * @param type 类型
	 */
	public AlertConfirm(AlertType type) {
		this(type, "");
	}

	/**
	 * 构造器
	 *
	 * @param type    类型
	 * @param content 询问内容
	 */
	public AlertConfirm(AlertType type, String content) {
		this(type, content, AlertButton.yes(), AlertButton.no());
	}

	/**
	 * 默认构造
	 *
	 * @param type    类型
	 * @param content 提示内容
	 * @param buttons    按钮
	 */
	public AlertConfirm(AlertType type, String content, AlertButton... buttons) {
		super(type, buttons);

		setTips(content);
		setOnActionEvent(action -> {
			if (action == AlertButton.Action.YES || action == AlertButton.Action.CONFIRM || action == AlertButton.Action.OK) {
				onConfirm();
			} else {
				onCancel();
			}
			return true;
		});
	}

	/** 确认事件 */
	protected abstract void onConfirm();

	/** 取消事件 */
	protected void onCancel() {
		// 子类可选实现
	}
}
