1 package io.github.magwas.inez.ui;
2
3 import java.io.IOException;
4 import javafx.geometry.Insets;
5 import javafx.geometry.Orientation;
6 import javafx.scene.control.MenuBar;
7 import javafx.scene.control.SplitPane;
8 import javafx.scene.control.TabPane;
9 import javafx.scene.control.ToolBar;
10 import javafx.scene.layout.HBox;
11 import javafx.scene.layout.Priority;
12 import javafx.scene.layout.VBox;
13
14 import org.springframework.beans.factory.annotation.Autowired;
15 import org.springframework.stereotype.Service;
16
17 @Service
18 public class CreateMainSceneService implements UIConstants {
19
20 @Autowired
21 UIState uiState;
22
23 @Autowired
24 ToggleFullscreenService toggleFullscreen;
25
26 VBox apply() throws IOException {
27
28 uiState.menuBar = new MenuBar();
29 uiState.toolBar = new ToolBar();
30 uiState.mainArea = createMainArea();
31 uiState.statusBar = createStatusBar();
32
33 VBox topContainer = new VBox(uiState.menuBar, uiState.toolBar);
34 VBox content = new VBox();
35 content.getChildren().addAll(topContainer, uiState.mainArea, uiState.statusBar);
36 VBox.setVgrow(uiState.mainArea, Priority.ALWAYS);
37 return content;
38 }
39
40 private SplitPane createMainArea() {
41 SplitPane horizontalSplit = new SplitPane();
42 horizontalSplit.setOrientation(Orientation.HORIZONTAL);
43 horizontalSplit.getItems().addAll(createTabPane(), createTabPane(), createTabPane());
44 horizontalSplit.setDividerPositions(LEFT_PANE_RATIO, RIGHT_PANE_RATIO);
45 return horizontalSplit;
46 }
47
48 private HBox createStatusBar() {
49 HBox statusBar = new HBox(PADDING);
50 statusBar.setPadding(new Insets(SMALL_PADDING, PADDING, SMALL_PADDING, PADDING));
51 statusBar.setStyle(STATUSBAR_STYLE);
52 return statusBar;
53 }
54
55 private TabPane createTabPane() {
56 TabPane tabPane = new TabPane();
57 tabPane.setOnMouseClicked(event -> {
58 if (UIUtil.isDoubleClick(event)) {
59 toggleFullscreen.apply(tabPane);
60 }
61 });
62 return tabPane;
63 }
64 }