From 7c1d6973ba90f79e802286e8eac03ab0851b0c27 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Thu, 6 Aug 2020 15:18:30 +0200 Subject: [PATCH 01/12] fixes #1289 by decoupling storage path from vault name --- .../java/org/cryptomator/common/settings/VaultSettings.java | 2 +- .../src/main/java/org/cryptomator/common/vaults/Vault.java | 5 ++--- 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettings.java b/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettings.java index 13a0c8eed..395b118dd 100644 --- a/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettings.java +++ b/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettings.java @@ -70,7 +70,7 @@ public class VaultSettings { if (!mountNameSet && dirnameExists) { mountName.set(normalizeMountName(newPath.getFileName().toString())); } else if (!mountNameSet && !dirnameExists) { - mountName.set(DEFAULT_MOUNT_NAME + id); + mountName.set(DEFAULT_MOUNT_NAME + " " + id); } else if (mountNameSet && dirnameExists) { if (mountName.get().equals(DEFAULT_MOUNT_NAME + id)) { //this is okay, since this function is only executed if the path changes (aka, the vault is created or added) diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java b/main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java index bc461c1d9..5ee0ee931 100644 --- a/main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java +++ b/main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java @@ -78,7 +78,7 @@ public class Vault { this.state = state; this.lastKnownException = lastKnownException; this.stats = stats; - this.displayableName = Bindings.createStringBinding(this::getDisplayableName, vaultSettings.path()); + this.displayableName = Bindings.createStringBinding(this::getDisplayableName, vaultSettings.mountName()); this.displayablePath = Bindings.createStringBinding(this::getDisplayablePath, vaultSettings.path()); this.locked = Bindings.createBooleanBinding(this::isLocked, state); this.processing = Bindings.createBooleanBinding(this::isProcessing, state); @@ -230,8 +230,7 @@ public class Vault { } public String getDisplayableName() { - Path p = vaultSettings.path().get(); - return p.getFileName().toString(); + return vaultSettings.mountName().get(); } public StringBinding accessPointProperty() { From ea4c91fb3785466c19017fc3782edd0846d9cb4d Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Thu, 6 Aug 2020 15:20:32 +0200 Subject: [PATCH 02/12] change meaning of mount name setting: * it is now considered the gerenal vault name * methods (except parsing) are renamed accordingly --- .../common/settings/VaultSettings.java | 22 +++++++++---------- .../settings/VaultSettingsJsonAdapter.java | 4 ++-- .../common/vaults/DokanyVolume.java | 2 +- .../org/cryptomator/common/vaults/Vault.java | 4 ++-- .../common/vaults/VaultModule.java | 2 +- .../common/vaults/WebDavVolume.java | 2 +- .../common/settings/SettingsTest.java | 2 +- .../VaultSettingsJsonAdapterTest.java | 4 ++-- .../common/vaults/VaultModuleTest.java | 2 +- .../vaultoptions/MountOptionsController.java | 2 +- 10 files changed, 23 insertions(+), 23 deletions(-) diff --git a/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettings.java b/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettings.java index 395b118dd..e31a361ff 100644 --- a/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettings.java +++ b/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettings.java @@ -42,7 +42,7 @@ public class VaultSettings { private final String id; private final ObjectProperty path = new SimpleObjectProperty(); - private final StringProperty mountName = new SimpleStringProperty(); + private final StringProperty displayName = new SimpleStringProperty(); private final StringProperty winDriveLetter = new SimpleStringProperty(); private final BooleanProperty unlockAfterStartup = new SimpleBooleanProperty(DEFAULT_UNLOCK_AFTER_STARTUP); private final BooleanProperty revealAfterMount = new SimpleBooleanProperty(DEFAULT_REAVEAL_AFTER_MOUNT); @@ -56,25 +56,25 @@ public class VaultSettings { public VaultSettings(String id) { this.id = Objects.requireNonNull(id); - EasyBind.subscribe(path, this::deriveMountNameFromPathOrUseDefault); + EasyBind.subscribe(path, this::deriveDisplayNameFromPathOrUseDefault); } Observable[] observables() { - return new Observable[]{path, mountName, winDriveLetter, unlockAfterStartup, revealAfterMount, useCustomMountPath, customMountPath, usesReadOnlyMode, mountFlags, filenameLengthLimit, actionAfterUnlock}; + return new Observable[]{path, displayName, winDriveLetter, unlockAfterStartup, revealAfterMount, useCustomMountPath, customMountPath, usesReadOnlyMode, mountFlags, filenameLengthLimit, actionAfterUnlock}; } - private void deriveMountNameFromPathOrUseDefault(Path newPath) { - final boolean mountNameSet = !StringUtils.isBlank(mountName.get()); + private void deriveDisplayNameFromPathOrUseDefault(Path newPath) { + final boolean mountNameSet = !StringUtils.isBlank(displayName.get()); final boolean dirnameExists = (newPath != null) && (newPath.getFileName() != null); if (!mountNameSet && dirnameExists) { - mountName.set(normalizeMountName(newPath.getFileName().toString())); + displayName.set(normalizeMountName(newPath.getFileName().toString())); } else if (!mountNameSet && !dirnameExists) { - mountName.set(DEFAULT_MOUNT_NAME + " " + id); + displayName.set(DEFAULT_MOUNT_NAME + " " + id); } else if (mountNameSet && dirnameExists) { - if (mountName.get().equals(DEFAULT_MOUNT_NAME + id)) { + if (displayName.get().equals(DEFAULT_MOUNT_NAME + id)) { //this is okay, since this function is only executed if the path changes (aka, the vault is created or added) - mountName.set(newPath.getFileName().toString()); + displayName.set(newPath.getFileName().toString()); } } } @@ -118,8 +118,8 @@ public class VaultSettings { return path; } - public StringProperty mountName() { - return mountName; + public StringProperty displayName() { + return displayName; } public StringProperty winDriveLetter() { diff --git a/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettingsJsonAdapter.java b/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettingsJsonAdapter.java index d136ffaff..a8b940918 100644 --- a/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettingsJsonAdapter.java +++ b/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettingsJsonAdapter.java @@ -21,7 +21,7 @@ class VaultSettingsJsonAdapter { out.beginObject(); out.name("id").value(value.getId()); out.name("path").value(value.path().get().toString()); - out.name("mountName").value(value.mountName().get()); + out.name("mountName").value(value.displayName().get()); out.name("winDriveLetter").value(value.winDriveLetter().get()); out.name("unlockAfterStartup").value(value.unlockAfterStartup().get()); out.name("revealAfterMount").value(value.revealAfterMount().get()); @@ -73,7 +73,7 @@ class VaultSettingsJsonAdapter { in.endObject(); VaultSettings vaultSettings = (id == null) ? VaultSettings.withRandomId() : new VaultSettings(id); - vaultSettings.mountName().set(mountName); + vaultSettings.displayName().set(mountName); vaultSettings.path().set(Paths.get(path)); vaultSettings.winDriveLetter().set(winDriveLetter); vaultSettings.unlockAfterStartup().set(unlockAfterStartup); diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/DokanyVolume.java b/main/commons/src/main/java/org/cryptomator/common/vaults/DokanyVolume.java index 1bfd813e3..f934bf25f 100644 --- a/main/commons/src/main/java/org/cryptomator/common/vaults/DokanyVolume.java +++ b/main/commons/src/main/java/org/cryptomator/common/vaults/DokanyVolume.java @@ -47,7 +47,7 @@ public class DokanyVolume implements Volume { @Override public void mount(CryptoFileSystem fs, String mountFlags) throws VolumeException, IOException { this.mountPoint = determineMountPoint(); - String mountName = vaultSettings.mountName().get(); + String mountName = vaultSettings.displayName().get(); try { this.mount = mountFactory.mount(fs.getPath("/"), mountPoint, mountName, FS_TYPE_NAME, mountFlags.strip()); } catch (MountFailedException e) { diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java b/main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java index 5ee0ee931..ce49a564e 100644 --- a/main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java +++ b/main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java @@ -78,7 +78,7 @@ public class Vault { this.state = state; this.lastKnownException = lastKnownException; this.stats = stats; - this.displayableName = Bindings.createStringBinding(this::getDisplayableName, vaultSettings.mountName()); + this.displayableName = Bindings.createStringBinding(this::getDisplayableName, vaultSettings.displayName()); this.displayablePath = Bindings.createStringBinding(this::getDisplayablePath, vaultSettings.path()); this.locked = Bindings.createBooleanBinding(this::isLocked, state); this.processing = Bindings.createBooleanBinding(this::isProcessing, state); @@ -230,7 +230,7 @@ public class Vault { } public String getDisplayableName() { - return vaultSettings.mountName().get(); + return vaultSettings.displayName().get(); } public StringBinding accessPointProperty() { diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/VaultModule.java b/main/commons/src/main/java/org/cryptomator/common/vaults/VaultModule.java index 1afd9d88b..d084be7bd 100644 --- a/main/commons/src/main/java/org/cryptomator/common/vaults/VaultModule.java +++ b/main/commons/src/main/java/org/cryptomator/common/vaults/VaultModule.java @@ -77,7 +77,7 @@ public class VaultModule { @DefaultMountFlags public StringBinding provideDefaultMountFlags(Settings settings, VaultSettings vaultSettings) { ObjectProperty preferredVolumeImpl = settings.preferredVolumeImpl(); - StringProperty mountName = vaultSettings.mountName(); + StringProperty mountName = vaultSettings.displayName(); BooleanProperty readOnly = vaultSettings.usesReadOnlyMode(); return Bindings.createStringBinding(() -> { diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/WebDavVolume.java b/main/commons/src/main/java/org/cryptomator/common/vaults/WebDavVolume.java index a12236230..5ad63dd7b 100644 --- a/main/commons/src/main/java/org/cryptomator/common/vaults/WebDavVolume.java +++ b/main/commons/src/main/java/org/cryptomator/common/vaults/WebDavVolume.java @@ -44,7 +44,7 @@ public class WebDavVolume implements Volume { if (!server.isRunning()) { server.start(); } - servlet = server.createWebDavServlet(fs.getPath("/"), vaultSettings.getId() + "/" + vaultSettings.mountName().get()); + servlet = server.createWebDavServlet(fs.getPath("/"), vaultSettings.getId() + "/" + vaultSettings.displayName().get()); servlet.start(); mount(); } diff --git a/main/commons/src/test/java/org/cryptomator/common/settings/SettingsTest.java b/main/commons/src/test/java/org/cryptomator/common/settings/SettingsTest.java index 708578763..33d384cf8 100644 --- a/main/commons/src/test/java/org/cryptomator/common/settings/SettingsTest.java +++ b/main/commons/src/test/java/org/cryptomator/common/settings/SettingsTest.java @@ -29,7 +29,7 @@ public class SettingsTest { Mockito.verify(changeListener, Mockito.times(2)).accept(settings); // third change (to property of list item): - vaultSettings.mountName().set("asd"); + vaultSettings.displayName().set("asd"); Mockito.verify(changeListener, Mockito.times(3)).accept(settings); } diff --git a/main/commons/src/test/java/org/cryptomator/common/settings/VaultSettingsJsonAdapterTest.java b/main/commons/src/test/java/org/cryptomator/common/settings/VaultSettingsJsonAdapterTest.java index 237b00904..4c684d5d6 100644 --- a/main/commons/src/test/java/org/cryptomator/common/settings/VaultSettingsJsonAdapterTest.java +++ b/main/commons/src/test/java/org/cryptomator/common/settings/VaultSettingsJsonAdapterTest.java @@ -29,7 +29,7 @@ public class VaultSettingsJsonAdapterTest { VaultSettings vaultSettings = adapter.read(jsonReader); Assertions.assertEquals("foo", vaultSettings.getId()); Assertions.assertEquals(Paths.get("/foo/bar"), vaultSettings.path().get()); - Assertions.assertEquals("test", vaultSettings.mountName().get()); + Assertions.assertEquals("test", vaultSettings.displayName().get()); Assertions.assertEquals("X", vaultSettings.winDriveLetter().get()); Assertions.assertEquals("/home/test/crypto", vaultSettings.customMountPath().get()); Assertions.assertEquals("--foo --bar", vaultSettings.mountFlags().get()); @@ -41,7 +41,7 @@ public class VaultSettingsJsonAdapterTest { public void testSerialize() throws IOException { VaultSettings vaultSettings = new VaultSettings("test"); vaultSettings.path().set(Paths.get("/foo/bar")); - vaultSettings.mountName().set("mountyMcMountFace"); + vaultSettings.displayName().set("mountyMcMountFace"); vaultSettings.mountFlags().set("--foo --bar"); StringWriter buf = new StringWriter(); diff --git a/main/commons/src/test/java/org/cryptomator/common/vaults/VaultModuleTest.java b/main/commons/src/test/java/org/cryptomator/common/vaults/VaultModuleTest.java index 1eb9a9d2f..0f4cbd102 100644 --- a/main/commons/src/test/java/org/cryptomator/common/vaults/VaultModuleTest.java +++ b/main/commons/src/test/java/org/cryptomator/common/vaults/VaultModuleTest.java @@ -28,7 +28,7 @@ public class VaultModuleTest { @BeforeEach public void setup(@TempDir Path tmpDir) { - Mockito.when(vaultSettings.mountName()).thenReturn(new SimpleStringProperty("TEST")); + Mockito.when(vaultSettings.displayName()).thenReturn(new SimpleStringProperty("TEST")); Mockito.when(vaultSettings.usesReadOnlyMode()).thenReturn(new SimpleBooleanProperty(true)); System.setProperty("user.home", tmpDir.toString()); } diff --git a/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/MountOptionsController.java b/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/MountOptionsController.java index 81753d83a..dcff17836 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/MountOptionsController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/MountOptionsController.java @@ -63,7 +63,7 @@ public class MountOptionsController implements FxController { @FXML public void initialize() { - driveName.textProperty().bindBidirectional(vault.getVaultSettings().mountName()); + driveName.textProperty().bindBidirectional(vault.getVaultSettings().displayName()); // readonly: readOnlyCheckbox.selectedProperty().bindBidirectional(vault.getVaultSettings().usesReadOnlyMode()); From fb90128b63a191d403c3a5a30b1a24f87397cc92 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Thu, 6 Aug 2020 15:33:28 +0200 Subject: [PATCH 03/12] Move option to change display name of a vault from mount options to general options --- .../ui/vaultoptions/GeneralVaultOptionsController.java | 3 +++ .../cryptomator/ui/vaultoptions/MountOptionsController.java | 2 -- main/ui/src/main/resources/fxml/vault_options_general.fxml | 6 ++++++ main/ui/src/main/resources/fxml/vault_options_mount.fxml | 5 ----- main/ui/src/main/resources/i18n/strings.properties | 2 +- 5 files changed, 10 insertions(+), 8 deletions(-) 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 ddb6e0553..9849b0513 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 @@ -3,6 +3,7 @@ package org.cryptomator.ui.vaultoptions; import javafx.fxml.FXML; import javafx.scene.control.CheckBox; import javafx.scene.control.ChoiceBox; +import javafx.scene.control.TextField; import javafx.util.StringConverter; import org.cryptomator.common.settings.UiTheme; import org.cryptomator.common.settings.WhenUnlocked; @@ -18,6 +19,7 @@ public class GeneralVaultOptionsController implements FxController { private final Vault vault; private final ResourceBundle resourceBundle; + public TextField vaultName; public CheckBox unlockOnStartupCheckbox; public ChoiceBox actionAfterUnlockChoiceBox; @@ -29,6 +31,7 @@ public class GeneralVaultOptionsController implements FxController { @FXML public void initialize() { + vaultName.textProperty().bindBidirectional(vault.getVaultSettings().displayName()); unlockOnStartupCheckbox.selectedProperty().bindBidirectional(vault.getVaultSettings().unlockAfterStartup()); actionAfterUnlockChoiceBox.getItems().addAll(WhenUnlocked.values()); actionAfterUnlockChoiceBox.valueProperty().bindBidirectional(vault.getVaultSettings().actionAfterUnlock()); diff --git a/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/MountOptionsController.java b/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/MountOptionsController.java index dcff17836..0d5b631ab 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/MountOptionsController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/vaultoptions/MountOptionsController.java @@ -42,7 +42,6 @@ public class MountOptionsController implements FxController { private final BooleanBinding webDavAndWindows; private final WindowsDriveLetters windowsDriveLetters; private final ResourceBundle resourceBundle; - public TextField driveName; public CheckBox readOnlyCheckbox; public CheckBox customMountFlagsCheckbox; public TextField mountFlags; @@ -63,7 +62,6 @@ public class MountOptionsController implements FxController { @FXML public void initialize() { - driveName.textProperty().bindBidirectional(vault.getVaultSettings().displayName()); // readonly: readOnlyCheckbox.selectedProperty().bindBidirectional(vault.getVaultSettings().usesReadOnlyMode()); diff --git a/main/ui/src/main/resources/fxml/vault_options_general.fxml b/main/ui/src/main/resources/fxml/vault_options_general.fxml index f6c3c680c..5997191bc 100644 --- a/main/ui/src/main/resources/fxml/vault_options_general.fxml +++ b/main/ui/src/main/resources/fxml/vault_options_general.fxml @@ -6,6 +6,7 @@ + + + + diff --git a/main/ui/src/main/resources/fxml/vault_options_mount.fxml b/main/ui/src/main/resources/fxml/vault_options_mount.fxml index 688e1bb1c..6ee1b84cd 100644 --- a/main/ui/src/main/resources/fxml/vault_options_mount.fxml +++ b/main/ui/src/main/resources/fxml/vault_options_mount.fxml @@ -23,11 +23,6 @@ - - - diff --git a/main/ui/src/main/resources/i18n/strings.properties b/main/ui/src/main/resources/i18n/strings.properties index cd6a2d625..d077d71b3 100644 --- a/main/ui/src/main/resources/i18n/strings.properties +++ b/main/ui/src/main/resources/i18n/strings.properties @@ -213,6 +213,7 @@ wrongFileAlert.link=For further assistance, visit # Vault Options ## General vaultOptions.general=General +vaultOptions.general.vaultName=Vault Name vaultOptions.general.unlockAfterStartup=Unlock vault when starting Cryptomator vaultOptions.general.actionAfterUnlock=After successful unlock vaultOptions.general.actionAfterUnlock.ignore=Do nothing @@ -221,7 +222,6 @@ vaultOptions.general.actionAfterUnlock.ask=Ask ## Mount vaultOptions.mount=Mounting vaultOptions.mount.readonly=Read-Only -vaultOptions.mount.driveName=Drive Name vaultOptions.mount.customMountFlags=Custom Mount Flags vaultOptions.mount.winDriveLetterOccupied=occupied vaultOptions.mount.mountPoint=Mount Point From 429098733caabeb5846965603d5804e41d072d8e Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Tue, 11 Aug 2020 11:19:54 +0200 Subject: [PATCH 04/12] Improve the vault/mount name system: * fix bug where the default name is not replaced by the actual folder name * introduce new field in settings "mountName" as binding on displayName * change volumes to use mountName instead of displayName --- .../common/settings/VaultSettings.java | 21 ++++++++++++++----- .../common/vaults/DokanyVolume.java | 2 +- .../common/vaults/WebDavVolume.java | 4 ++-- .../common/settings/VaultSettingsTest.java | 19 +++++++++++------ 4 files changed, 32 insertions(+), 14 deletions(-) diff --git a/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettings.java b/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettings.java index e31a361ff..1fdaefebf 100644 --- a/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettings.java +++ b/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettings.java @@ -8,6 +8,8 @@ package org.cryptomator.common.settings; import com.google.common.base.Strings; import com.google.common.io.BaseEncoding; import javafx.beans.Observable; +import javafx.beans.binding.Bindings; +import javafx.beans.binding.StringBinding; import javafx.beans.property.BooleanProperty; import javafx.beans.property.IntegerProperty; import javafx.beans.property.ObjectProperty; @@ -53,8 +55,11 @@ public class VaultSettings { private final IntegerProperty filenameLengthLimit = new SimpleIntegerProperty(DEFAULT_FILENAME_LENGTH_LIMIT); private final ObjectProperty actionAfterUnlock = new SimpleObjectProperty<>(DEFAULT_ACTION_AFTER_UNLOCK); + private final StringBinding mountName; + public VaultSettings(String id) { this.id = Objects.requireNonNull(id); + this.mountName = Bindings.createStringBinding(this::normalizeDisplayName, displayName); EasyBind.subscribe(path, this::deriveDisplayNameFromPathOrUseDefault); } @@ -66,13 +71,14 @@ public class VaultSettings { private void deriveDisplayNameFromPathOrUseDefault(Path newPath) { final boolean mountNameSet = !StringUtils.isBlank(displayName.get()); final boolean dirnameExists = (newPath != null) && (newPath.getFileName() != null); + final String defaultPattern = DEFAULT_MOUNT_NAME + " " + id; if (!mountNameSet && dirnameExists) { - displayName.set(normalizeMountName(newPath.getFileName().toString())); + displayName.set(newPath.getFileName().toString()); } else if (!mountNameSet && !dirnameExists) { - displayName.set(DEFAULT_MOUNT_NAME + " " + id); + displayName.set(defaultPattern); } else if (mountNameSet && dirnameExists) { - if (displayName.get().equals(DEFAULT_MOUNT_NAME + id)) { + if (displayName.get().equals(defaultPattern)) { //this is okay, since this function is only executed if the path changes (aka, the vault is created or added) displayName.set(newPath.getFileName().toString()); } @@ -89,8 +95,9 @@ public class VaultSettings { return BaseEncoding.base64Url().encode(randomBytes); } - public static String normalizeMountName(String mountName) { - String normalizedMountName = StringUtils.stripAccents(mountName); + //visible for testing + String normalizeDisplayName() { + String normalizedMountName = StringUtils.stripAccents(displayName.get()); StringBuilder builder = new StringBuilder(); for (char c : normalizedMountName.toCharArray()) { if (Character.isWhitespace(c)) { @@ -122,6 +129,10 @@ public class VaultSettings { return displayName; } + public StringBinding mountName() { + return mountName; + } + public StringProperty winDriveLetter() { return winDriveLetter; } diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/DokanyVolume.java b/main/commons/src/main/java/org/cryptomator/common/vaults/DokanyVolume.java index f934bf25f..117f888c9 100644 --- a/main/commons/src/main/java/org/cryptomator/common/vaults/DokanyVolume.java +++ b/main/commons/src/main/java/org/cryptomator/common/vaults/DokanyVolume.java @@ -49,7 +49,7 @@ public class DokanyVolume implements Volume { this.mountPoint = determineMountPoint(); String mountName = vaultSettings.displayName().get(); try { - this.mount = mountFactory.mount(fs.getPath("/"), mountPoint, mountName, FS_TYPE_NAME, mountFlags.strip()); + this.mount = mountFactory.mount(fs.getPath("/"), mountPoint, vaultSettings.mountName().get(), FS_TYPE_NAME, mountFlags.strip()); } catch (MountFailedException e) { if (vaultSettings.getCustomMountPath().isPresent()) { LOG.warn("Failed to mount vault into {}. Is this directory currently accessed by another process (e.g. Windows Explorer)?", mountPoint); diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/WebDavVolume.java b/main/commons/src/main/java/org/cryptomator/common/vaults/WebDavVolume.java index 5ad63dd7b..9c59790fa 100644 --- a/main/commons/src/main/java/org/cryptomator/common/vaults/WebDavVolume.java +++ b/main/commons/src/main/java/org/cryptomator/common/vaults/WebDavVolume.java @@ -44,7 +44,7 @@ public class WebDavVolume implements Volume { if (!server.isRunning()) { server.start(); } - servlet = server.createWebDavServlet(fs.getPath("/"), vaultSettings.getId() + "/" + vaultSettings.displayName().get()); + servlet = server.createWebDavServlet(fs.getPath("/"), vaultSettings.getId() + "/" + vaultSettings.mountName().get()); servlet.start(); mount(); } @@ -98,7 +98,7 @@ public class WebDavVolume implements Volume { @Override public Optional getMountPoint() { - return Optional.ofNullable(mountPoint); + return Optional.ofNullable(mountPoint); //TODO } private String getLocalhostAliasOrNull() { diff --git a/main/commons/src/test/java/org/cryptomator/common/settings/VaultSettingsTest.java b/main/commons/src/test/java/org/cryptomator/common/settings/VaultSettingsTest.java index 042ff9896..779b017bc 100644 --- a/main/commons/src/test/java/org/cryptomator/common/settings/VaultSettingsTest.java +++ b/main/commons/src/test/java/org/cryptomator/common/settings/VaultSettingsTest.java @@ -15,12 +15,19 @@ import static org.junit.jupiter.api.Assertions.assertEquals; public class VaultSettingsTest { @Test - public void testNormalize() throws Exception { - assertEquals("_", VaultSettings.normalizeMountName(" ")); - assertEquals("a", VaultSettings.normalizeMountName("ä")); - assertEquals("C", VaultSettings.normalizeMountName("Ĉ")); - assertEquals("_", VaultSettings.normalizeMountName(":")); - assertEquals("_", VaultSettings.normalizeMountName("汉语")); + public void testNormalize() { + VaultSettings settings = new VaultSettings("id"); + settings.displayName().setValue(" "); + assertEquals("_", settings.normalizeDisplayName()); + + settings.displayName().setValue("ä"); + assertEquals("a", settings.normalizeDisplayName()); + settings.displayName().setValue("Ĉ"); + assertEquals("C", settings.normalizeDisplayName()); + settings.displayName().setValue(":"); + assertEquals("_", settings.normalizeDisplayName()); + settings.displayName().setValue("汉语"); + assertEquals("_", settings.normalizeDisplayName()); } } From 31d95ae5b06018528259b20f0b5fff9bc7fdf758 Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Tue, 11 Aug 2020 12:04:02 +0200 Subject: [PATCH 05/12] Remove restrictions of vault name filed to only contain alpha numeric characters --- .../ui/src/main/resources/fxml/vault_options_general.fxml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/main/ui/src/main/resources/fxml/vault_options_general.fxml b/main/ui/src/main/resources/fxml/vault_options_general.fxml index 5997191bc..0c4caa772 100644 --- a/main/ui/src/main/resources/fxml/vault_options_general.fxml +++ b/main/ui/src/main/resources/fxml/vault_options_general.fxml @@ -2,11 +2,11 @@ - - - + + + From 49a8689090e6844ff3705eca2a01d73f33a64deb Mon Sep 17 00:00:00 2001 From: infeo Date: Fri, 21 Aug 2020 13:30:05 +0200 Subject: [PATCH 06/12] Remove legacy concepts: * in vaultSettings, displayName does not listen on path * the caller/creater of vault settings must set the name explicitly * add localizable default vault name --- .../common/settings/VaultSettings.java | 20 ---------------- .../settings/VaultSettingsJsonAdapter.java | 6 ++--- .../common/vaults/VaultListManager.java | 23 ++++++++++++++----- .../main/resources/i18n/strings.properties | 3 +++ 4 files changed, 23 insertions(+), 29 deletions(-) diff --git a/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettings.java b/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettings.java index 1fdaefebf..6e2bd3cd8 100644 --- a/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettings.java +++ b/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettings.java @@ -19,7 +19,6 @@ import javafx.beans.property.SimpleObjectProperty; import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; import org.apache.commons.lang3.StringUtils; -import org.fxmisc.easybind.EasyBind; import java.nio.file.Path; import java.util.Objects; @@ -60,31 +59,12 @@ public class VaultSettings { public VaultSettings(String id) { this.id = Objects.requireNonNull(id); this.mountName = Bindings.createStringBinding(this::normalizeDisplayName, displayName); - - EasyBind.subscribe(path, this::deriveDisplayNameFromPathOrUseDefault); } Observable[] observables() { return new Observable[]{path, displayName, winDriveLetter, unlockAfterStartup, revealAfterMount, useCustomMountPath, customMountPath, usesReadOnlyMode, mountFlags, filenameLengthLimit, actionAfterUnlock}; } - private void deriveDisplayNameFromPathOrUseDefault(Path newPath) { - final boolean mountNameSet = !StringUtils.isBlank(displayName.get()); - final boolean dirnameExists = (newPath != null) && (newPath.getFileName() != null); - final String defaultPattern = DEFAULT_MOUNT_NAME + " " + id; - - if (!mountNameSet && dirnameExists) { - displayName.set(newPath.getFileName().toString()); - } else if (!mountNameSet && !dirnameExists) { - displayName.set(defaultPattern); - } else if (mountNameSet && dirnameExists) { - if (displayName.get().equals(defaultPattern)) { - //this is okay, since this function is only executed if the path changes (aka, the vault is created or added) - displayName.set(newPath.getFileName().toString()); - } - } - } - public static VaultSettings withRandomId() { return new VaultSettings(generateId()); } diff --git a/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettingsJsonAdapter.java b/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettingsJsonAdapter.java index a8b940918..a6dafd9f9 100644 --- a/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettingsJsonAdapter.java +++ b/main/commons/src/main/java/org/cryptomator/common/settings/VaultSettingsJsonAdapter.java @@ -37,7 +37,7 @@ class VaultSettingsJsonAdapter { public VaultSettings read(JsonReader in) throws IOException { String id = null; String path = null; - String mountName = null; + String displayName = null; String customMountPath = null; String winDriveLetter = null; boolean unlockAfterStartup = VaultSettings.DEFAULT_UNLOCK_AFTER_STARTUP; @@ -54,7 +54,7 @@ class VaultSettingsJsonAdapter { switch (name) { case "id" -> id = in.nextString(); case "path" -> path = in.nextString(); - case "mountName" -> mountName = in.nextString(); + case "mountName" -> displayName = in.nextString(); //YES, this is correct (legacy reasons) case "winDriveLetter" -> winDriveLetter = in.nextString(); case "unlockAfterStartup" -> unlockAfterStartup = in.nextBoolean(); case "revealAfterMount" -> revealAfterMount = in.nextBoolean(); @@ -73,7 +73,7 @@ class VaultSettingsJsonAdapter { in.endObject(); VaultSettings vaultSettings = (id == null) ? VaultSettings.withRandomId() : new VaultSettings(id); - vaultSettings.displayName().set(mountName); + vaultSettings.displayName().set(displayName); vaultSettings.path().set(Paths.get(path)); vaultSettings.winDriveLetter().set(winDriveLetter); vaultSettings.unlockAfterStartup().set(unlockAfterStartup); diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/VaultListManager.java b/main/commons/src/main/java/org/cryptomator/common/vaults/VaultListManager.java index 75a48c6fc..85309c0dc 100644 --- a/main/commons/src/main/java/org/cryptomator/common/vaults/VaultListManager.java +++ b/main/commons/src/main/java/org/cryptomator/common/vaults/VaultListManager.java @@ -20,11 +20,11 @@ import org.slf4j.LoggerFactory; import javax.inject.Inject; import javax.inject.Singleton; import java.io.IOException; -import java.nio.file.Files; import java.nio.file.NoSuchFileException; import java.nio.file.Path; import java.util.Collection; import java.util.Optional; +import java.util.ResourceBundle; import java.util.stream.Collectors; import static org.cryptomator.common.Constants.MASTERKEY_FILENAME; @@ -35,11 +35,13 @@ public class VaultListManager { private static final Logger LOG = LoggerFactory.getLogger(VaultListManager.class); private final VaultComponent.Builder vaultComponentBuilder; + private final ResourceBundle resourceBundle; private final ObservableList vaultList; @Inject - public VaultListManager(VaultComponent.Builder vaultComponentBuilder, Settings settings) { + public VaultListManager(VaultComponent.Builder vaultComponentBuilder, ResourceBundle resourceBundle, Settings settings) { this.vaultComponentBuilder = vaultComponentBuilder; + this.resourceBundle = resourceBundle; this.vaultList = FXCollections.observableArrayList(Vault::observables); addAll(settings.getDirectories()); @@ -59,14 +61,23 @@ public class VaultListManager { if (alreadyExistingVault.isPresent()) { return alreadyExistingVault.get(); } else { - VaultSettings vaultSettings = VaultSettings.withRandomId(); - vaultSettings.path().set(normalizedPathToVault); - Vault newVault = create(vaultSettings); + Vault newVault = create(newVaultSettings(normalizedPathToVault)); vaultList.add(newVault); return newVault; } } + private VaultSettings newVaultSettings(Path path) { + VaultSettings vaultSettings = VaultSettings.withRandomId(); + vaultSettings.path().set(path); + if (path.getFileName() != null) { + vaultSettings.displayName().set(path.getFileName().toString()); + } else { + vaultSettings.displayName().set(resourceBundle.getString("defaults.vault.vaultName")); + } + return vaultSettings; + } + private void addAll(Collection vaultSettings) { Collection vaults = vaultSettings.stream().map(this::create).collect(Collectors.toList()); vaultList.addAll(vaults); @@ -92,7 +103,7 @@ public class VaultListManager { } return compBuilder.build().vault(); } - + public static VaultState redetermineVaultState(Vault vault) { VaultState previousState = vault.getState(); return switch (previousState) { diff --git a/main/ui/src/main/resources/i18n/strings.properties b/main/ui/src/main/resources/i18n/strings.properties index d077d71b3..9a1a54c9f 100644 --- a/main/ui/src/main/resources/i18n/strings.properties +++ b/main/ui/src/main/resources/i18n/strings.properties @@ -17,6 +17,9 @@ generic.button.print=Print generic.error.title=An unexpected error occured generic.error.instruction=This should not have happened. Please report the error text below and include a description of what steps did lead to this error. +# Defaults +defaults.vault.vaultName=Vault + # Tray Menu traymenu.showMainWindow=Show traymenu.showPreferencesWindow=Preferences From ce06ddf312668a22b042c43d6699db61cb580d74 Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Tue, 18 Aug 2020 10:36:55 +0200 Subject: [PATCH 07/12] updated webdav dependencies (cherry picked from commit 8c4d35d3db98c190861bfa5420a4f52036d2e510) --- main/pom.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main/pom.xml b/main/pom.xml index 5f0d7e5ea..9a55f782a 100644 --- a/main/pom.xml +++ b/main/pom.xml @@ -28,7 +28,7 @@ 2.2.2 1.2.3 1.1.15 - 1.0.11 + 1.0.12 14 From a8cb015a06639513a58f80617efa9a9b706b070f Mon Sep 17 00:00:00 2001 From: Armin Schrenk Date: Thu, 27 Aug 2020 15:52:16 +0200 Subject: [PATCH 08/12] rename property and getters in vault class for display name. --- .../main/java/org/cryptomator/common/vaults/Vault.java | 10 +++++----- .../ui/changepassword/ChangePasswordController.java | 4 ++-- .../java/org/cryptomator/ui/common/VaultService.java | 10 +++++----- .../ui/forgetPassword/ForgetPasswordController.java | 2 +- .../java/org/cryptomator/ui/fxapp/FxApplication.java | 3 +-- .../ui/migration/MigrationRunController.java | 4 ++-- .../java/org/cryptomator/ui/quit/QuitController.java | 2 +- .../cryptomator/ui/recoverykey/RecoveryKeyModule.java | 4 +--- .../ui/removevault/RemoveVaultController.java | 2 +- .../cryptomator/ui/traymenu/TrayMenuController.java | 2 +- .../org/cryptomator/ui/unlock/UnlockController.java | 2 +- .../java/org/cryptomator/ui/unlock/UnlockModule.java | 2 +- .../java/org/cryptomator/ui/unlock/UnlockWorkflow.java | 2 +- .../ui/vaultoptions/VaultOptionsModule.java | 5 +---- main/ui/src/main/resources/fxml/addvault_success.fxml | 2 +- main/ui/src/main/resources/fxml/changepassword.fxml | 2 +- main/ui/src/main/resources/fxml/migration_run.fxml | 2 +- main/ui/src/main/resources/fxml/migration_start.fxml | 2 +- main/ui/src/main/resources/fxml/migration_success.fxml | 2 +- .../ui/src/main/resources/fxml/recoverykey_create.fxml | 2 +- .../src/main/resources/fxml/recoverykey_recover.fxml | 2 +- main/ui/src/main/resources/fxml/unlock_success.fxml | 2 +- main/ui/src/main/resources/fxml/vault_detail.fxml | 4 ++-- main/ui/src/main/resources/fxml/vault_list_cell.fxml | 2 +- 24 files changed, 35 insertions(+), 41 deletions(-) diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java b/main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java index ce49a564e..8a3735b65 100644 --- a/main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java +++ b/main/commons/src/main/java/org/cryptomator/common/vaults/Vault.java @@ -56,7 +56,7 @@ public class Vault { private final ObjectProperty state; private final ObjectProperty lastKnownException; private final VaultStats stats; - private final StringBinding displayableName; + private final StringBinding displayName; private final StringBinding displayablePath; private final BooleanBinding locked; private final BooleanBinding processing; @@ -78,7 +78,7 @@ public class Vault { this.state = state; this.lastKnownException = lastKnownException; this.stats = stats; - this.displayableName = Bindings.createStringBinding(this::getDisplayableName, vaultSettings.displayName()); + this.displayName = Bindings.createStringBinding(this::getDisplayName, vaultSettings.displayName()); this.displayablePath = Bindings.createStringBinding(this::getDisplayablePath, vaultSettings.path()); this.locked = Bindings.createBooleanBinding(this::isLocked, state); this.processing = Bindings.createBooleanBinding(this::isProcessing, state); @@ -225,11 +225,11 @@ public class Vault { return state.get() == VaultState.ERROR; } - public StringBinding displayableNameProperty() { - return displayableName; + public StringBinding displayNameProperty() { + return displayName; } - public String getDisplayableName() { + public String getDisplayName() { return vaultSettings.displayName().get(); } diff --git a/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordController.java b/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordController.java index 7a641b1e7..39be745fd 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/changepassword/ChangePasswordController.java @@ -67,7 +67,7 @@ public class ChangePasswordController implements FxController { public void finish() { try { CryptoFileSystemProvider.changePassphrase(vault.getPath(), MASTERKEY_FILENAME, oldPasswordField.getCharacters(), newPassword.get()); - LOG.info("Successfully changed password for {}", vault.getDisplayableName()); + LOG.info("Successfully changed password for {}", vault.getDisplayName()); window.close(); updatePasswordInSystemkeychain(); } catch (IOException e) { @@ -84,7 +84,7 @@ public class ChangePasswordController implements FxController { if (keychain.isPresent()) { try { keychain.get().changePassphrase(vault.getId(), CharBuffer.wrap(newPassword.get())); - LOG.info("Successfully updated password in system keychain for {}", vault.getDisplayableName()); + LOG.info("Successfully updated password in system keychain for {}", vault.getDisplayName()); } catch (KeychainAccessException e) { LOG.error("Failed to update password in system keychain.", e); } diff --git a/main/ui/src/main/java/org/cryptomator/ui/common/VaultService.java b/main/ui/src/main/java/org/cryptomator/ui/common/VaultService.java index 3e09e1fad..8aadd8c98 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/common/VaultService.java +++ b/main/ui/src/main/java/org/cryptomator/ui/common/VaultService.java @@ -44,8 +44,8 @@ public class VaultService { */ public Task createRevealTask(Vault vault) { Task task = new RevealVaultTask(vault); - task.setOnSucceeded(evt -> LOG.info("Revealed {}", vault.getDisplayableName())); - task.setOnFailed(evt -> LOG.error("Failed to reveal " + vault.getDisplayableName(), evt.getSource().getException())); + task.setOnSucceeded(evt -> LOG.info("Revealed {}", vault.getDisplayName())); + task.setOnFailed(evt -> LOG.error("Failed to reveal " + vault.getDisplayName(), evt.getSource().getException())); return task; } @@ -68,8 +68,8 @@ public class VaultService { */ public Task createLockTask(Vault vault, boolean forced) { Task task = new LockVaultTask(vault, forced); - task.setOnSucceeded(evt -> LOG.info("Locked {}", vault.getDisplayableName())); - task.setOnFailed(evt -> LOG.error("Failed to lock " + vault.getDisplayableName(), evt.getSource().getException())); + task.setOnSucceeded(evt -> LOG.info("Locked {}", vault.getDisplayName())); + task.setOnFailed(evt -> LOG.error("Failed to lock " + vault.getDisplayName(), evt.getSource().getException())); return task; } @@ -94,7 +94,7 @@ public class VaultService { List> lockTasks = vaults.stream().map(v -> new LockVaultTask(v, forced)).collect(Collectors.toUnmodifiableList()); lockTasks.forEach(executorService::execute); Task> task = new WaitForTasksTask(lockTasks); - String vaultNames = vaults.stream().map(Vault::getDisplayableName).collect(Collectors.joining(", ")); + String vaultNames = vaults.stream().map(Vault::getDisplayName).collect(Collectors.joining(", ")); task.setOnSucceeded(evt -> LOG.info("Locked {}", vaultNames)); task.setOnFailed(evt -> LOG.error("Failed to lock vaults " + vaultNames, evt.getSource().getException())); return task; diff --git a/main/ui/src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordController.java b/main/ui/src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordController.java index ea1e0530e..008668126 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/forgetPassword/ForgetPasswordController.java @@ -41,7 +41,7 @@ public class ForgetPasswordController implements FxController { if (keychain.isPresent()) { try { keychain.get().deletePassphrase(vault.getId()); - LOG.debug("Forgot password for vault {}.", vault.getDisplayableName()); + LOG.debug("Forgot password for vault {}.", vault.getDisplayName()); confirmedResult.setValue(true); } catch (KeychainAccessException e) { LOG.error("Failed to remove entry from system keychain.", e); diff --git a/main/ui/src/main/java/org/cryptomator/ui/fxapp/FxApplication.java b/main/ui/src/main/java/org/cryptomator/ui/fxapp/FxApplication.java index 3172b6288..70f31e67b 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/fxapp/FxApplication.java +++ b/main/ui/src/main/java/org/cryptomator/ui/fxapp/FxApplication.java @@ -6,7 +6,6 @@ import javafx.application.Platform; import javafx.beans.binding.Bindings; import javafx.beans.binding.BooleanBinding; import javafx.beans.value.ObservableValue; -import javafx.collections.FXCollections; import javafx.collections.ObservableSet; import javafx.stage.Stage; import org.cryptomator.common.LicenseHolder; @@ -99,7 +98,7 @@ public class FxApplication extends Application { public void startUnlockWorkflow(Vault vault, Optional owner) { Platform.runLater(() -> { unlockWindowBuilderProvider.get().vault(vault).owner(owner).build().startUnlockWorkflow(); - LOG.debug("Showing UnlockWindow for {}", vault.getDisplayableName()); + LOG.debug("Showing UnlockWindow for {}", vault.getDisplayName()); }); } diff --git a/main/ui/src/main/java/org/cryptomator/ui/migration/MigrationRunController.java b/main/ui/src/main/java/org/cryptomator/ui/migration/MigrationRunController.java index 3123d4cb2..5233d979b 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/migration/MigrationRunController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/migration/MigrationRunController.java @@ -116,10 +116,10 @@ public class MigrationRunController implements FxController { return migrators.needsMigration(vault.getPath(), MASTERKEY_FILENAME); }).onSuccess(needsAnotherMigration -> { if (needsAnotherMigration) { - LOG.info("Migration of '{}' succeeded, but another migration is required.", vault.getDisplayableName()); + LOG.info("Migration of '{}' succeeded, but another migration is required.", vault.getDisplayName()); vault.setState(VaultState.NEEDS_MIGRATION); } else { - LOG.info("Migration of '{}' succeeded.", vault.getDisplayableName()); + LOG.info("Migration of '{}' succeeded.", vault.getDisplayName()); vault.setState(VaultState.LOCKED); passwordField.wipe(); window.setScene(successScene.get()); diff --git a/main/ui/src/main/java/org/cryptomator/ui/quit/QuitController.java b/main/ui/src/main/java/org/cryptomator/ui/quit/QuitController.java index 66dd13ade..7255115ea 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/quit/QuitController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/quit/QuitController.java @@ -53,7 +53,7 @@ public class QuitController implements FxController { Task> lockAllTask = vaultService.createLockAllTask(unlockedVaults, false); lockAllTask.setOnSucceeded(evt -> { - LOG.info("Locked {}", lockAllTask.getValue().stream().map(Vault::getDisplayableName).collect(Collectors.joining(", "))); + LOG.info("Locked {}", lockAllTask.getValue().stream().map(Vault::getDisplayName).collect(Collectors.joining(", "))); if (unlockedVaults.isEmpty()) { window.close(); response.performQuit(); diff --git a/main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyModule.java b/main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyModule.java index 48e81f3a5..9ad3d73ad 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/recoverykey/RecoveryKeyModule.java @@ -9,7 +9,6 @@ import javafx.beans.property.SimpleObjectProperty; 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.common.vaults.Vault; @@ -25,7 +24,6 @@ import org.cryptomator.ui.common.StageFactory; import javax.inject.Named; import javax.inject.Provider; -import java.util.List; import java.util.Map; import java.util.ResourceBundle; @@ -107,7 +105,7 @@ abstract class RecoveryKeyModule { @IntoMap @FxControllerKey(RecoveryKeyDisplayController.class) static FxController provideRecoveryKeyDisplayController(@RecoveryKeyWindow Stage window, @RecoveryKeyWindow Vault vault, @RecoveryKeyWindow StringProperty recoveryKey, ResourceBundle localization) { - return new RecoveryKeyDisplayController(window, vault.getDisplayableName(), recoveryKey.get(), localization); + return new RecoveryKeyDisplayController(window, vault.getDisplayName(), recoveryKey.get(), localization); } @Binds diff --git a/main/ui/src/main/java/org/cryptomator/ui/removevault/RemoveVaultController.java b/main/ui/src/main/java/org/cryptomator/ui/removevault/RemoveVaultController.java index e2d5ec024..836ed519f 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/removevault/RemoveVaultController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/removevault/RemoveVaultController.java @@ -34,7 +34,7 @@ public class RemoveVaultController implements FxController { @FXML public void finish() { vaults.remove(vault); - LOG.debug("Removing vault {}.", vault.getDisplayableName()); + LOG.debug("Removing vault {}.", vault.getDisplayName()); window.close(); } } diff --git a/main/ui/src/main/java/org/cryptomator/ui/traymenu/TrayMenuController.java b/main/ui/src/main/java/org/cryptomator/ui/traymenu/TrayMenuController.java index af12beebe..1610c6862 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/traymenu/TrayMenuController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/traymenu/TrayMenuController.java @@ -80,7 +80,7 @@ class TrayMenuController { } private Menu buildSubmenu(Vault vault) { - Menu submenu = new Menu(vault.getDisplayableName()); + Menu submenu = new Menu(vault.getDisplayName()); if (vault.isLocked()) { MenuItem unlockItem = new MenuItem(resourceBundle.getString("traymenu.vault.unlock")); diff --git a/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockController.java b/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockController.java index 7310a369c..537eba9a8 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockController.java @@ -77,7 +77,7 @@ public class UnlockController implements FxController { this.unlockButtonContentDisplay = Bindings.createObjectBinding(this::getUnlockButtonContentDisplay, passwordEntryLock.awaitingInteraction()); this.userInteractionDisabled = passwordEntryLock.awaitingInteraction().not(); this.unlockButtonDisabled = new SimpleBooleanProperty(); - this.vaultName = WeakBindings.bindString(vault.displayableNameProperty()); + this.vaultName = WeakBindings.bindString(vault.displayNameProperty()); this.window.setOnCloseRequest(windowEvent -> cancel()); } diff --git a/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockModule.java b/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockModule.java index e07583c84..bef612dc1 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockModule.java @@ -82,7 +82,7 @@ abstract class UnlockModule { @UnlockScoped static Stage provideStage(StageFactory factory, @UnlockWindow Vault vault, @Named("unlockWindowOwner") Optional owner) { Stage stage = factory.create(); - stage.setTitle(vault.getDisplayableName()); + stage.setTitle(vault.getDisplayName()); stage.setResizable(false); if (owner.isPresent()) { stage.initOwner(owner.get()); diff --git a/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockWorkflow.java b/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockWorkflow.java index 08b8adf71..e0a2a4f0b 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockWorkflow.java +++ b/main/ui/src/main/java/org/cryptomator/ui/unlock/UnlockWorkflow.java @@ -128,7 +128,7 @@ public class UnlockWorkflow extends Task { } private void handleSuccess() { - LOG.info("Unlock of '{}' succeeded.", vault.getDisplayableName()); + LOG.info("Unlock of '{}' succeeded.", vault.getDisplayName()); if (savePassword.get()) { savePasswordToSystemkeychain(); } 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 d0aa49281..f39af7e34 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 @@ -5,7 +5,6 @@ import dagger.Module; import dagger.Provides; import dagger.multibindings.IntoMap; import javafx.scene.Scene; -import javafx.scene.image.Image; import javafx.stage.Modality; import javafx.stage.Stage; import org.cryptomator.common.vaults.Vault; @@ -20,9 +19,7 @@ import org.cryptomator.ui.common.StageFactory; import org.cryptomator.ui.mainwindow.MainWindow; import org.cryptomator.ui.recoverykey.RecoveryKeyComponent; -import javax.inject.Named; import javax.inject.Provider; -import java.util.List; import java.util.Map; import java.util.ResourceBundle; @@ -41,7 +38,7 @@ abstract class VaultOptionsModule { @VaultOptionsScoped static Stage provideStage(StageFactory factory, @MainWindow Stage owner, @VaultOptionsWindow Vault vault) { Stage stage = factory.create(); - stage.setTitle(vault.getDisplayableName()); + stage.setTitle(vault.getDisplayName()); stage.setResizable(true); stage.setMinWidth(400); stage.setMinHeight(300); diff --git a/main/ui/src/main/resources/fxml/addvault_success.fxml b/main/ui/src/main/resources/fxml/addvault_success.fxml index 6bb4808c5..fd0309450 100644 --- a/main/ui/src/main/resources/fxml/addvault_success.fxml +++ b/main/ui/src/main/resources/fxml/addvault_success.fxml @@ -30,7 +30,7 @@ - + diff --git a/main/ui/src/main/resources/fxml/changepassword.fxml b/main/ui/src/main/resources/fxml/changepassword.fxml index 07fe7cbc4..18c1b9383 100644 --- a/main/ui/src/main/resources/fxml/changepassword.fxml +++ b/main/ui/src/main/resources/fxml/changepassword.fxml @@ -19,7 +19,7 @@ - + diff --git a/main/ui/src/main/resources/fxml/migration_run.fxml b/main/ui/src/main/resources/fxml/migration_run.fxml index 03be9a140..f70f27ce3 100644 --- a/main/ui/src/main/resources/fxml/migration_run.fxml +++ b/main/ui/src/main/resources/fxml/migration_run.fxml @@ -21,7 +21,7 @@ - + diff --git a/main/ui/src/main/resources/fxml/migration_start.fxml b/main/ui/src/main/resources/fxml/migration_start.fxml index c568ae9cb..c836a9393 100644 --- a/main/ui/src/main/resources/fxml/migration_start.fxml +++ b/main/ui/src/main/resources/fxml/migration_start.fxml @@ -28,7 +28,7 @@ - + diff --git a/main/ui/src/main/resources/fxml/migration_success.fxml b/main/ui/src/main/resources/fxml/migration_success.fxml index 59e997550..9fd081757 100644 --- a/main/ui/src/main/resources/fxml/migration_success.fxml +++ b/main/ui/src/main/resources/fxml/migration_success.fxml @@ -25,7 +25,7 @@ - + diff --git a/main/ui/src/main/resources/fxml/recoverykey_create.fxml b/main/ui/src/main/resources/fxml/recoverykey_create.fxml index c1c7299a1..73775237f 100644 --- a/main/ui/src/main/resources/fxml/recoverykey_create.fxml +++ b/main/ui/src/main/resources/fxml/recoverykey_create.fxml @@ -20,7 +20,7 @@ - + diff --git a/main/ui/src/main/resources/fxml/recoverykey_recover.fxml b/main/ui/src/main/resources/fxml/recoverykey_recover.fxml index c1c161a0d..c12a5e83e 100644 --- a/main/ui/src/main/resources/fxml/recoverykey_recover.fxml +++ b/main/ui/src/main/resources/fxml/recoverykey_recover.fxml @@ -21,7 +21,7 @@ - +