From e1cf8546b7cc372972c34fdffbedbc3aeaedfdb1 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Wed, 12 Feb 2020 15:02:06 +0100 Subject: [PATCH] adding recover vault dialogue stub --- .../org/cryptomator/ui/common/FxmlFile.java | 1 + .../recovervault/RecoverVaultComponent.java | 42 +++++++++++ .../recovervault/RecoverVaultController.java | 35 +++++++++ .../ui/recovervault/RecoverVaultModule.java | 73 +++++++++++++++++++ .../ui/recovervault/RecoverVaultScoped.java | 13 ++++ .../ui/recovervault/RecoverVaultWindow.java | 14 ++++ .../GeneralVaultOptionsController.java | 10 ++- .../ui/vaultoptions/VaultOptionsModule.java | 3 +- .../src/main/resources/fxml/recovervault.fxml | 27 +++++++ .../resources/fxml/vault_options_general.fxml | 1 + 10 files changed, 217 insertions(+), 2 deletions(-) create mode 100644 main/ui/src/main/java/org/cryptomator/ui/recovervault/RecoverVaultComponent.java create mode 100644 main/ui/src/main/java/org/cryptomator/ui/recovervault/RecoverVaultController.java create mode 100644 main/ui/src/main/java/org/cryptomator/ui/recovervault/RecoverVaultModule.java create mode 100644 main/ui/src/main/java/org/cryptomator/ui/recovervault/RecoverVaultScoped.java create mode 100644 main/ui/src/main/java/org/cryptomator/ui/recovervault/RecoverVaultWindow.java create mode 100644 main/ui/src/main/resources/fxml/recovervault.fxml 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 e6f449ccb..f32faa3b5 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 @@ -19,6 +19,7 @@ public enum FxmlFile { QUIT("/fxml/quit.fxml"), // RECOVERYKEY_CREATE("/fxml/recoverykey_create.fxml"), // RECOVERYKEY_SUCCESS("/fxml/recoverykey_success.fxml"), // + RECOVER_VAULT("/fxml/recovervault.fxml"),// TODO REMOVE_VAULT("/fxml/remove_vault.fxml"), // UNLOCK("/fxml/unlock.fxml"), UNLOCK_GENERIC_ERROR("/fxml/unlock_generic_error.fxml"), // diff --git a/main/ui/src/main/java/org/cryptomator/ui/recovervault/RecoverVaultComponent.java b/main/ui/src/main/java/org/cryptomator/ui/recovervault/RecoverVaultComponent.java new file mode 100644 index 000000000..6be4c7785 --- /dev/null +++ b/main/ui/src/main/java/org/cryptomator/ui/recovervault/RecoverVaultComponent.java @@ -0,0 +1,42 @@ +package org.cryptomator.ui.recovervault; + +import dagger.BindsInstance; +import dagger.Lazy; +import dagger.Subcomponent; +import javafx.scene.Scene; +import javafx.stage.Stage; +import org.cryptomator.common.vaults.Vault; +import org.cryptomator.ui.common.FxmlFile; +import org.cryptomator.ui.common.FxmlScene; + +import javax.inject.Named; + +@RecoverVaultScoped +@Subcomponent(modules = {RecoverVaultModule.class}) +public interface RecoverVaultComponent { + + @RecoverVaultWindow + Stage window(); + + @FxmlScene(FxmlFile.RECOVER_VAULT) + Lazy scene(); + + default void showRecoverVaultWindow() { + Stage stage = window(); + stage.setScene(scene().get()); + stage.sizeToScene(); + stage.show(); + } + + @Subcomponent.Builder + interface Builder { + + @BindsInstance + Builder vault(@RecoverVaultWindow Vault vault); + + @BindsInstance + Builder owner(@Named("recoverVaultOwner") Stage owner); + + RecoverVaultComponent build(); + } +} diff --git a/main/ui/src/main/java/org/cryptomator/ui/recovervault/RecoverVaultController.java b/main/ui/src/main/java/org/cryptomator/ui/recovervault/RecoverVaultController.java new file mode 100644 index 000000000..f7d20fd92 --- /dev/null +++ b/main/ui/src/main/java/org/cryptomator/ui/recovervault/RecoverVaultController.java @@ -0,0 +1,35 @@ +package org.cryptomator.ui.recovervault; + +import dagger.Lazy; +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 org.slf4j.Logger; +import org.slf4j.LoggerFactory; + +import javax.inject.Inject; + +@RecoverVaultScoped +public class RecoverVaultController implements FxController { + + + private static final Logger LOG = LoggerFactory.getLogger(RecoverVaultController.class); + + private final Stage window; + private final Lazy successScene; + + @Inject + public RecoverVaultController(@RecoverVaultWindow Stage window, @FxmlScene(FxmlFile.RECOVER_VAULT) Lazy successScene) { + this.window = window; + this.successScene = successScene; + } + + @FXML + public void close() { + window.close(); + } + +} diff --git a/main/ui/src/main/java/org/cryptomator/ui/recovervault/RecoverVaultModule.java b/main/ui/src/main/java/org/cryptomator/ui/recovervault/RecoverVaultModule.java new file mode 100644 index 000000000..929ade24d --- /dev/null +++ b/main/ui/src/main/java/org/cryptomator/ui/recovervault/RecoverVaultModule.java @@ -0,0 +1,73 @@ +package org.cryptomator.ui.recovervault; + +import dagger.Binds; +import dagger.Module; +import dagger.Provides; +import dagger.multibindings.IntoMap; +import javafx.beans.property.SimpleStringProperty; +import javafx.beans.property.StringProperty; +import javafx.scene.Scene; +import javafx.scene.image.Image; +import javafx.stage.Modality; +import javafx.stage.Stage; +import org.cryptomator.ui.common.DefaultSceneFactory; +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.FxmlScene; + +import javax.inject.Named; +import javax.inject.Provider; +import java.util.List; +import java.util.Map; +import java.util.ResourceBundle; + +@Module +abstract class RecoverVaultModule { + + @Provides + @RecoverVaultWindow + @RecoverVaultScoped + static FXMLLoaderFactory provideFxmlLoaderFactory(Map, Provider> factories, DefaultSceneFactory sceneFactory, ResourceBundle resourceBundle) { + return new FXMLLoaderFactory(factories, sceneFactory, resourceBundle); + } + + @Provides + @RecoverVaultWindow + @RecoverVaultScoped + static Stage provideStage(ResourceBundle resourceBundle, @Named("windowIcons") List windowIcons, @Named("recoverVaultOwner") Stage owner) { + Stage stage = new Stage(); + //TODO stage.setTitle(resourceBundle.getString("recoverVault.title")); + stage.setTitle("TODO recover Vault"); + stage.setResizable(false); + stage.initModality(Modality.WINDOW_MODAL); + stage.initOwner(owner); + stage.getIcons().addAll(windowIcons); + return stage; + } + + @Provides + @RecoverVaultWindow + @RecoverVaultScoped + static StringProperty provideRecoveryKeyProperty() { + return new SimpleStringProperty(); + } + + // ------------------ + + @Provides + @FxmlScene(FxmlFile.RECOVER_VAULT) + @RecoverVaultScoped + static Scene provideRecoverVaultScene(@RecoverVaultWindow FXMLLoaderFactory fxmlLoaders) { + return fxmlLoaders.createScene("/fxml/recovervault.fxml"); + } + + // ------------------ + + @Binds + @IntoMap + @FxControllerKey(RecoverVaultController.class) + abstract FxController bindRecoverVaultController(RecoverVaultController controller); + +} diff --git a/main/ui/src/main/java/org/cryptomator/ui/recovervault/RecoverVaultScoped.java b/main/ui/src/main/java/org/cryptomator/ui/recovervault/RecoverVaultScoped.java new file mode 100644 index 000000000..c9c457bc0 --- /dev/null +++ b/main/ui/src/main/java/org/cryptomator/ui/recovervault/RecoverVaultScoped.java @@ -0,0 +1,13 @@ +package org.cryptomator.ui.recovervault; + +import javax.inject.Scope; +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; + +@Scope +@Documented +@Retention(RetentionPolicy.RUNTIME) +public @interface RecoverVaultScoped { + +} diff --git a/main/ui/src/main/java/org/cryptomator/ui/recovervault/RecoverVaultWindow.java b/main/ui/src/main/java/org/cryptomator/ui/recovervault/RecoverVaultWindow.java new file mode 100644 index 000000000..0a4c7ad0b --- /dev/null +++ b/main/ui/src/main/java/org/cryptomator/ui/recovervault/RecoverVaultWindow.java @@ -0,0 +1,14 @@ +package org.cryptomator.ui.recovervault; + +import javax.inject.Qualifier; +import java.lang.annotation.Documented; +import java.lang.annotation.Retention; + +import static java.lang.annotation.RetentionPolicy.RUNTIME; + +@Qualifier +@Documented +@Retention(RUNTIME) +public @interface RecoverVaultWindow { + +} diff --git a/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/GeneralVaultOptionsController.java b/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/GeneralVaultOptionsController.java index 5e68480a8..d6f66c7c4 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/GeneralVaultOptionsController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/GeneralVaultOptionsController.java @@ -5,6 +5,7 @@ import javafx.stage.Stage; import org.cryptomator.common.vaults.Vault; import org.cryptomator.ui.changepassword.ChangePasswordComponent; import org.cryptomator.ui.common.FxController; +import org.cryptomator.ui.recovervault.RecoverVaultComponent; import org.cryptomator.ui.recoverykey.RecoveryKeyComponent; import javax.inject.Inject; @@ -16,13 +17,15 @@ public class GeneralVaultOptionsController implements FxController { private final Stage window; private final ChangePasswordComponent.Builder changePasswordWindow; private final RecoveryKeyComponent.Builder recoveryKeyWindow; + private final RecoverVaultComponent.Builder recoverVaultWindow; @Inject - GeneralVaultOptionsController(@VaultOptionsWindow Vault vault, @VaultOptionsWindow Stage window, ChangePasswordComponent.Builder changePasswordWindow, RecoveryKeyComponent.Builder recoveryKeyWindow) { + GeneralVaultOptionsController(@VaultOptionsWindow Vault vault, @VaultOptionsWindow Stage window, ChangePasswordComponent.Builder changePasswordWindow, RecoveryKeyComponent.Builder recoveryKeyWindow, RecoverVaultComponent.Builder recoverVaultWindow) { this.vault = vault; this.window = window; this.changePasswordWindow = changePasswordWindow; this.recoveryKeyWindow = recoveryKeyWindow; + this.recoverVaultWindow = recoverVaultWindow; } @FXML @@ -35,4 +38,9 @@ public class GeneralVaultOptionsController implements FxController { recoveryKeyWindow.vault(vault).owner(window).build().showRecoveryKeyCreationWindow(); } + @FXML + public void showRecoverVaultDialogue(){ + recoverVaultWindow.vault(vault).owner(window).build().showRecoverVaultWindow(); + } + } diff --git a/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsModule.java b/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsModule.java index 143546525..255ef77cb 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/VaultOptionsModule.java @@ -17,6 +17,7 @@ import org.cryptomator.ui.common.FxControllerKey; import org.cryptomator.ui.common.FxmlFile; import org.cryptomator.ui.common.FxmlScene; import org.cryptomator.ui.mainwindow.MainWindow; +import org.cryptomator.ui.recovervault.RecoverVaultComponent; import org.cryptomator.ui.recoverykey.RecoveryKeyComponent; import javax.inject.Named; @@ -25,7 +26,7 @@ import java.util.List; import java.util.Map; import java.util.ResourceBundle; -@Module(subcomponents = {ChangePasswordComponent.class, RecoveryKeyComponent.class}) +@Module(subcomponents = {ChangePasswordComponent.class, RecoveryKeyComponent.class, RecoverVaultComponent.class}) abstract class VaultOptionsModule { @Provides diff --git a/main/ui/src/main/resources/fxml/recovervault.fxml b/main/ui/src/main/resources/fxml/recovervault.fxml new file mode 100644 index 000000000..9b0a6bf71 --- /dev/null +++ b/main/ui/src/main/resources/fxml/recovervault.fxml @@ -0,0 +1,27 @@ + + + + + + + + + + + + + + +