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 c20538e5d..9ffcdbc6c 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 @@ -101,7 +101,7 @@ public class DokanyVolume implements Volume { } @Override - public Optional getMountPointSafe() { + public Optional getMountPoint() { return Optional.ofNullable(mountPoint); } diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/FuseVolume.java b/main/commons/src/main/java/org/cryptomator/common/vaults/FuseVolume.java index 05663d519..c73459e6b 100644 --- a/main/commons/src/main/java/org/cryptomator/common/vaults/FuseVolume.java +++ b/main/commons/src/main/java/org/cryptomator/common/vaults/FuseVolume.java @@ -166,7 +166,7 @@ public class FuseVolume implements Volume { } @Override - public Optional getMountPointSafe() { + public Optional getMountPoint() { return Optional.ofNullable(mountPoint); } 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 8228bd59e..58581ce07 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 @@ -13,6 +13,7 @@ import javafx.beans.Observable; import javafx.beans.binding.Binding; import javafx.beans.binding.Bindings; import javafx.beans.binding.BooleanBinding; +import javafx.beans.binding.ObjectBinding; import javafx.beans.binding.StringBinding; import javafx.beans.property.ObjectProperty; import javafx.beans.property.SimpleObjectProperty; @@ -59,12 +60,12 @@ public class Vault { private final AtomicReference cryptoFileSystem; private final ObjectProperty state; private final VaultStats stats; - private final ObjectProperty accessPoint = new SimpleObjectProperty<>(Path.of("")); private final StringBinding displayableName; private final StringBinding displayablePath; private final BooleanBinding locked; private final BooleanBinding processing; private final BooleanBinding unlocked; + private final ObjectBinding accessPoint; private Volume volume; @@ -81,7 +82,7 @@ public class Vault { this.locked = Bindings.createBooleanBinding(this::isLocked, state); this.processing = Bindings.createBooleanBinding(this::isProcessing, state); this.unlocked = Bindings.createBooleanBinding(this::isUnlocked, state); - this.state.addListener(this::setAccessPoint); + this.accessPoint = Bindings.createObjectBinding(this::getAccessPoint, state); } // ****************************************************************************** @@ -220,19 +221,16 @@ public class Vault { return p.getFileName().toString(); } - public ObjectProperty accessPointProperty() { + public ObjectBinding accessPointProperty() { return accessPoint; } public Path getAccessPoint() { - return accessPoint.get(); - } - - private void setAccessPoint(Observable obs) { - if (this.getState() == VaultState.UNLOCKED) { - accessPoint.setValue(volume.getMountPointSafe().get()); + if (state.get() == VaultState.UNLOCKED) { + assert volume != null; + return volume.getMountPoint().orElse(Path.of("")); } else { - accessPoint.setValue(Path.of("")); + return Path.of(""); } } diff --git a/main/commons/src/main/java/org/cryptomator/common/vaults/Volume.java b/main/commons/src/main/java/org/cryptomator/common/vaults/Volume.java index 21515a8f0..05efa5ef9 100644 --- a/main/commons/src/main/java/org/cryptomator/common/vaults/Volume.java +++ b/main/commons/src/main/java/org/cryptomator/common/vaults/Volume.java @@ -30,7 +30,7 @@ public interface Volume { void unmount() throws VolumeException; - Optional getMountPointSafe(); + Optional getMountPoint(); // optional forced unmounting: 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 6ff43a6b6..a12236230 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 @@ -97,7 +97,7 @@ public class WebDavVolume implements Volume { } @Override - public Optional getMountPointSafe() { + public Optional getMountPoint() { return Optional.ofNullable(mountPoint); }