Bladeren bron

Further adjustment to workflow:
* bind modality to vault options window
* open unlock in a new window and close it afterwards

Armin Schrenk 4 jaren geleden
bovenliggende
commit
720478c2f4

+ 4 - 0
src/main/java/org/cryptomator/ui/health/HealthCheckComponent.java

@@ -8,6 +8,7 @@ import org.cryptomator.cryptofs.VaultConfig;
 import org.cryptomator.ui.common.FxmlFile;
 import org.cryptomator.ui.common.FxmlScene;
 
+import javax.inject.Named;
 import javafx.scene.Scene;
 import javafx.stage.Stage;
 
@@ -44,6 +45,9 @@ public interface HealthCheckComponent {
 		@BindsInstance
 		Builder vault(@HealthCheckWindow Vault vault);
 
+		@BindsInstance
+		Builder owner(@Named("healthCheckOwner") Stage owner);
+
 		HealthCheckComponent build();
 	}
 

+ 16 - 4
src/main/java/org/cryptomator/ui/health/HealthCheckModule.java

@@ -17,8 +17,8 @@ import org.cryptomator.ui.common.FxmlScene;
 import org.cryptomator.ui.common.StageFactory;
 import org.cryptomator.ui.keyloading.KeyLoadingComponent;
 import org.cryptomator.ui.keyloading.KeyLoadingStrategy;
-import org.cryptomator.ui.mainwindow.MainWindow;
 
+import javax.inject.Named;
 import javax.inject.Provider;
 import javafx.beans.property.ObjectProperty;
 import javafx.beans.property.SimpleObjectProperty;
@@ -74,7 +74,7 @@ abstract class HealthCheckModule {
 	@Provides
 	@HealthCheckWindow
 	@HealthCheckScoped
-	static KeyLoadingStrategy provideKeyLoadingStrategy(KeyLoadingComponent.Builder compBuilder, @HealthCheckWindow Vault vault, @HealthCheckWindow Stage window) {
+	static KeyLoadingStrategy provideKeyLoadingStrategy(KeyLoadingComponent.Builder compBuilder, @HealthCheckWindow Vault vault, @Named("unlockWindow") Stage window ) {
 		return compBuilder.vault(vault).window(window).build().keyloadingStrategy();
 	}
 
@@ -85,14 +85,26 @@ abstract class HealthCheckModule {
 		return new FxmlLoaderFactory(factories, sceneFactory, resourceBundle);
 	}
 
+	@Provides
+	@Named("unlockWindow")
+	@HealthCheckScoped
+	static Stage provideUnlockWindow (@HealthCheckWindow Stage window, @HealthCheckWindow Vault vault, StageFactory factory, ResourceBundle resourceBundle) {
+		Stage stage = factory.create();
+		stage.initModality(Modality.WINDOW_MODAL);
+		stage.initOwner(window);
+		stage.setTitle(String.format("TODO: Unlock \"%s\"", vault.getDisplayName()));
+		stage.setResizable(false);
+		return stage;
+	}
+
 	@Provides
 	@HealthCheckWindow
 	@HealthCheckScoped
-	static Stage provideStage(StageFactory factory, @MainWindow Stage owner, ResourceBundle resourceBundle, ChangeListener<Boolean> showingListener) {
+	static Stage provideStage(StageFactory factory, @Named("healthCheckOwner") Stage owner, @HealthCheckWindow Vault vault, ChangeListener<Boolean> showingListener, ResourceBundle resourceBundle) {
 		Stage stage = factory.create();
 		stage.initModality(Modality.WINDOW_MODAL);
 		stage.initOwner(owner);
-		stage.setTitle(resourceBundle.getString("health.title"));
+		stage.setTitle(String.format(resourceBundle.getString("health.title"), vault.getDisplayName()));
 		stage.setResizable(true);
 		stage.showingProperty().addListener(showingListener); // bind masterkey lifecycle to window
 		return stage;

+ 5 - 1
src/main/java/org/cryptomator/ui/health/StartController.java

@@ -17,6 +17,7 @@ import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
 import javax.inject.Inject;
+import javax.inject.Named;
 import javafx.application.Platform;
 import javafx.beans.property.ObjectProperty;
 import javafx.beans.property.SimpleObjectProperty;
@@ -34,6 +35,7 @@ public class StartController implements FxController {
 	private static final Logger LOG = LoggerFactory.getLogger(StartController.class);
 
 	private final Stage window;
+	private final Stage unlockWindow;
 	private final ObjectProperty<VaultConfig.UnverifiedVaultConfig> unverifiedVaultConfig;
 	private final KeyLoadingStrategy keyLoadingStrategy;
 	private final ExecutorService executor;
@@ -43,9 +45,10 @@ public class StartController implements FxController {
 	private final Lazy<ErrorComponent.Builder> errorComponent;
 
 	@Inject
-	public StartController(@HealthCheckWindow Stage window, HealthCheckComponent.LoadUnverifiedConfigResult configLoadResult, @HealthCheckWindow KeyLoadingStrategy keyLoadingStrategy, ExecutorService executor, AtomicReference<Masterkey> masterkeyRef, AtomicReference<VaultConfig> vaultConfigRef, @FxmlScene(FxmlFile.HEALTH_CHECK_LIST) Lazy<Scene> checkScene, Lazy<ErrorComponent.Builder> errorComponent) {
+	public StartController(@HealthCheckWindow Stage window, HealthCheckComponent.LoadUnverifiedConfigResult configLoadResult, @HealthCheckWindow KeyLoadingStrategy keyLoadingStrategy, ExecutorService executor, AtomicReference<Masterkey> masterkeyRef, AtomicReference<VaultConfig> vaultConfigRef, @FxmlScene(FxmlFile.HEALTH_CHECK_LIST) Lazy<Scene> checkScene, Lazy<ErrorComponent.Builder> errorComponent, @Named("unlockWindow") Stage unlockWindow) {
 		Preconditions.checkNotNull(configLoadResult.config());
 		this.window = window;
+		this.unlockWindow = unlockWindow;
 		this.unverifiedVaultConfig = new SimpleObjectProperty<>(configLoadResult.config());
 		this.keyLoadingStrategy = keyLoadingStrategy;
 		this.executor = executor;
@@ -98,6 +101,7 @@ public class StartController implements FxController {
 			loadingKeyFailed(exception);
 		} else {
 			LOG.debug("Loaded valid key");
+			unlockWindow.close();
 			window.setScene(checkScene.get());
 		}
 	}

+ 1 - 1
src/main/java/org/cryptomator/ui/vaultoptions/GeneralVaultOptionsController.java

@@ -110,6 +110,6 @@ public class GeneralVaultOptionsController implements FxController {
 	}
 
 	public void startHealthCheck() {
-		healthCheckWindow.vault(vault).build().showHealthCheckWindow();
+		healthCheckWindow.vault(vault).owner(window).build().showHealthCheckWindow();
 	}
 }

+ 1 - 1
src/main/resources/i18n/strings.properties

@@ -147,7 +147,7 @@ migration.impossible.reason=The vault cannot be automatically migrated because i
 migration.impossible.moreInfo=The vault can still be opened with an older version. For instructions on how to manually migrate a vault, visit
 
 # Health Check
-health.title=Vault Health Check
+health.title=Health Check of \"%s\"
 health.start.configValid=Reading and parsing vault configuration file was successful. Proceed to select checks.
 health.start.configInvalid=Error while reading and parsing the vault configuration file.
 health.checkList.header=Available Health Checks