Trigger list change events when a vault changes its state, thus removing need for additional state listeners

This commit is contained in:
Sebastian Stenzel
2019-08-06 13:09:42 +02:00
parent 2f953061b3
commit 7453431bcd
2 changed files with 8 additions and 10 deletions

View File

@@ -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<Vault> bindVaultList(VaultList vaultList);
static ObservableList<Vault> provideVaultList(VaultList vaultList) {
return FXCollections.observableList(vaultList, Vault::observables);
}
@Provides
@Singleton

View File

@@ -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<Vault> consumer) {