App1Page.java 3.07 KB
package cn.csbr.app.gui.page;

import cn.csbr.app.config.FxConfigure;
import cn.csbr.app.gui.GUIContext;
import cn.csbr.app.gui.component.common.ImageButton;
import cn.hutool.core.date.DateUtil;
import javafx.geometry.Insets;
import javafx.scene.Node;
import javafx.scene.control.Label;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Region;
import javafx.scene.layout.VBox;
import org.springframework.beans.factory.annotation.Autowired;

/**
 * 出库入库这些都是要集成子这个类的
 * 这个类里边做基本的布局管理
 */
public abstract class App1Page extends AbstractPage {
    Label namelabel = new Label();
    Label timelabel = new Label();
    Label titlelabel = new Label();
    @Autowired
    private GUIContext context;

    @Autowired
    private FxConfigure fxConfigure;

    /**
     * 第一排是用户名和密码
     * 第二排是文字的名称
     * 第三批是按钮
     * 第四排是公司名称版本号
     *
     * @return
     */
    private Node createHeader() {

        HBox headerBox = new HBox();

        Region spacer = new Region();
        spacer.setMinWidth(550);
        titlelabel.setId("appTitle");
        titlelabel.setText(getTitle());
        titlelabel.setMinWidth(250);
        namelabel.setId("namelabel");
        namelabel.setWrapText(false);
        namelabel.setMinWidth(180);
        timelabel.setId("timelabel");
        timelabel.setWrapText(false);
        timelabel.setMinWidth(150);

        Region spacer1 = new Region();
        spacer1.setMinWidth(60);

        ImageButton peopleImg=new ImageButton(null,"peopleImg");
        ImageButton timeImg=new ImageButton(null,"timeImg");
        headerBox.getChildren().addAll(spacer,titlelabel,spacer1,peopleImg,namelabel,timeImg,timelabel);
        headerBox.setMinWidth(fxConfigure.getMinWidth());
        headerBox.setStyle("-fx-text-alignment:left;-fx-alignment:bottom-left");
        return headerBox;
    }

    protected Node constructNode() {
        this.setTitle(appTitle());

        VBox main = new VBox();
        main.setId("appPage");
        main.getStylesheets().add("styles/app1.css");
        main.setPadding(new Insets(10, 10, 10, 10));

        Region spacer = new Region();
        spacer.setMinHeight(50);

        if (appContent() != null) {
            main.getChildren().addAll(createHeader(), spacer,appContent());
        } else {
            main.getChildren().add(createHeader());
        }
        main.setMinWidth(fxConfigure.getMinWidth());
        main.setMinHeight(fxConfigure.getMinHeight());
        main.setMaxHeight(fxConfigure.getMinHeight());
        main.setMaxWidth(fxConfigure.getMinWidth());
        return main;
    }

    @Override
    public void refresh() {
        StringBuilder desc = new StringBuilder();
        desc.append(context.getLoginUser().getUserName()+"/"+context.getLoginUser().getOrgName());
        namelabel.setText(desc.toString());
        timelabel.setText(DateUtil.now());
        appRefresh();
    }





    abstract protected void appRefresh();

    abstract protected Node appContent();

    abstract protected String appTitle();
}