Browse Source

Allowing only one io-stats window per vault to be open at the same time.

Martin Beyer 5 years ago
parent
commit
65de6fef9b

+ 13 - 0
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
 	// *******************************************************************************/

+ 7 - 1
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 */

+ 1 - 0
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;
 	}