View Javadoc
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  }