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 2d4de0273..a4e68be3b 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 @@ -13,6 +13,7 @@ import javafx.scene.image.Image; import javafx.stage.Modality; import javafx.stage.Stage; import javafx.stage.StageStyle; +import org.cryptomator.common.vaults.Vault; import org.cryptomator.ui.common.FXMLLoaderFactory; import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.common.FxControllerKey; @@ -63,6 +64,15 @@ public abstract class AddVaultModule { return new SimpleStringProperty(""); } + @Provides + @AddVaultWizard + @AddVaultWizardScoped + static ObjectProperty provideVault() { + return new SimpleObjectProperty<>(); + } + + // ------------------ + @Provides @FxmlScene(FxmlFile.ADDVAULT_WELCOME) @AddVaultWizardScoped @@ -98,6 +108,13 @@ public abstract class AddVaultModule { return fxmlLoaders.createScene("/fxml/addvault_new_password.fxml"); } + @Provides + @FxmlScene(FxmlFile.ADDVAULT_SUCCESS) + @AddVaultWizardScoped + static Scene provideCreateNewVaultSuccessScene(@AddVaultWizard FXMLLoaderFactory fxmlLoaders) { + return fxmlLoaders.createScene("/fxml/addvault_success.fxml"); + } + // ------------------ @Binds @@ -124,4 +141,9 @@ public abstract class AddVaultModule { @IntoMap @FxControllerKey(CreateNewVaultPasswordController.class) abstract FxController bindCreateNewVaultPasswordController(CreateNewVaultPasswordController controller); + + @Binds + @IntoMap + @FxControllerKey(AddVaultSuccessController.class) + abstract FxController bindAddVaultSuccessController(AddVaultSuccessController controller); } diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultSuccessController.java b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultSuccessController.java new file mode 100644 index 000000000..79db525f0 --- /dev/null +++ b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultSuccessController.java @@ -0,0 +1,47 @@ +package org.cryptomator.ui.addvaultwizard; + +import javafx.beans.property.ObjectProperty; +import javafx.beans.property.ReadOnlyObjectProperty; +import javafx.event.ActionEvent; +import javafx.fxml.FXML; +import javafx.stage.Stage; +import org.cryptomator.common.vaults.Vault; +import org.cryptomator.ui.common.FxController; +import org.cryptomator.ui.fxapp.FxApplication; + +import javax.inject.Inject; + +@AddVaultWizardScoped +public class AddVaultSuccessController implements FxController { + + private final FxApplication fxApplication; + private final Stage window; + private final ReadOnlyObjectProperty vault; + + @Inject + AddVaultSuccessController(FxApplication fxApplication, @AddVaultWizard Stage window, @AddVaultWizard ObjectProperty vault) { + this.fxApplication = fxApplication; + this.window = window; + this.vault = vault; + } + + public void unlockAndClose(ActionEvent actionEvent) { + close(actionEvent); + fxApplication.showUnlockWindow(vault.get()); + } + + @FXML + public void close(ActionEvent actionEvent) { + window.close(); + } + + /* Observables */ + + public ReadOnlyObjectProperty vaultProperty() { + return vault; + } + + public Vault getVault() { + return vault.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 587443d73..7a11ee303 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 @@ -24,17 +24,21 @@ public class ChooseExistingVaultController implements FxController { private final Stage window; private final Lazy welcomeScene; + private final Lazy successScene; private final ObjectProperty vaultPath; private final ObservableList vaults; + private final ObjectProperty vault; private final VaultFactory vaultFactory; private final ResourceBundle resourceBundle; @Inject - ChooseExistingVaultController(@AddVaultWizard Stage window, @FxmlScene(FxmlFile.ADDVAULT_WELCOME) Lazy welcomeScene, ObjectProperty vaultPath, ObservableList vaults, VaultFactory vaultFactory, ResourceBundle resourceBundle) { + ChooseExistingVaultController(@AddVaultWizard Stage window, @FxmlScene(FxmlFile.ADDVAULT_WELCOME) Lazy welcomeScene, @FxmlScene(FxmlFile.ADDVAULT_SUCCESS) Lazy successScene, ObjectProperty vaultPath, ObservableList vaults, @AddVaultWizard ObjectProperty vault, VaultFactory vaultFactory, ResourceBundle resourceBundle) { this.window = window; this.welcomeScene = welcomeScene; + this.successScene = successScene; this.vaultPath = vaultPath; this.vaults = vaults; + this.vault = vault; this.vaultFactory = vaultFactory; this.resourceBundle = resourceBundle; } @@ -45,7 +49,7 @@ public class ChooseExistingVaultController implements FxController { } @FXML - public void chooseFileAndFinish() { + public void chooseFileAndNext() { //TODO: error handling & cannot unlock added vault FileChooser fileChooser = new FileChooser(); fileChooser.setTitle(resourceBundle.getString("addvaultwizard.existing.filePickerTitle")); @@ -55,9 +59,11 @@ public class ChooseExistingVaultController implements FxController { vaultPath.setValue(file.toPath().toAbsolutePath().getParent()); VaultSettings vaultSettings = VaultSettings.withRandomId(); vaultSettings.path().setValue(vaultPath.get()); - vaults.add(vaultFactory.get(vaultSettings)); + Vault newVault = vaultFactory.get(vaultSettings); + vaults.add(newVault); + vault.set(newVault); //TODO: error handling? - window.close(); + window.setScene(successScene.get()); } } diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultPasswordController.java b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultPasswordController.java index 03127d38d..898192046 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultPasswordController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/CreateNewVaultPasswordController.java @@ -14,7 +14,6 @@ import javafx.scene.control.Button; import javafx.scene.control.CheckBox; import javafx.scene.control.Label; import javafx.scene.layout.HBox; -import javafx.scene.layout.Region; import javafx.stage.Stage; import org.cryptomator.common.settings.VaultSettings; import org.cryptomator.common.vaults.Vault; @@ -42,10 +41,12 @@ public class CreateNewVaultPasswordController implements FxController { private static final Logger LOG = LoggerFactory.getLogger(CreateNewVaultPasswordController.class); private final Stage window; - private final Lazy previousScene; + private final Lazy chooseLocationScene; + private final Lazy successScene; private final StringProperty vaultName; private final ObjectProperty vaultPath; private final ObservableList vaults; + private final ObjectProperty vault; private final VaultFactory vaultFactory; private final ResourceBundle resourceBundle; private final PasswordStrengthUtil strengthRater; @@ -62,12 +63,14 @@ public class CreateNewVaultPasswordController implements FxController { public CheckBox finalConfirmationCheckbox; @Inject - CreateNewVaultPasswordController(@AddVaultWizard Stage window, @FxmlScene(FxmlFile.ADDVAULT_NEW_LOCATION) Lazy previousScene, StringProperty vaultName, ObjectProperty vaultPath, ObservableList vaults, VaultFactory vaultFactory, ResourceBundle resourceBundle, PasswordStrengthUtil strengthRater) { + CreateNewVaultPasswordController(@AddVaultWizard Stage window, @FxmlScene(FxmlFile.ADDVAULT_NEW_LOCATION) Lazy chooseLocationScene, @FxmlScene(FxmlFile.ADDVAULT_SUCCESS) Lazy successScene, StringProperty vaultName, ObjectProperty vaultPath, ObservableList vaults, @AddVaultWizard ObjectProperty vault, VaultFactory vaultFactory, ResourceBundle resourceBundle, PasswordStrengthUtil strengthRater) { this.window = window; - this.previousScene = previousScene; + this.chooseLocationScene = chooseLocationScene; + this.successScene = successScene; this.vaultName = vaultName; this.vaultPath = vaultPath; this.vaults = vaults; + this.vault = vault; this.vaultFactory = vaultFactory; this.resourceBundle = resourceBundle; this.strengthRater = strengthRater; @@ -97,11 +100,11 @@ public class CreateNewVaultPasswordController implements FxController { @FXML public void back() { - window.setScene(previousScene.get()); + window.setScene(chooseLocationScene.get()); } @FXML - public void finish() { + public void next() { VaultSettings vaultSettings = VaultSettings.withRandomId(); vaultSettings.path().setValue(vaultPath.get()); Vault newVault = vaultFactory.get(vaultSettings); @@ -116,8 +119,10 @@ public class CreateNewVaultPasswordController implements FxController { } try { newVault.create(passwordField.getCharacters()); + LOG.info("Created new vault at path {}", vaultPath.get()); + vault.set(newVault); vaults.add(newVault); - window.close(); + window.setScene(successScene.get()); } catch (IOException e) { // TODO show generic error screen LOG.error("", e); 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 189febb0e..bcbccd419 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 @@ -6,6 +6,7 @@ public enum FxmlFile { 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_SUCCESS("/fxml/addvault_success.fxml"), // CHANGEPASSWORD("/fxml/changepassword.fxml"), // MAIN_WINDOW("/fxml/main_window.fxml"), // PREFERENCES("/fxml/preferences.fxml"), // diff --git a/main/ui/src/main/resources/fxml/addvault_existing.fxml b/main/ui/src/main/resources/fxml/addvault_existing.fxml index 16548b104..645904523 100644 --- a/main/ui/src/main/resources/fxml/addvault_existing.fxml +++ b/main/ui/src/main/resources/fxml/addvault_existing.fxml @@ -23,10 +23,10 @@ - +