From d69b63acc301e86bd0530a0f8aa92c4a03fd2608 Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Wed, 11 Dec 2019 15:57:39 +0100 Subject: [PATCH] enabled "lock" from tray menu (#297) --- .../java/org/cryptomator/ui/fxapp/FxApplication.java | 9 ++++++++- .../org/cryptomator/ui/traymenu/TrayMenuController.java | 6 +++++- 2 files changed, 13 insertions(+), 2 deletions(-) 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 570c9cdf3..bae199170 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 @@ -16,6 +16,7 @@ import org.cryptomator.jni.JniException; import org.cryptomator.jni.MacApplicationUiAppearance; import org.cryptomator.jni.MacApplicationUiState; import org.cryptomator.jni.MacFunctions; +import org.cryptomator.ui.common.VaultService; import org.cryptomator.ui.mainwindow.MainWindowComponent; import org.cryptomator.ui.preferences.PreferencesComponent; import org.cryptomator.ui.preferences.SelectedPreferencesTab; @@ -39,17 +40,19 @@ public class FxApplication extends Application { private final UnlockComponent.Builder unlockWindowBuilder; private final QuitComponent.Builder quitWindowBuilder; private final Optional macFunctions; + private final VaultService vaultService; private final ObservableSet visibleStages = FXCollections.observableSet(); private final BooleanBinding hasVisibleStages = Bindings.isNotEmpty(visibleStages); @Inject - FxApplication(Settings settings, Lazy mainWindow, Lazy preferencesWindow, UnlockComponent.Builder unlockWindowBuilder, QuitComponent.Builder quitWindowBuilder, Optional macFunctions) { + FxApplication(Settings settings, Lazy mainWindow, Lazy preferencesWindow, UnlockComponent.Builder unlockWindowBuilder, QuitComponent.Builder quitWindowBuilder, Optional macFunctions, VaultService vaultService) { this.settings = settings; this.mainWindow = mainWindow; this.preferencesWindow = preferencesWindow; this.unlockWindowBuilder = unlockWindowBuilder; this.quitWindowBuilder = quitWindowBuilder; this.macFunctions = macFunctions; + this.vaultService = vaultService; } public void start() { @@ -112,6 +115,10 @@ public class FxApplication extends Application { }); } + public VaultService getVaultService() { + return vaultService; + } + private void themeChanged(@SuppressWarnings("unused") ObservableValue observable, @SuppressWarnings("unused") UiTheme oldValue, UiTheme newValue) { loadSelectedStyleSheet(newValue); } 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 d32b5ab5e..b911c697b 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 @@ -130,7 +130,7 @@ class TrayMenuController { submenu.add(unlockItem); } else if (vault.isUnlocked()) { MenuItem lockItem = new MenuItem(resourceBundle.getString("traymenu.vault.lock")); - lockItem.setEnabled(false); // TODO add action listener + lockItem.addActionListener(createActionListenerForVault(vault, this::lockVault)); submenu.add(lockItem); MenuItem revealItem = new MenuItem(resourceBundle.getString("traymenu.vault.reveal")); @@ -149,6 +149,10 @@ class TrayMenuController { fxApplicationStarter.get(true).thenAccept(app -> app.showUnlockWindow(vault)); } + private void lockVault(Vault vault) { + fxApplicationStarter.get(true).thenAccept(app -> app.getVaultService().lock(vault, false)); + } + void showMainWindow(@SuppressWarnings("unused") ActionEvent actionEvent) { fxApplicationStarter.get(true).thenAccept(app -> app.showMainWindow()); }