CardInPage.java 3.06 KB
package cn.csbr.app.gui.page;

import cn.csbr.app.config.FxConfigure;
import cn.csbr.app.gui.handler.ReturnMainPageHandler;
import cn.csbr.app.gui.handler.ToUseHandler;
import cn.csbr.app.gui.util.ButtonSize;
import cn.csbr.app.gui.util.ButtonUtils;
import javafx.application.Platform;
import javafx.geometry.Insets;
import javafx.scene.Node;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.VBox;
import org.controlsfx.tools.Borders;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

/**
 * 耗材柜登录类
 */
@Component
public class CardInPage extends AbstractPage {

    @Autowired
    private FxConfigure fxConfigure;
    @Autowired
    private ReturnMainPageHandler returnMainPageHandler;

    @Autowired
    private ToUseHandler toUseHandler;

    private List<ScheduledExecutorService> eses = new ArrayList<>();

    public CardInPage() {
    }

    @Override
    protected Node constructNode() {
        VBox vBox = new VBox();
        vBox.setStyle("-fx-text-alignment:center;-fx-alignment:center;");
        vBox.setPadding(new Insets(100, 0, 0, 0));
        Label text = new Label();
        text.setText("您已打开耗材柜进行操作:\n\n" +
                "30秒后系统将按照取货操作进行记录!\n" +
                "如您进行其他操作,请点击按钮进入导航页。\n");
        text.setStyle("-fx-text-alignment:left;-fx-alignment:center-left;-fx-font-size:2.5em");
        text.setMinWidth(800);
        text.setMaxWidth(800);
        Node wrappedText = Borders.wrap(text)
                .lineBorder()
                .title("提示信息")
                .thickness(1)
                .radius(0, 5, 5, 0)
                .build()
                .build();
        Button nextBtn = ButtonUtils.createOkButton("下一步",
                new ButtonSize(300, 200), e -> {
                    returnMainPageHandler.handle(e);
                    synchronized (eses) {
                        for (ScheduledExecutorService es : eses) {
                            if (es != null && !es.isShutdown()) {
                                es.shutdownNow();
                            }
                        }
                        eses.clear();
                    }
                });

        nextBtn.setStyle("-fx-font-size:2.5em");
        vBox.getChildren().addAll(wrappedText, nextBtn);
        return vBox;
    }

    @Override
    public void refresh() {
        synchronized (eses) {
            ScheduledExecutorService es = Executors.newSingleThreadScheduledExecutor();
            eses.add(es);
            es.schedule(
                    () -> {
                        Platform.runLater(() -> {
                            toUseHandler.handle(null);
                        });
                    }, fxConfigure.getUsedelaytime(), TimeUnit.SECONDS);


        }
    }
}