Skip to content
Snippets Groups Projects
Select Git revision
  • 3fd908c54c48aff9a877039f7eac08845225b184
  • develop default protected
  • master protected
  • feature/scrollbars
  • native-audio
  • v7.3.0
  • v7.2.0
  • v7.1.0
  • v7.0.2
  • v7.0.1
  • v7.0.0
  • v5.0.1
  • v5.1.0
  • v6.1.0
  • v6.0.0
15 results

MediaSettingsTabViewController.java

Blame
  • MediaSettingsTabViewController.java 4.46 KiB
    package de.tobias.playpad.mediaplugin.main.impl;
    
    import java.util.ArrayList;
    import java.util.List;
    import java.util.ResourceBundle;
    
    import de.tobias.playpad.mediaplugin.main.VideoSettings;
    import de.tobias.playpad.project.Project;
    import de.tobias.playpad.settings.Profile;
    import de.tobias.playpad.settings.ProfileSettings;
    import de.tobias.playpad.viewcontroller.main.IMainViewController;
    import de.tobias.playpad.viewcontroller.option.IProfileReloadTask;
    import de.tobias.playpad.viewcontroller.option.ProfileSettingsTabViewController;
    import javafx.concurrent.Task;
    import javafx.fxml.FXML;
    import javafx.scene.control.CheckBox;
    import javafx.scene.control.ComboBox;
    import javafx.scene.control.Label;
    import javafx.scene.layout.Pane;
    import javafx.scene.layout.StackPane;
    import javafx.scene.paint.Color;
    import javafx.scene.shape.Rectangle;
    import javafx.stage.Screen;
    
    public class MediaSettingsTabViewController extends ProfileSettingsTabViewController implements IProfileReloadTask {
    
    	@FXML private Pane screenViewPane;
    	@FXML private ComboBox<Integer> screenComboBox;
    	@FXML private CheckBox fullscreenCheckBox;
    	@FXML private CheckBox videoOpenAtLaunchCheckBox;
    
    	private VideoSettings settings;
    	private ResourceBundle bundle;
    
    	private boolean changeSettings = false;
    
    	public MediaSettingsTabViewController(VideoSettings settings) {
    		super("settingsPane", "de/tobias/playpad/mediaplugin/assets/", MediaPluginImpl.getInstance().getBundle());
    		this.settings = settings;
    		this.bundle = MediaPluginImpl.getInstance().getBundle();
    	}
    
    	@Override
    	public void init() {
    		// Video
    		createScreenView();
    	}
    
    	private void createScreenView() {
    		List<Screen> screens = Screen.getScreens();
    		List<StackPane> rects = new ArrayList<>();
    
    		screenComboBox.getItems().clear();
    
    		double minX = 0;
    		double minY = 0;
    		int index = 1;
    
    		for (Screen screen : screens) {
    			screenComboBox.getItems().add(index);
    
    			StackPane stackPane = new StackPane();
    			stackPane.relocate(screen.getBounds().getMinX() * 0.1, screen.getBounds().getMinY() * 0.1);
    			stackPane.resize(screen.getBounds().getWidth() * 0.1, screen.getBounds().getHeight() * 0.1);
    
    			Rectangle rec = new Rectangle(screen.getBounds().getWidth() * 0.1, screen.getBounds().getHeight() * 0.1);
    			rec.setStrokeWidth(1.0);
    			rec.setStroke(Color.BLACK);
    			rec.setFill(Color.TRANSPARENT);
    
    			stackPane.getChildren().addAll(rec, new Label(String.valueOf(index++)));
    
    			if (minX > screen.getBounds().getMinX() * 0.1)
    				minX = screen.getBounds().getMinX() * 0.1;
    			if (minY > screen.getBounds().getMinY() * 0.1)
    				minY = screen.getBounds().getMinY() * 0.1;
    			rects.add(stackPane);
    			screenViewPane.getChildren().add(stackPane);
    
    		}
    
    		double width = 0;
    		double height = 0;
    		for (StackPane stackPane : rects) {
    			stackPane.relocate(stackPane.getLayoutX() - minX, stackPane.getLayoutY() - minY);
    			width += stackPane.getWidth();
    			if (height < stackPane.getHeight() + stackPane.getLayoutX())
    				height = stackPane.getHeight() + stackPane.getLayoutX();
    		}
    
    		screenViewPane.setMaxWidth(width);
    		screenViewPane.setMaxHeight(height + 20);
    	}
    
    	@Override
    	public void loadSettings(Profile profile) {
    		screenComboBox.setValue(settings.getScreenId() + 1);
    		fullscreenCheckBox.setSelected(settings.isFullScreen());
    		videoOpenAtLaunchCheckBox.setSelected(settings.isOpenAtLaunch());
    	}
    
    	@Override
    	public void saveSettings(Profile profile) {
    		if (settings.getScreenId() != (screenComboBox.getValue() != null ? screenComboBox.getValue() - 1 : 0)) {
    			changeSettings = true;
    		}
    		if (settings.isFullScreen() != fullscreenCheckBox.isSelected()) {
    			changeSettings = true;
    		}
    		if (settings.isOpenAtLaunch() != videoOpenAtLaunchCheckBox.isSelected()) {
    			changeSettings = true;
    		}
    		settings.setScreenId(screenComboBox.getValue() != null ? screenComboBox.getValue() - 1 : 0);
    		settings.setFullScreen(fullscreenCheckBox.isSelected());
    		settings.setOpenAtLaunch(videoOpenAtLaunchCheckBox.isSelected());
    	}
    
    	@Override
    	public boolean needReload() {
    		return changeSettings;
    	}
    
    	@Override
    	public boolean validSettings() {
    		return true;
    	}
    
    	@Override
    	public Task<Void> getTask(ProfileSettings settings, Project project, IMainViewController controller) {
    		return new Task<Void>() {
    			@Override
    			protected Void call() throws Exception {
    				updateProgress(-1, -1);
    				updateTitle(name());
    
    				MediaPluginImpl.getInstance().getVideoViewController().reloadSettings();
    				return null;
    			}
    		};
    	}
    
    	@Override
    	public String name() {
    		return bundle.getString("settings.tab");
    	}
    }