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 45df3b975..83773dadf 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 @@ -6,6 +6,7 @@ import dagger.Provides; import dagger.multibindings.IntoMap; import javafx.beans.property.ObjectProperty; import javafx.beans.property.SimpleObjectProperty; +import javafx.collections.ObservableList; import javafx.stage.Modality; import javafx.stage.Stage; import javafx.stage.StageStyle; @@ -13,6 +14,7 @@ import org.cryptomator.ui.common.FXMLLoaderFactory; import org.cryptomator.ui.common.FxController; import org.cryptomator.ui.common.FxControllerKey; import org.cryptomator.ui.mainwindow.MainWindow; +import org.cryptomator.ui.model.Vault; import javax.inject.Provider; import java.nio.file.Path; @@ -47,6 +49,12 @@ public abstract class AddVaultModule { return new SimpleObjectProperty<>(); } + @Provides + @AddVaultWizardScoped + static ObservableList provideVaults(@AddVaultWizard ObservableList vaults) { + return vaults; + } + // ------------------ @Binds diff --git a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultWizardComponent.java b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultWizardComponent.java index dbb31d5f6..1488f4295 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultWizardComponent.java +++ b/main/ui/src/main/java/org/cryptomator/ui/addvaultwizard/AddVaultWizardComponent.java @@ -5,9 +5,12 @@ *******************************************************************************/ package org.cryptomator.ui.addvaultwizard; +import dagger.BindsInstance; import dagger.Subcomponent; +import javafx.collections.ObservableList; import javafx.stage.Stage; import org.cryptomator.ui.common.FXMLLoaderFactory; +import org.cryptomator.ui.model.Vault; @AddVaultWizardScoped @Subcomponent(modules = {AddVaultModule.class}) @@ -29,6 +32,9 @@ public interface AddVaultWizardComponent { @Subcomponent.Builder interface Builder { + @BindsInstance + Builder vaults(@AddVaultWizard ObservableList vaults); + AddVaultWizardComponent build(); } 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 793528f1a..c73dafc16 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 @@ -1,11 +1,15 @@ package org.cryptomator.ui.addvaultwizard; import javafx.beans.property.ObjectProperty; +import javafx.collections.ObservableList; import javafx.fxml.FXML; import javafx.stage.FileChooser; import javafx.stage.Stage; +import org.cryptomator.common.settings.VaultSettings; import org.cryptomator.ui.common.FXMLLoaderFactory; import org.cryptomator.ui.common.FxController; +import org.cryptomator.ui.model.Vault; +import org.cryptomator.ui.model.VaultFactory; import javax.inject.Inject; import java.io.File; @@ -17,23 +21,27 @@ public class ChooseExistingVaultController implements FxController { private final Stage window; private final FXMLLoaderFactory fxmlLoaders; private final ObjectProperty vaultPath; + private final ObservableList vaults; + private final VaultFactory vaultFactory; @Inject - ChooseExistingVaultController(@AddVaultWizard Stage window, @AddVaultWizard FXMLLoaderFactory fxmlLoaders, ObjectProperty vaultPath) { + ChooseExistingVaultController(@AddVaultWizard Stage window, @AddVaultWizard FXMLLoaderFactory fxmlLoaders, ObjectProperty vaultPath, @AddVaultWizard ObservableList vaults, VaultFactory vaultFactory) { this.window = window; this.fxmlLoaders = fxmlLoaders; this.vaultPath = vaultPath; + this.vaults = vaults; + this.vaultFactory = vaultFactory; } @FXML public void chooseFile() { FileChooser fileChooser = new FileChooser(); //TODO: Title is part of the localization. => inject resource bundle and get correct title - fileChooser.setTitle("Open Masterkey File"); + fileChooser.setTitle("TODO Open Masterkey File"); fileChooser.getExtensionFilters().add(new FileChooser.ExtensionFilter("Cryptomator Masterkey", "*.cryptomator")); final File file = fileChooser.showOpenDialog(window); if (file != null) { - vaultPath.setValue(file.toPath().toAbsolutePath()); + vaultPath.setValue(file.toPath().toAbsolutePath().getParent()); } } @@ -44,7 +52,10 @@ public class ChooseExistingVaultController implements FxController { @FXML public void confirm() { - //TODO + //TODO: error handling & cannot unlock added vault + VaultSettings vaultSettings = VaultSettings.withRandomId(); + vaultSettings.path().setValue(vaultPath.get()); + vaults.add(vaultFactory.get(vaultSettings)); window.close(); } diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java index b0f67d0d7..3f6dc5498 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java @@ -41,7 +41,7 @@ public class VaultListController implements FxController { } public void didClickAddVault() { - addVaultWizard.build().showAddVaultWizard(); + addVaultWizard.vaults(vaults).build().showAddVaultWizard(); } public void didClickRemoveVault() {