From 65de6fef9b3083dafc3cf5dc7f4967a3b4f07a22 Mon Sep 17 00:00:00 2001 From: Martin Beyer Date: Tue, 11 Aug 2020 17:32:39 +0200 Subject: [PATCH] Allowing only one io-stats window per vault to be open at the same time. --- .../java/org/cryptomator/common/vaults/Vault.java | 13 +++++++++++++ .../mainwindow/VaultDetailUnlockedController.java | 8 +++++++- .../cryptomator/ui/stats/VaultStatisticsModule.java | 1 + 3 files changed, 21 insertions(+), 1 deletion(-) 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 bc461c1d9..4a8d1e565 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,7 +13,9 @@ import javafx.beans.Observable; import javafx.beans.binding.Bindings; import javafx.beans.binding.BooleanBinding; import javafx.beans.binding.StringBinding; +import javafx.beans.property.BooleanProperty; import javafx.beans.property.ObjectProperty; +import javafx.beans.property.SimpleBooleanProperty; import org.apache.commons.lang3.SystemUtils; import org.cryptomator.common.LazyInitializer; import org.cryptomator.common.settings.VaultSettings; @@ -66,6 +68,7 @@ public class Vault { private final BooleanBinding unknownError; private final StringBinding accessPoint; private final BooleanBinding accessPointPresent; + private final BooleanProperty showingStats; private volatile Volume volume; @@ -88,6 +91,7 @@ public class Vault { this.unknownError = Bindings.createBooleanBinding(this::isUnknownError, state); this.accessPoint = Bindings.createStringBinding(this::getAccessPoint, state); this.accessPointPresent = this.accessPoint.isNotEmpty(); + this.showingStats = new SimpleBooleanProperty(false); } // ****************************************************************************** @@ -270,6 +274,15 @@ public class Vault { } } + public BooleanProperty showingStatsProperty() { + return showingStats; + } + + public boolean isShowingStats() { + return accessPointPresent.get(); + } + + // ****************************************************************************** // Getter/Setter // *******************************************************************************/ diff --git a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailUnlockedController.java b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailUnlockedController.java index 7f64cf7e5..93525a8b4 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailUnlockedController.java +++ b/main/ui/src/main/java/org/cryptomator/ui/mainwindow/VaultDetailUnlockedController.java @@ -1,5 +1,6 @@ package org.cryptomator.ui.mainwindow; +import javafx.beans.property.BooleanProperty; import javafx.beans.property.ObjectProperty; import javafx.beans.property.ReadOnlyObjectProperty; import javafx.fxml.FXML; @@ -37,7 +38,12 @@ public class VaultDetailUnlockedController implements FxController { @FXML public void showVaultStatistics() { - vaultStatisticsWindow.vault(vault.get()).build().showVaultStatisticsWindow(); + //vaultStatisticsWindow.build() + BooleanProperty showingStats = vault.get().showingStatsProperty(); + if (!showingStats.get()) { + vaultStatisticsWindow.vault(vault.get()).build().showVaultStatisticsWindow(); + showingStats.setValue(true); + } } /* Getter/Setter */ diff --git a/main/ui/src/main/java/org/cryptomator/ui/stats/VaultStatisticsModule.java b/main/ui/src/main/java/org/cryptomator/ui/stats/VaultStatisticsModule.java index 1d3b1eeab..e3319a66a 100644 --- a/main/ui/src/main/java/org/cryptomator/ui/stats/VaultStatisticsModule.java +++ b/main/ui/src/main/java/org/cryptomator/ui/stats/VaultStatisticsModule.java @@ -53,6 +53,7 @@ abstract class VaultStatisticsModule { } } }); + stage.setOnCloseRequest(windowEvent -> vault.showingStatsProperty().setValue(false)); return stage; }