From 54c0df51d5f2b05aeea1097a8d41139433903d7d Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Mon, 9 Mar 2020 14:38:36 +0100 Subject: [PATCH] replaced AddVaultFailureExistingController by AddVaultGenericErrorController --- .../AddVaultFailureExistingController.java | 51 ------------------- .../AddVaultGenericErrorController.java | 48 +++++++++++++++++ .../ui/addvaultwizard/AddVaultModule.java | 38 +++++++++++--- .../ChooseExistingVaultController.java | 12 +++-- .../org/cryptomator/ui/common/FxmlFile.java | 4 +- .../fxml/addvault_existing_error.fxml | 41 --------------- .../fxml/addvault_generic_error.fxml | 30 +++++++++++ .../main/resources/i18n/strings.properties | 2 - 8 files changed, 118 insertions(+), 108 deletions(-) delete mode 100644 main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultFailureExistingController.java create mode 100644 main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultGenericErrorController.java delete mode 100644 main/ui/src/main/resources/fxml/addvault_existing_error.fxml create mode 100644 main/ui/src/main/resources/fxml/addvault_generic_error.fxml diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultFailureExistingController.java b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultFailureExistingController.java deleted file mode 100644 index 1bb9eef40..000000000 --- a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultFailureExistingController.java +++ /dev/null @@ -1,51 +0,0 @@ -package org.cryptomator.ui.addvaultwizard; - -import dagger.Lazy; -import javafx.beans.binding.Bindings; -import javafx.beans.binding.StringBinding; -import javafx.beans.property.ObjectProperty; -import javafx.fxml.FXML; -import javafx.scene.Scene; -import javafx.stage.Stage; -import org.cryptomator.ui.common.FxController; -import org.cryptomator.ui.common.FxmlFile; -import org.cryptomator.ui.common.FxmlScene; - -import javax.inject.Inject; -import java.nio.file.Path; - -@AddVaultWizardScoped -public class AddVaultFailureExistingController implements FxController { - - private final Stage window; - private final Lazy previousScene; - private final StringBinding vaultName; - - @Inject - AddVaultFailureExistingController(@AddVaultWizardWindow Stage window, @FxmlScene(FxmlFile.ADDVAULT_EXISTING) Lazy previousScene, ObjectProperty pathOfFailedVault){ - this.window = window; - this.previousScene = previousScene; - this.vaultName = Bindings.createStringBinding(() -> pathOfFailedVault.get().getFileName().toString(),pathOfFailedVault); - } - - @FXML - public void close(){ - window.close(); - } - - @FXML - public void back(){ - window.setScene(previousScene.get()); - } - - // Getter & Setter - - public StringBinding vaultNameProperty(){ - return vaultName; - } - - public String getVaultName(){ - return vaultName.get(); - } - -} diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultGenericErrorController.java b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultGenericErrorController.java new file mode 100644 index 000000000..299f183f3 --- /dev/null +++ b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultGenericErrorController.java @@ -0,0 +1,48 @@ +package org.cryptomator.ui.addvaultwizard; + +import javafx.beans.binding.BooleanBinding; +import javafx.beans.property.ObjectProperty; +import javafx.beans.property.ReadOnlyObjectProperty; +import javafx.fxml.FXML; +import javafx.scene.Scene; +import javafx.stage.Stage; +import org.cryptomator.ui.common.FxController; + +import javax.inject.Inject; +import javax.inject.Named; + +@AddVaultWizardScoped +public class AddVaultGenericErrorController implements FxController { + + private final Stage window; + private final ReadOnlyObjectProperty previousScene; + private final BooleanBinding returnToPreviousSceneAllowed; + + @Inject + AddVaultGenericErrorController(@AddVaultWizardWindow Stage window, @Named("genericErrorReturnScene") ObjectProperty previousScene) { + this.window = window; + this.previousScene = previousScene; + this.returnToPreviousSceneAllowed = previousScene.isNotNull(); + } + + @FXML + public void back() { + assert previousScene.get() != null; // otherwise button should be disabled + window.setScene(previousScene.get()); + } + + @FXML + public void close(){ + window.close(); + } + + /* Getter/Setter */ + + public BooleanBinding returnToPreviousSceneAllowedProperty() { + return returnToPreviousSceneAllowed; + } + + public boolean isReturnToPreviousSceneAllowed() { + return returnToPreviousSceneAllowed.get(); + } +} diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultModule.java b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultModule.java index 4e5143d8c..b1a99cf75 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultModule.java @@ -21,6 +21,7 @@ import org.cryptomator.ui.common.FxmlFile; import org.cryptomator.ui.common.FxmlScene; import org.cryptomator.ui.common.NewPasswordController; import org.cryptomator.ui.common.PasswordStrengthUtil; +import org.cryptomator.ui.common.StackTraceController; import org.cryptomator.ui.mainwindow.MainWindow; import org.cryptomator.ui.recoverykey.RecoveryKeyDisplayController; @@ -61,6 +62,20 @@ public abstract class AddVaultModule { return stage; } + @Provides + @Named("genericErrorCause") + @AddVaultWizardScoped + static ObjectProperty provideGenericErrorCause() { + return new SimpleObjectProperty<>(); + } + + @Provides + @Named("genericErrorReturnScene") + @AddVaultWizardScoped + static ObjectProperty provideGenericErrorReturnScene() { + return new SimpleObjectProperty<>(); + } + @Provides @AddVaultWizardScoped static ObjectProperty provideVaultPath() { @@ -105,10 +120,10 @@ public abstract class AddVaultModule { } @Provides - @FxmlScene(FxmlFile.ADDVAULT_EXISTING_ERROR) + @FxmlScene(FxmlFile.ADDVAULT_GENERIC_ERROR) @AddVaultWizardScoped - static Scene provideChooseExistingVaultErrorScene(@AddVaultWizardWindow FXMLLoaderFactory fxmlLoaders) { - return fxmlLoaders.createScene(FxmlFile.ADDVAULT_EXISTING_ERROR.getRessourcePathString()); + static Scene provideGenericErrorScene(@AddVaultWizardWindow FXMLLoaderFactory fxmlLoaders) { + return fxmlLoaders.createScene(FxmlFile.ADDVAULT_GENERIC_ERROR.getRessourcePathString()); } @Provides @@ -158,11 +173,6 @@ public abstract class AddVaultModule { @FxControllerKey(ChooseExistingVaultController.class) abstract FxController bindChooseExistingVaultController(ChooseExistingVaultController controller); - @Binds - @IntoMap - @FxControllerKey(AddVaultFailureExistingController.class) - abstract FxController bindAddVaultFailureExistingController(AddVaultFailureExistingController controller); - @Binds @IntoMap @FxControllerKey(CreateNewVaultNameController.class) @@ -201,4 +211,16 @@ public abstract class AddVaultModule { @IntoMap @FxControllerKey(AddVaultSuccessController.class) abstract FxController bindAddVaultSuccessController(AddVaultSuccessController controller); + + @Binds + @IntoMap + @FxControllerKey(AddVaultGenericErrorController.class) + abstract FxController bindAddVaultGenericErrorController(AddVaultGenericErrorController controller); + + @Provides + @IntoMap + @FxControllerKey(StackTraceController.class) + static FxController provideStackTraceController(@Named("genericErrorCause") ObjectProperty errorCause) { + return new StackTraceController(errorCause.get()); + } } diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/ChooseExistingVaultController.java b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/ChooseExistingVaultController.java index 8bd11139a..3951cfbee 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/ChooseExistingVaultController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/ChooseExistingVaultController.java @@ -15,6 +15,7 @@ import org.slf4j.Logger; import org.slf4j.LoggerFactory; import javax.inject.Inject; +import javax.inject.Named; import java.io.File; import java.nio.file.NoSuchFileException; import java.nio.file.Path; @@ -28,18 +29,20 @@ public class ChooseExistingVaultController implements FxController { private final Stage window; private final Lazy welcomeScene; private final Lazy successScene; - private final Lazy errorScene; + private final Lazy genericErrorScene; + private final ObjectProperty genericErrorCause; private final ObjectProperty vaultPath; private final ObjectProperty vault; private final VaultListManager vaultListManager; private final ResourceBundle resourceBundle; @Inject - ChooseExistingVaultController(@AddVaultWizardWindow Stage window, @FxmlScene(FxmlFile.ADDVAULT_WELCOME) Lazy welcomeScene, @FxmlScene(FxmlFile.ADDVAULT_SUCCESS) Lazy successScene, @FxmlScene(FxmlFile.ADDVAULT_EXISTING_ERROR) Lazy errorScene, ObjectProperty vaultPath, @AddVaultWizardWindow ObjectProperty vault, VaultListManager vaultListManager, ResourceBundle resourceBundle) { + ChooseExistingVaultController(@AddVaultWizardWindow Stage window, @FxmlScene(FxmlFile.ADDVAULT_WELCOME) Lazy welcomeScene, @FxmlScene(FxmlFile.ADDVAULT_SUCCESS) Lazy successScene, @FxmlScene(FxmlFile.ADDVAULT_GENERIC_ERROR) Lazy genericErrorScene, @Named("genericErrorCause") ObjectProperty genericErrorCause, ObjectProperty vaultPath, @AddVaultWizardWindow ObjectProperty vault, VaultListManager vaultListManager, ResourceBundle resourceBundle) { this.window = window; this.welcomeScene = welcomeScene; this.successScene = successScene; - this.errorScene = errorScene; + this.genericErrorScene = genericErrorScene; + this.genericErrorCause = genericErrorCause; this.vaultPath = vaultPath; this.vault = vault; this.vaultListManager = vaultListManager; @@ -65,7 +68,8 @@ public class ChooseExistingVaultController implements FxController { window.setScene(successScene.get()); } catch (NoSuchFileException e) { LOG.error("Failed to open existing vault.", e); - window.setScene(errorScene.get()); + genericErrorCause.set(e); + window.setScene(genericErrorScene.get()); } } } diff --git a/main/ui/src/main/java/org/cryptomator/ui/common/FxmlFile.java b/main/ui/src/main/java/org/cryptomator/ui/common/FxmlFile.java index 998bea98e..5ff125cc9 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/common/FxmlFile.java +++ b/main/ui/src/main/java/org/cryptomator/ui/common/FxmlFile.java @@ -1,14 +1,14 @@ package org.cryptomator.ui.common; public enum FxmlFile { - ADDVAULT_WELCOME("/fxml/addvault_welcome.fxml"), // ADDVAULT_EXISTING("/fxml/addvault_existing.fxml"), // - ADDVAULT_EXISTING_ERROR("/fxml/addvault_existing_error.fxml"), + ADDVAULT_GENERIC_ERROR("/fxml/addvault_generic_error.fxml"), ADDVAULT_NEW_NAME("/fxml/addvault_new_name.fxml"), // ADDVAULT_NEW_LOCATION("/fxml/addvault_new_location.fxml"), // ADDVAULT_NEW_PASSWORD("/fxml/addvault_new_password.fxml"), // ADDVAULT_NEW_RECOVERYKEY("/fxml/addvault_new_recoverykey.fxml"), // ADDVAULT_SUCCESS("/fxml/addvault_success.fxml"), // + ADDVAULT_WELCOME("/fxml/addvault_welcome.fxml"), // CHANGEPASSWORD("/fxml/changepassword.fxml"), // FORGET_PASSWORD("/fxml/forget_password.fxml"), // MAIN_WINDOW("/fxml/main_window.fxml"), // diff --git a/main/ui/src/main/resources/fxml/addvault_existing_error.fxml b/main/ui/src/main/resources/fxml/addvault_existing_error.fxml deleted file mode 100644 index 244f57602..000000000 --- a/main/ui/src/main/resources/fxml/addvault_existing_error.fxml +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - -