Jelajahi Sumber

set stored window size to initial window size

Martin Beyer 3 tahun lalu
induk
melakukan
4223d15c08

+ 11 - 10
src/main/java/org/cryptomator/ui/mainwindow/MainWindowModule.java

@@ -4,27 +4,28 @@ import dagger.Binds;
 import dagger.Module;
 import dagger.Provides;
 import dagger.multibindings.IntoMap;
+import javafx.beans.property.ObjectProperty;
+import javafx.beans.property.SimpleObjectProperty;
+import javafx.scene.Scene;
+import javafx.stage.Stage;
+import javafx.stage.StageStyle;
 import org.cryptomator.common.vaults.Vault;
 import org.cryptomator.ui.addvaultwizard.AddVaultWizardComponent;
-import org.cryptomator.ui.common.FxmlLoaderFactory;
 import org.cryptomator.ui.common.FxController;
 import org.cryptomator.ui.common.FxControllerKey;
 import org.cryptomator.ui.common.FxmlFile;
+import org.cryptomator.ui.common.FxmlLoaderFactory;
 import org.cryptomator.ui.common.FxmlScene;
 import org.cryptomator.ui.common.StageFactory;
 import org.cryptomator.ui.health.HealthCheckComponent;
 import org.cryptomator.ui.migration.MigrationComponent;
 import org.cryptomator.ui.removevault.RemoveVaultComponent;
-import org.cryptomator.ui.vaultoptions.VaultOptionsComponent;
 import org.cryptomator.ui.stats.VaultStatisticsComponent;
+import org.cryptomator.ui.vaultoptions.VaultOptionsComponent;
 import org.cryptomator.ui.wrongfilealert.WrongFileAlertComponent;
 
 import javax.inject.Provider;
-import javafx.beans.property.ObjectProperty;
-import javafx.beans.property.SimpleObjectProperty;
-import javafx.scene.Scene;
-import javafx.stage.Stage;
-import javafx.stage.StageStyle;
+import java.awt.*;
 import java.util.Map;
 import java.util.ResourceBundle;
 
@@ -49,11 +50,11 @@ abstract class MainWindowModule {
 	@MainWindowScoped
 	static Stage provideStage(StageFactory factory) {
 		Stage stage = factory.create(StageStyle.UNDECORATED);
-		// TODO: min/max values chosen arbitrarily. We might wanna take a look at the user's resolution...
+		Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
 		stage.setMinWidth(650);
 		stage.setMinHeight(440);
-		stage.setMaxWidth(1000);
-		stage.setMaxHeight(700);
+		stage.setMaxWidth(screenSize.getWidth());
+		stage.setMaxHeight(screenSize.getHeight());
 		stage.setTitle("Cryptomator");
 		return stage;
 	}

+ 30 - 6
src/main/java/org/cryptomator/ui/mainwindow/ResizeController.java

@@ -1,16 +1,21 @@
 package org.cryptomator.ui.mainwindow;
 
-import org.cryptomator.ui.common.FxController;
-
-import javax.inject.Inject;
 import javafx.fxml.FXML;
 import javafx.scene.input.MouseEvent;
 import javafx.scene.layout.Region;
 import javafx.stage.Stage;
+import org.cryptomator.common.settings.Settings;
+import org.cryptomator.ui.common.FxController;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import javax.inject.Inject;
 
 @MainWindow
 public class ResizeController implements FxController {
 
+	private static final Logger LOG = LoggerFactory.getLogger(ResizeController.class);
+
 	private final Stage window;
 
 	public Region tlResizer;
@@ -20,14 +25,17 @@ public class ResizeController implements FxController {
 
 	private double origX, origY, origW, origH;
 
+	private final Settings settings;
+
 	@Inject
-	ResizeController(@MainWindow Stage window) {
+	ResizeController(@MainWindow Stage window, Settings settings) {
 		this.window = window;
-		// TODO inject settings and save current position and size
+		this.settings = settings;
 	}
 
 	@FXML
 	public void initialize() {
+		LOG.debug("init ResizeController");
 		tlResizer.setOnMousePressed(this::startResize);
 		trResizer.setOnMousePressed(this::startResize);
 		blResizer.setOnMousePressed(this::startResize);
@@ -36,6 +44,11 @@ public class ResizeController implements FxController {
 		trResizer.setOnMouseDragged(this::resizeTopRight);
 		blResizer.setOnMouseDragged(this::resizeBottomLeft);
 		brResizer.setOnMouseDragged(this::resizeBottomRight);
+
+		window.setY(settings.windowYPositionProperty().get());
+		window.setX(settings.windowXPositionProperty().get());
+		window.setHeight(settings.windowHeightProperty().get());
+		window.setWidth(settings.windowWidthProperty().get());
 	}
 
 	private void startResize(MouseEvent evt) {
@@ -48,21 +61,25 @@ public class ResizeController implements FxController {
 	private void resizeTopLeft(MouseEvent evt) {
 		resizeTop(evt);
 		resizeLeft(evt);
+		saveSettings();
 	}
 
 	private void resizeTopRight(MouseEvent evt) {
 		resizeTop(evt);
 		resizeRight(evt);
+		saveSettings();
 	}
 
 	private void resizeBottomLeft(MouseEvent evt) {
 		resizeBottom(evt);
 		resizeLeft(evt);
+		saveSettings();
 	}
 
 	private void resizeBottomRight(MouseEvent evt) {
 		resizeBottom(evt);
 		resizeRight(evt);
+		saveSettings();
 	}
 
 	private void resizeTop(MouseEvent evt) {
@@ -99,4 +116,11 @@ public class ResizeController implements FxController {
 		}
 	}
 
-}
+	private void saveSettings() {
+		settings.windowHeightProperty().setValue(window.getHeight());
+		settings.windowWidthProperty().setValue(window.getWidth());
+		settings.windowYPositionProperty().setValue(window.getY());
+		settings.windowXPositionProperty().setValue(window.getX());
+	}
+
+}