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

This commit is contained in:
Martin Beyer
2020-08-11 17:32:39 +02:00
parent 00dd67e345
commit 65de6fef9b
3 changed files with 21 additions and 1 deletions

View File

@@ -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
// *******************************************************************************/

View File

@@ -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 */

View File

@@ -53,6 +53,7 @@ abstract class VaultStatisticsModule {
}
}
});
stage.setOnCloseRequest(windowEvent -> vault.showingStatsProperty().setValue(false));
return stage;
}