package ru.khasang.cachoeira.view.mainwindow.diagram; import javafx.geometry.Orientation; import javafx.scene.Node; import javafx.scene.control.ScrollBar; import javafx.scene.control.SplitPane; import javafx.scene.layout.HBox; import javafx.scene.layout.Priority; import javafx.scene.layout.VBox; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import ru.khasang.cachoeira.viewcontroller.MainWindowController; import ru.khasang.cachoeira.view.mainwindow.diagram.buttonbox.AbstractButtonsBox; import ru.khasang.cachoeira.view.mainwindow.diagram.ganttplan.AbstractGanttPlan; import ru.khasang.cachoeira.view.mainwindow.diagram.tables.AbstractTableView; public abstract class TableAndGanttPane extends VBox { private static final Logger LOGGER = LoggerFactory.getLogger(TableAndGanttPane.class.getName()); private static final double ROW_HEIGHT = 31; protected MainWindowController controller; protected AbstractTableView tableView; protected AbstractGanttPlan ganttPlan; protected AbstractButtonsBox buttonBox; protected SplitPane splitPane; public void createPane() { splitPane.getItems().addAll(createTableView(), createGanttPLan()); VBox.setVgrow(splitPane, Priority.ALWAYS); HBox hBox = createButtonsBox(); VBox.setVgrow(hBox, Priority.NEVER); this.getChildren().addAll(splitPane, hBox); LOGGER.debug("Created."); } private Node createGanttPLan() { ganttPlan.initGanttDiagram(); return ganttPlan; } private Node createTableView() { VBox.setVgrow(tableView, Priority.ALWAYS); tableView.setFixedCellSize(ROW_HEIGHT); tableView.createTable(); tableView.bindScrollsToController(); ScrollBar horizontalScrollBar = new ScrollBar(); horizontalScrollBar.setOrientation(Orientation.HORIZONTAL); horizontalScrollBar.visibleAmountProperty().bind(tableView.widthProperty()); horizontalScrollBar.valueProperty().bindBidirectional(controller.taskHorizontalScrollValueProperty()); return new VBox(tableView, horizontalScrollBar); } private AbstractButtonsBox createButtonsBox() { buttonBox.createButtonsBox(); return buttonBox; } }