Bläddra i källkod

dedup by setting title when setting the scene

Sebastian Stenzel 3 år sedan
förälder
incheckning
d52e59d7a4

+ 3 - 12
src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/ChooseMasterkeyFileModule.java

@@ -2,16 +2,13 @@ package org.cryptomator.ui.keyloading.masterkeyfile;
 
 import dagger.Module;
 import dagger.Provides;
-import org.cryptomator.common.vaults.Vault;
 import org.cryptomator.ui.common.DefaultSceneFactory;
 import org.cryptomator.ui.common.FxmlFile;
 import org.cryptomator.ui.common.FxmlLoaderFactory;
-import org.cryptomator.ui.keyloading.KeyLoading;
 
 import javafx.fxml.FXMLLoader;
 import javafx.scene.Parent;
 import javafx.scene.Scene;
-import javafx.stage.Stage;
 import java.io.IOException;
 import java.io.UncheckedIOException;
 import java.nio.file.Path;
@@ -29,21 +26,15 @@ interface ChooseMasterkeyFileModule {
 
 	@Provides
 	@ChooseMasterkeyFileScoped
-	static Scene provideChooseMasterkeyScene(ChooseMasterkeyFileController controller, DefaultSceneFactory sceneFactory, ResourceBundle resourceBundle, @KeyLoading Stage window, @KeyLoading Vault v) {
+	static Scene provideChooseMasterkeyScene(ChooseMasterkeyFileController controller, DefaultSceneFactory sceneFactory, ResourceBundle resourceBundle) {
 		// TODO: simplify FxmlLoaderFactory
 		try {
 			var url = FxmlLoaderFactory.class.getResource(FxmlFile.UNLOCK_SELECT_MASTERKEYFILE.getRessourcePathString());
 			var loader = new FXMLLoader(url, resourceBundle, null, clazz -> controller);
 			Parent root = loader.load();
-			var scene = sceneFactory.apply(root);
-			scene.windowProperty().addListener((prop, oldVal, newVal) -> {
-				if (window.equals(newVal)) {
-					window.setTitle(String.format(resourceBundle.getString("unlock.chooseMasterkey.title"), v.getDisplayName()));
-				}
-			});
-			return scene;
+			return sceneFactory.apply(root);
 		} catch (IOException e) {
-			throw new UncheckedIOException("Failed to load UnlockScene", e);
+			throw new UncheckedIOException("Failed to load ChooseMasterkeyScene", e);
 		}
 	}
 

+ 6 - 1
src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/MasterkeyFileLoadingStrategy.java

@@ -25,6 +25,7 @@ import java.net.URI;
 import java.nio.file.Files;
 import java.nio.file.Path;
 import java.util.Optional;
+import java.util.ResourceBundle;
 import java.util.concurrent.CancellationException;
 import java.util.concurrent.ExecutionException;
 
@@ -39,19 +40,21 @@ public class MasterkeyFileLoadingStrategy implements KeyLoadingStrategy {
 	private final PassphraseEntryComponent.Builder passphraseEntry;
 	private final ChooseMasterkeyFileComponent.Builder masterkeyFileChoice;
 	private final KeychainManager keychain;
+	private final ResourceBundle resourceBundle;
 
 	private Passphrase passphrase;
 	private boolean savePassphrase;
 	private boolean wrongPassphrase;
 
 	@Inject
-	public MasterkeyFileLoadingStrategy(@KeyLoading Vault vault, MasterkeyFileAccess masterkeyFileAccess, @KeyLoading Stage window, @Named("savedPassword") Optional<char[]> savedPassphrase, PassphraseEntryComponent.Builder passphraseEntry, ChooseMasterkeyFileComponent.Builder masterkeyFileChoice, KeychainManager keychain) {
+	public MasterkeyFileLoadingStrategy(@KeyLoading Vault vault, MasterkeyFileAccess masterkeyFileAccess, @KeyLoading Stage window, @Named("savedPassword") Optional<char[]> savedPassphrase, PassphraseEntryComponent.Builder passphraseEntry, ChooseMasterkeyFileComponent.Builder masterkeyFileChoice, KeychainManager keychain, ResourceBundle resourceBundle) {
 		this.vault = vault;
 		this.masterkeyFileAccess = masterkeyFileAccess;
 		this.window = window;
 		this.passphraseEntry = passphraseEntry;
 		this.masterkeyFileChoice = masterkeyFileChoice;
 		this.keychain = keychain;
+		this.resourceBundle = resourceBundle;
 		this.passphrase = savedPassphrase.map(Passphrase::new).orElse(null);
 		this.savePassphrase = savedPassphrase.isPresent();
 	}
@@ -121,6 +124,7 @@ public class MasterkeyFileLoadingStrategy implements KeyLoadingStrategy {
 		var comp = masterkeyFileChoice.build();
 		Platform.runLater(() -> {
 			window.setScene(comp.chooseMasterkeyScene());
+			window.setTitle(resourceBundle.getString("unlock.chooseMasterkey.title").formatted(vault.getDisplayName()));
 			window.show();
 			Window owner = window.getOwner();
 			if (owner != null) {
@@ -143,6 +147,7 @@ public class MasterkeyFileLoadingStrategy implements KeyLoadingStrategy {
 		var comp = passphraseEntry.savedPassword(passphrase).build();
 		Platform.runLater(() -> {
 			window.setScene(comp.passphraseEntryScene());
+			window.setTitle(resourceBundle.getString("unlock.title").formatted(vault.getDisplayName()));
 			window.show();
 			Window owner = window.getOwner();
 			if (owner != null) {

+ 2 - 11
src/main/java/org/cryptomator/ui/keyloading/masterkeyfile/PassphraseEntryModule.java

@@ -2,16 +2,13 @@ package org.cryptomator.ui.keyloading.masterkeyfile;
 
 import dagger.Module;
 import dagger.Provides;
-import org.cryptomator.common.vaults.Vault;
 import org.cryptomator.ui.common.DefaultSceneFactory;
 import org.cryptomator.ui.common.FxmlFile;
 import org.cryptomator.ui.common.FxmlLoaderFactory;
-import org.cryptomator.ui.keyloading.KeyLoading;
 
 import javafx.fxml.FXMLLoader;
 import javafx.scene.Parent;
 import javafx.scene.Scene;
-import javafx.stage.Stage;
 import java.io.IOException;
 import java.io.UncheckedIOException;
 import java.util.ResourceBundle;
@@ -28,19 +25,13 @@ interface PassphraseEntryModule {
 
 	@Provides
 	@PassphraseEntryScoped
-	static Scene provideUnlockScene(PassphraseEntryController controller, DefaultSceneFactory sceneFactory, ResourceBundle resourceBundle, @KeyLoading Stage window, @KeyLoading Vault v) {
+	static Scene provideUnlockScene(PassphraseEntryController controller, DefaultSceneFactory sceneFactory, ResourceBundle resourceBundle) {
 		// TODO: simplify FxmlLoaderFactory
 		try {
 			var url = FxmlLoaderFactory.class.getResource(FxmlFile.UNLOCK_ENTER_PASSWORD.getRessourcePathString());
 			var loader = new FXMLLoader(url, resourceBundle, null, clazz -> controller);
 			Parent root = loader.load();
-			var scene = sceneFactory.apply(root);
-			scene.windowProperty().addListener((prop, oldVal, newVal) -> {
-				if (window.equals(newVal)) {
-					window.setTitle(String.format(resourceBundle.getString("unlock.title"), v.getDisplayName()));
-				}
-			});
-			return scene;
+			return sceneFactory.apply(root);
 		} catch (IOException e) {
 			throw new UncheckedIOException("Failed to load UnlockScene", e);
 		}