From 7453431bcd7d3456f91a0f38908ade293fc4b514 Mon Sep 17 00:00:00 2001 From: Sebastian Stenzel Date: Tue, 6 Aug 2019 13:09:42 +0200 Subject: [PATCH] Trigger list change events when a vault changes its state, thus removing need for additional state listeners --- .../java/org/cryptomator/common/CommonsModule.java | 7 +++++-- .../cryptomator/ui/traymenu/TrayMenuController.java | 11 +++-------- 2 files changed, 8 insertions(+), 10 deletions(-) diff --git a/main/commons/src/main/java/org/cryptomator/common/CommonsModule.java b/main/commons/src/main/java/org/cryptomator/common/CommonsModule.java index 2c2235802..f9b3509d5 100644 --- a/main/commons/src/main/java/org/cryptomator/common/CommonsModule.java +++ b/main/commons/src/main/java/org/cryptomator/common/CommonsModule.java @@ -10,6 +10,7 @@ import dagger.Module; import dagger.Provides; import javafx.beans.binding.Binding; import javafx.beans.binding.Bindings; +import javafx.collections.FXCollections; import javafx.collections.ObservableList; import org.apache.commons.lang3.SystemUtils; import org.cryptomator.common.settings.Settings; @@ -48,9 +49,11 @@ public abstract class CommonsModule { return settingsProvider.get(); } - @Binds + @Provides @Singleton - abstract ObservableList bindVaultList(VaultList vaultList); + static ObservableList provideVaultList(VaultList vaultList) { + return FXCollections.observableList(vaultList, Vault::observables); + } @Provides @Singleton 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 1c7aaa7d9..8bfbdf1df 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 @@ -85,14 +85,7 @@ class TrayMenuController { private Menu buildSubmenu(Vault vault) { Menu submenu = new Menu(vault.getDisplayableName()); - vault.stateProperty().addListener(observable -> rebuildSubmenu(submenu, vault)); - rebuildSubmenu(submenu, vault); - return submenu; - } - - private void rebuildSubmenu(Menu submenu, Vault vault) { - submenu.removeAll(); - + // TODO add action listeners if (vault.isLocked()) { MenuItem unlockItem = new MenuItem("TODO unlock"); @@ -105,6 +98,8 @@ class TrayMenuController { MenuItem revealItem = new MenuItem("TODO reveal"); submenu.add(revealItem); } + + return submenu; } private ActionListener createActionListenerForVault(Vault vault, Consumer consumer) {