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

import com.imyeyu.fx.ui.TimiFXUI;
import javafx.beans.property.StringProperty;
import javafx.geometry.Pos;
import javafx.scene.control.Label;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.StackPane;
import javafx.scene.text.TextAlignment;
import javafx.stage.StageStyle;

/**
 * 阻塞式弹出加载中弹窗，此弹窗用户必须等待，不能手动关闭，显示期间不可操作其他窗体
 *
 * @author 夜雨
 * @since 2022-01-07 16:39
 */
public class AlertLoading extends AbstractAlert {

	/** 提示标签 */
	protected Label tips;

	/** 默认构造 */
	public AlertLoading() {
		this(TimiFXUI.MULTILINGUAL.text("loading"));
	}

	/**
	 * 构造器
	 *
	 * @param tips 提示
	 */
	public AlertLoading(String tips) {
		this.tips = new Label(tips);
		this.tips.setMaxSize(Double.MAX_VALUE, Double.MAX_VALUE);
		this.tips.setWrapText(true);
		this.tips.setPrefWidth(280);
		this.tips.setAlignment(Pos.CENTER);
		this.tips.setTextAlignment(TextAlignment.CENTER);

		BorderPane.setMargin(this.tips, PADDING_CONTENT);
		root.setEffect(Shadow.POPUP);
		root.setBorder(Stroke.DEFAULT);
		root.setCenter(this.tips);
		root.setBackground(BG.DEFAULT);
		root.setBottom(null);

		StackPane shadow = new StackPane();
		shadow.setPadding(Shadow.PADDING);
		shadow.setBackground(BG.TRANSPARENT);
		shadow.getChildren().add(root);

		getScene().setFill(null);
		getScene().setRoot(shadow);
		setTitle(TimiFXUI.MULTILINGUAL.text("loading"));
		initStyle(StageStyle.TRANSPARENT);
	}

	@Override
	protected void onEscape() {
		// 禁用 ESC 关闭
	}

	/**
	 * 设置提示文本
	 *
	 * @param tips 提示文本
	 */
	public void setTips(String tips) {
		this.tips.setText(tips);
	}

	/**
	 * 获取提示文本属性
	 *
	 * @return 提示文本属性
	 */
	public StringProperty tipsProperty() {
		return tips.textProperty();
	}

	/**
	 * 获取当前提示文本
	 *
	 * @return 提示文本
	 */
	public String getTips() {
		return tips.getText();
	}
}
