package ru.khasang.cachoeira.view.startwindow; import javafx.beans.property.ReadOnlyStringWrapper; import javafx.geometry.Pos; import javafx.scene.Node; import javafx.scene.Scene; import javafx.scene.control.TableColumn; import javafx.scene.control.TableView; import javafx.scene.effect.BlurType; import javafx.scene.effect.DropShadow; import javafx.scene.image.ImageView; import javafx.scene.layout.BorderPane; import javafx.scene.layout.Priority; import javafx.scene.layout.VBox; import javafx.scene.paint.Color; import javafx.stage.Stage; import ru.khasang.cachoeira.viewcontroller.StartWindowController; import ru.khasang.cachoeira.view.IView; import java.io.File; public class StartWindowView implements IView{ private final static double WINDOW_HEIGHT = 417; private final static double WINDOW_WIDTH = 812; private final static double TABLE_WIDTH = 341; private final StartWindowController controller; private final TableView<File> recentProjectsTable; private final IButtonsBox buttonsBox; private Stage stage; public StartWindowView(StartWindowController controller, TableView<File> recentProjectsTable, IButtonsBox buttonsBox) { this.controller = controller; this.recentProjectsTable = recentProjectsTable; this.buttonsBox = buttonsBox; } @Override public void createView() { BorderPane borderPane = new BorderPane(); borderPane.getStylesheets().add(getClass().getResource("/css/startwindow.css").toExternalForm()); borderPane.setLeft(createTable()); borderPane.setCenter(createCentralBox()); stage = new Stage(); stage.setHeight(WINDOW_HEIGHT); stage.setWidth(WINDOW_WIDTH); stage.setScene(new Scene(borderPane)); stage.setResizable(false); stage.setTitle("Cachoeira"); stage.show(); } @Override public Stage getStage() { return stage; } private Node createTable() { recentProjectsTable.setPrefWidth(TABLE_WIDTH); TableColumn<File, String> recentProjectsPathColumn = new TableColumn<>("Recent Projects"); recentProjectsPathColumn.setCellValueFactory(cellData -> new ReadOnlyStringWrapper(cellData.getValue().getPath())); recentProjectsTable.getColumns().add(recentProjectsPathColumn); recentProjectsTable.setColumnResizePolicy(TableView.CONSTRAINED_RESIZE_POLICY); return recentProjectsTable; } private Node createCentralBox() { VBox centralVerticalPane = new VBox(createImageBox(), createButtonsBox()); VBox.setVgrow(centralVerticalPane, Priority.ALWAYS); return centralVerticalPane; } private Node createImageBox() { ImageView imageView = new ImageView(getClass().getResource("/img/cachoeira.png").toExternalForm()); imageView.setEffect(new DropShadow(BlurType.TWO_PASS_BOX, Color.rgb(0, 0, 0, 0.8), 4, 0, 0, 2)); VBox imageVBox = new VBox(imageView); VBox.setVgrow(imageVBox, Priority.ALWAYS); imageVBox.setAlignment(Pos.CENTER); return imageVBox; } private Node createButtonsBox() { buttonsBox.createButtonsBox(); return (Node) buttonsBox; } }