mirror of
https://github.com/cryptomator/cryptomator.git
synced 2026-04-23 11:06:56 -04:00
introduced NotificationBar control
This commit is contained in:
@@ -36,6 +36,7 @@ public enum FxmlFile {
|
||||
MIGRATION_RUN("/fxml/migration_run.fxml"), //
|
||||
MIGRATION_START("/fxml/migration_start.fxml"), //
|
||||
MIGRATION_SUCCESS("/fxml/migration_success.fxml"), //
|
||||
NOTIFICATION("/fxml/notification.fxml"),
|
||||
PREFERENCES("/fxml/preferences.fxml"), //
|
||||
QUIT("/fxml/quit.fxml"), //
|
||||
QUIT_FORCED("/fxml/quit_forced.fxml"), //
|
||||
|
||||
@@ -0,0 +1,96 @@
|
||||
package org.cryptomator.ui.controls;
|
||||
|
||||
import org.cryptomator.ui.common.FxmlFile;
|
||||
|
||||
import javafx.beans.property.BooleanProperty;
|
||||
import javafx.beans.property.SimpleBooleanProperty;
|
||||
import javafx.beans.property.SimpleStringProperty;
|
||||
import javafx.beans.property.StringProperty;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.fxml.FXMLLoader;
|
||||
import javafx.scene.control.Button;
|
||||
import javafx.scene.control.Label;
|
||||
import javafx.scene.layout.HBox;
|
||||
import java.io.IOException;
|
||||
|
||||
public class NotificationBar extends HBox {
|
||||
|
||||
@FXML
|
||||
private Label notificationLabel;
|
||||
|
||||
@FXML
|
||||
private Button closeButton;
|
||||
|
||||
private final StringProperty textProperty = new SimpleStringProperty();
|
||||
private final BooleanProperty dismissable = new SimpleBooleanProperty();
|
||||
private final BooleanProperty notify = new SimpleBooleanProperty();
|
||||
|
||||
|
||||
public NotificationBar() {
|
||||
loadFXML();
|
||||
closeButton.visibleProperty().bind(dismissable);
|
||||
notificationLabel.textProperty().bind(textProperty);
|
||||
|
||||
visibleProperty().bind(notifyProperty());
|
||||
managedProperty().bind(notifyProperty());
|
||||
|
||||
closeButton.setOnAction(_ -> {
|
||||
visibleProperty().unbind();
|
||||
managedProperty().unbind();
|
||||
visibleProperty().set(false);
|
||||
managedProperty().set(false);
|
||||
});
|
||||
}
|
||||
|
||||
private void loadFXML() {
|
||||
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource(FxmlFile.NOTIFICATION.getRessourcePathString()));
|
||||
fxmlLoader.setController(this);
|
||||
try {
|
||||
HBox content = fxmlLoader.load();
|
||||
this.getChildren().addAll(content.getChildren());
|
||||
} catch (IOException e) {
|
||||
throw new RuntimeException(e);
|
||||
}
|
||||
}
|
||||
|
||||
public String getText() {
|
||||
return textProperty.get();
|
||||
}
|
||||
|
||||
public void setText(String text) {
|
||||
textProperty.set(text);
|
||||
}
|
||||
|
||||
public StringProperty textProperty() {
|
||||
return textProperty;
|
||||
}
|
||||
|
||||
public void setStyleClass(String styleClass) {
|
||||
getStyleClass().add(styleClass);
|
||||
}
|
||||
|
||||
public boolean isDismissable() {
|
||||
return dismissable.get();
|
||||
}
|
||||
|
||||
public void setDismissable(boolean value) {
|
||||
dismissable.set(value);
|
||||
}
|
||||
|
||||
public BooleanProperty dismissableProperty() {
|
||||
return dismissable;
|
||||
}
|
||||
|
||||
public boolean getNotify() {
|
||||
return notify.get();
|
||||
}
|
||||
|
||||
public void setNotify(boolean value) {
|
||||
notify.set(value);
|
||||
}
|
||||
|
||||
public BooleanProperty notifyProperty() {
|
||||
return notify;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,5 +1,13 @@
|
||||
package org.cryptomator.ui.mainwindow;
|
||||
|
||||
import javafx.beans.Observable;
|
||||
import javafx.beans.binding.BooleanBinding;
|
||||
import javafx.beans.property.ObjectProperty;
|
||||
import javafx.beans.property.ReadOnlyBooleanProperty;
|
||||
import javafx.beans.property.ReadOnlyObjectProperty;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.layout.StackPane;
|
||||
import javafx.stage.Stage;
|
||||
import org.apache.commons.lang3.SystemUtils;
|
||||
import org.cryptomator.common.LicenseHolder;
|
||||
import org.cryptomator.common.settings.Settings;
|
||||
@@ -13,17 +21,6 @@ import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
import javax.inject.Inject;
|
||||
import javafx.beans.Observable;
|
||||
import javafx.beans.binding.Bindings;
|
||||
import javafx.beans.binding.BooleanBinding;
|
||||
import javafx.beans.property.BooleanProperty;
|
||||
import javafx.beans.property.ObjectProperty;
|
||||
import javafx.beans.property.ReadOnlyBooleanProperty;
|
||||
import javafx.beans.property.ReadOnlyObjectProperty;
|
||||
import javafx.beans.property.SimpleBooleanProperty;
|
||||
import javafx.fxml.FXML;
|
||||
import javafx.scene.layout.StackPane;
|
||||
import javafx.stage.Stage;
|
||||
|
||||
@MainWindowScoped
|
||||
public class MainWindowController implements FxController {
|
||||
@@ -37,12 +34,9 @@ public class MainWindowController implements FxController {
|
||||
private final UpdateChecker updateChecker;
|
||||
private final BooleanBinding updateAvailable;
|
||||
private final LicenseHolder licenseHolder;
|
||||
private final BooleanProperty hideSupportNotificationClicked = new SimpleBooleanProperty(false);
|
||||
private final BooleanProperty supportNotificationHidden = new SimpleBooleanProperty();
|
||||
private final BooleanProperty hideUpdateNotificationClicked = new SimpleBooleanProperty(false);
|
||||
private final BooleanProperty updateNotificationHidden = new SimpleBooleanProperty();
|
||||
|
||||
public StackPane root;
|
||||
@FXML
|
||||
private StackPane root;
|
||||
|
||||
@Inject
|
||||
public MainWindowController(@MainWindow Stage window, //
|
||||
@@ -80,16 +74,12 @@ public class MainWindowController implements FxController {
|
||||
window.heightProperty().addListener((_, _, _) -> savePositionalSettings());
|
||||
window.xProperty().addListener((_, _, _) -> savePositionalSettings());
|
||||
window.yProperty().addListener((_, _, _) -> savePositionalSettings());
|
||||
|
||||
supportNotificationHidden.bind(Bindings.createBooleanBinding(() -> !licenseHolder.isValidLicense() && !hideSupportNotificationClicked.get(), hideSupportNotificationClicked, licenseHolder.validLicenseProperty()));
|
||||
updateNotificationHidden.bind(Bindings.createBooleanBinding(() -> updateAvailable.get() && !hideUpdateNotificationClicked.get(), hideUpdateNotificationClicked, updateAvailable));
|
||||
}
|
||||
|
||||
private boolean neverTouched() {
|
||||
return (settings.windowHeight.get() == 0) && (settings.windowWidth.get() == 0) && (settings.windowXPosition.get() == 0) && (settings.windowYPosition.get() == 0);
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void savePositionalSettings() {
|
||||
settings.windowWidth.setValue(window.getWidth());
|
||||
settings.windowHeight.setValue(window.getHeight());
|
||||
@@ -119,25 +109,11 @@ public class MainWindowController implements FxController {
|
||||
appWindows.showPreferencesWindow(SelectedPreferencesTab.UPDATES);
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void hideSupportNotification() {
|
||||
this.hideSupportNotificationClicked.setValue(true);
|
||||
}
|
||||
|
||||
@FXML
|
||||
public void hideUpdateNotification() {
|
||||
this.hideUpdateNotificationClicked.setValue(true);
|
||||
}
|
||||
|
||||
public LicenseHolder getLicenseHolder() {
|
||||
return licenseHolder;
|
||||
}
|
||||
|
||||
public ReadOnlyBooleanProperty debugModeEnabledProperty() {
|
||||
return settings.debugMode;
|
||||
}
|
||||
|
||||
public boolean isDebugModeEnabled() {
|
||||
public boolean getDebugModeEnabled() {
|
||||
return debugModeEnabledProperty().get();
|
||||
}
|
||||
|
||||
@@ -145,40 +121,16 @@ public class MainWindowController implements FxController {
|
||||
return updateAvailable;
|
||||
}
|
||||
|
||||
public boolean isUpdateAvailable() {
|
||||
public boolean getUpdateAvailable() {
|
||||
return updateAvailable.get();
|
||||
}
|
||||
|
||||
public BooleanProperty hideSupportNotificationClickedProperty() {
|
||||
return hideSupportNotificationClicked;
|
||||
public BooleanBinding licenseValidProperty(){
|
||||
return licenseHolder.validLicenseProperty();
|
||||
}
|
||||
|
||||
public boolean isHideSupportNotificationClicked() {
|
||||
return hideSupportNotificationClicked.get();
|
||||
}
|
||||
|
||||
public BooleanProperty supportNotificationHiddenProperty() {
|
||||
return supportNotificationHidden;
|
||||
}
|
||||
|
||||
public boolean isSupportNotificationHidden() {
|
||||
return supportNotificationHidden.get();
|
||||
}
|
||||
|
||||
public BooleanProperty hideUpdateNotificationClickedProperty() {
|
||||
return hideUpdateNotificationClicked;
|
||||
}
|
||||
|
||||
public boolean isHideUpdateNotificationClicked() {
|
||||
return hideUpdateNotificationClicked.get();
|
||||
}
|
||||
|
||||
public BooleanProperty updateNotificationHiddenProperty() {
|
||||
return updateNotificationHidden;
|
||||
}
|
||||
|
||||
public boolean isUpdateNotificationHidden() {
|
||||
return updateNotificationHidden.get();
|
||||
public boolean getLicenseValid() {
|
||||
return licenseHolder.isValidLicense();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user