From c4dcbd8c44bc9c12f7d05b8596ec5cf9760235e4 Mon Sep 17 00:00:00 2001 From: Antoine James Tournepiche Date: Thu, 9 Nov 2023 23:42:22 +0100 Subject: [PATCH 1/4] Implement requested feature #3155 Toggle selected vault lock status on double click on a vault item in the vault list on the main window --- .../ui/mainwindow/VaultListController.java | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java b/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java index 8f0a91d58..d56410292 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java @@ -7,6 +7,7 @@ import org.cryptomator.cryptofs.CryptoFileSystemProvider; import org.cryptomator.cryptofs.DirStructure; import org.cryptomator.ui.addvaultwizard.AddVaultWizardComponent; import org.cryptomator.ui.common.FxController; +import org.cryptomator.ui.fxapp.FxApplicationWindows; import org.cryptomator.ui.removevault.RemoveVaultComponent; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -64,6 +65,7 @@ public class VaultListController implements FxController { private final VaultListManager vaultListManager; private final BooleanProperty draggingVaultOver = new SimpleBooleanProperty(); private final ResourceBundle resourceBundle; + private final FxApplicationWindows appWindows; public ListView vaultList; public StackPane root; @@ -79,7 +81,8 @@ public class VaultListController implements FxController { AddVaultWizardComponent.Builder addVaultWizard, // RemoveVaultComponent.Builder removeVaultDialogue, // VaultListManager vaultListManager, // - ResourceBundle resourceBundle) { + ResourceBundle resourceBundle, // + FxApplicationWindows appWindows) { this.mainWindow = mainWindow; this.vaults = vaults; this.selectedVault = selectedVault; @@ -88,6 +91,7 @@ public class VaultListController implements FxController { this.removeVaultDialogue = removeVaultDialogue; this.vaultListManager = vaultListManager; this.resourceBundle = resourceBundle; + this.appWindows = appWindows; this.emptyVaultList = Bindings.isEmpty(vaults); @@ -108,6 +112,18 @@ public class VaultListController implements FxController { }); vaultList.addEventFilter(MouseEvent.MOUSE_RELEASED, this::deselect); + //toggle selected vault lock status on double click + vaultList.addEventFilter(MouseEvent.MOUSE_CLICKED, click -> { + if (click.getClickCount() >= 2 && selectedVault.get() != null) { + if (selectedVault.get().isLocked()) { + appWindows.startUnlockWorkflow(selectedVault.get(), mainWindow); + } + if (selectedVault.get().isUnlocked()) { + appWindows.startLockWorkflow(selectedVault.get(), mainWindow); + } + } + }); + //don't show context menu when no vault selected vaultList.addEventFilter(ContextMenuEvent.CONTEXT_MENU_REQUESTED, request -> { if (selectedVault.get() == null) { From 0aaa3263cf213d8ab1c1492f8a3f2a7f6e8defe1 Mon Sep 17 00:00:00 2001 From: Antoine James Tournepiche Date: Thu, 9 Nov 2023 23:50:34 +0100 Subject: [PATCH 2/4] Improve feature #3155 implementation --- .../ui/mainwindow/VaultListController.java | 19 ++++++++++++------- 1 file changed, 12 insertions(+), 7 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java b/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java index d56410292..df4f10d92 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java @@ -38,6 +38,7 @@ import java.io.File; import java.io.IOException; import java.nio.file.Path; import java.util.EnumSet; +import java.util.Optional; import java.util.ResourceBundle; import java.util.Set; import java.util.stream.Collectors; @@ -114,13 +115,8 @@ public class VaultListController implements FxController { //toggle selected vault lock status on double click vaultList.addEventFilter(MouseEvent.MOUSE_CLICKED, click -> { - if (click.getClickCount() >= 2 && selectedVault.get() != null) { - if (selectedVault.get().isLocked()) { - appWindows.startUnlockWorkflow(selectedVault.get(), mainWindow); - } - if (selectedVault.get().isUnlocked()) { - appWindows.startLockWorkflow(selectedVault.get(), mainWindow); - } + if (click.getClickCount() >= 2) { + Optional.ofNullable(selectedVault.get()).ifPresent(this::toggleVaultLockStatus); } }); @@ -177,6 +173,15 @@ public class VaultListController implements FxController { } } + private void toggleVaultLockStatus(Vault selectedVault) { + if (selectedVault.isLocked()) { + appWindows.startUnlockWorkflow(selectedVault, mainWindow); + } + if (selectedVault.isUnlocked()) { + appWindows.startLockWorkflow(selectedVault, mainWindow); + } + } + private void selectedVaultDidChange(@SuppressWarnings("unused") ObservableValue observableValue, @SuppressWarnings("unused") Vault oldValue, Vault newValue) { if (newValue == null) { return; From 3dce175f941e1fa9177c5e9776bb8d563d8452d4 Mon Sep 17 00:00:00 2001 From: Antoine James Tournepiche Date: Fri, 10 Nov 2023 17:42:19 +0100 Subject: [PATCH 3/4] Improve naming, avoid shadowing --- .../cryptomator/ui/mainwindow/VaultListController.java | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java b/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java index df4f10d92..500947edb 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java @@ -173,12 +173,12 @@ public class VaultListController implements FxController { } } - private void toggleVaultLockStatus(Vault selectedVault) { - if (selectedVault.isLocked()) { - appWindows.startUnlockWorkflow(selectedVault, mainWindow); + private void toggleVaultLockStatus(Vault vault) { + if (vault.isLocked()) { + appWindows.startUnlockWorkflow(vault, mainWindow); } - if (selectedVault.isUnlocked()) { - appWindows.startLockWorkflow(selectedVault, mainWindow); + if (vault.isUnlocked()) { + appWindows.startLockWorkflow(vault, mainWindow); } } From fd84ff09e1991675907c5e883a4bc06eeed977ec Mon Sep 17 00:00:00 2001 From: Antoine James Tournepiche Date: Fri, 10 Nov 2023 22:05:58 +0100 Subject: [PATCH 4/4] No longer lock vault on double click See https://github.com/cryptomator/cryptomator/pull/3194#issuecomment-1806106843 --- .../ui/mainwindow/VaultListController.java | 15 ++++----------- 1 file changed, 4 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java b/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java index 500947edb..644f361cb 100644 --- a/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java +++ b/src/main/java/org/cryptomator/ui/mainwindow/VaultListController.java @@ -113,10 +113,12 @@ public class VaultListController implements FxController { }); vaultList.addEventFilter(MouseEvent.MOUSE_RELEASED, this::deselect); - //toggle selected vault lock status on double click + //unlock vault on double click vaultList.addEventFilter(MouseEvent.MOUSE_CLICKED, click -> { if (click.getClickCount() >= 2) { - Optional.ofNullable(selectedVault.get()).ifPresent(this::toggleVaultLockStatus); + Optional.ofNullable(selectedVault.get()) + .filter(Vault::isLocked) + .ifPresent(vault -> appWindows.startUnlockWorkflow(vault, mainWindow)); } }); @@ -173,15 +175,6 @@ public class VaultListController implements FxController { } } - private void toggleVaultLockStatus(Vault vault) { - if (vault.isLocked()) { - appWindows.startUnlockWorkflow(vault, mainWindow); - } - if (vault.isUnlocked()) { - appWindows.startLockWorkflow(vault, mainWindow); - } - } - private void selectedVaultDidChange(@SuppressWarnings("unused") ObservableValue observableValue, @SuppressWarnings("unused") Vault oldValue, Vault newValue) { if (newValue == null) { return;