removed FXML loader, elements created programmatically in NotificationBar

This commit is contained in:
Jan-Peter Klein 2024-09-24 16:05:31 +02:00
parent c5cfe4d1b3
commit 1e280f2c97
No known key found for this signature in database
GPG Key ID: 90EDA3A7C822FD0E
3 changed files with 39 additions and 36 deletions

View File

@ -37,7 +37,6 @@ 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"), //

View File

@ -6,9 +6,12 @@ import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.geometry.Pos;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.layout.HBox;
import javafx.scene.layout.Region;
import javafx.scene.layout.VBox;
import java.io.IOException;
public class NotificationBar extends HBox {
@ -24,11 +27,31 @@ public class NotificationBar extends HBox {
public NotificationBar() {
loadFXML();
closeButton.visibleProperty().bind(dismissable);
setAlignment(Pos.CENTER);
setStyle("-fx-alignment: center;");
visibleProperty().bind(notifyProperty());
managedProperty().bind(notifyProperty());
Region spacer = new Region();
spacer.setMinWidth(40);
Region leftRegion = new Region();
HBox.setHgrow(leftRegion, javafx.scene.layout.Priority.ALWAYS);
Region rightRegion = new Region();
HBox.setHgrow(rightRegion, javafx.scene.layout.Priority.ALWAYS);
VBox vbox = new VBox();
vbox.setAlignment(Pos.CENTER);
HBox.setHgrow(vbox, javafx.scene.layout.Priority.ALWAYS);
notificationLabel = new Label();
notificationLabel.getStyleClass().add("notification-label");
notificationLabel.setStyle("-fx-alignment: center;");
vbox.getChildren().add(notificationLabel);
closeButton = new Button("X");
closeButton.setMinWidth(40);
closeButton.setStyle("-fx-background-color: transparent; -fx-text-fill: white; -fx-font-weight: bold;");
closeButton.visibleProperty().bind(dismissable);
closeButton.setOnAction(_ -> {
visibleProperty().unbind();
@ -36,17 +59,19 @@ public class NotificationBar extends HBox {
visibleProperty().set(false);
managedProperty().set(false);
});
}
closeButton.visibleProperty().bind(dismissable);
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);
}
closeButton.setOnAction(_ -> {
visibleProperty().unbind();
managedProperty().unbind();
visibleProperty().set(false);
managedProperty().set(false);
});
getChildren().addAll(spacer, leftRegion, vbox, rightRegion, closeButton);
visibleProperty().bind(notifyProperty());
managedProperty().bind(notifyProperty());
}
public String getText() {

View File

@ -1,21 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<?import javafx.scene.layout.HBox?>
<?import javafx.scene.layout.Region?>
<?import javafx.scene.control.Label?>
<?import javafx.scene.control.Button?>
<?import javafx.scene.layout.VBox?>
<HBox xmlns:fx="http://javafx.com/fxml"
xmlns="http://javafx.com/javafx"
alignment="CENTER"
style="-fx-alignment: center;">
<Region minWidth="40"/>
<Region HBox.hgrow="ALWAYS"/>
<VBox alignment="CENTER" HBox.hgrow="ALWAYS">
<Label fx:id="notificationLabel" styleClass="notification-label" style="-fx-alignment: center;"/>
</VBox>
<Region HBox.hgrow="ALWAYS"/>
<Button fx:id="closeButton" minWidth="40" text="X" style="-fx-background-color: transparent; -fx-text-fill: white; -fx-font-weight: bold;"/>
</HBox>