1 package io.github.magwas.inez.ui;
2
3 import javafx.scene.control.TabPane;
4 import javafx.scene.layout.StackPane;
5
6 import org.springframework.beans.factory.annotation.Autowired;
7 import org.springframework.stereotype.Service;
8
9 @Service
10 public class ToggleFullscreenService implements UIConstants {
11
12 @Autowired
13 FullScreenRelatedState fullScreenRelatedState;
14
15 public void apply(final TabPane tabPane) {
16 if (fullScreenRelatedState.isFullscreen) {
17 exitFullscreen();
18 } else {
19 enterFullscreen(tabPane);
20 }
21 }
22
23 private void enterFullscreen(final TabPane tabPane) {
24 fullScreenRelatedState.fullScreened = tabPane;
25 fullScreenRelatedState.fullScreenedParent = (StackPane) tabPane.getParent();
26 StackPane fullscreenRoot = (StackPane) fullScreenRelatedState.fullscreenScene.getRoot();
27 fullscreenRoot.getChildren().setAll(tabPane);
28 fullscreenRoot.setStyle(FULL_SCREEN_ROOT_STYLE);
29
30 fullscreenRoot.setOnMouseClicked(event -> {
31 if (UIUtil.isDoubleClick(event)) {
32 exitFullscreen();
33 }
34 });
35
36 fullScreenRelatedState.primaryStage.setScene(fullScreenRelatedState.fullscreenScene);
37 fullScreenRelatedState.isFullscreen = true;
38 }
39
40 private void exitFullscreen() {
41 fullScreenRelatedState.primaryStage.setScene(fullScreenRelatedState.mainScene);
42 fullScreenRelatedState.fullScreenedParent.getChildren().add(fullScreenRelatedState.fullScreened);
43 fullScreenRelatedState.isFullscreen = false;
44 }
45 }