jfxtras.styles.jmetro.FlatAlert Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of jmetro Show documentation
Show all versions of jmetro Show documentation
A theme / look and feel for JavaFX inspired (but not a copy) by Microsoft's Fluent Design
package jfxtras.styles.jmetro;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty;
import javafx.collections.ListChangeListener;
import javafx.scene.control.Alert;
import javafx.scene.control.ButtonType;
import javafx.scene.image.Image;
import javafx.stage.Stage;
import static jfxtras.styles.jmetro.FlatDialog.initDialog;
import static jfxtras.styles.jmetro.FlatDialog.initDialogIcon;
/**
* An Alert with a flat style.
* For example, by default it will appear without a window icon (can be configured via iconless property) and without
* a window title.
*/
public class FlatAlert extends Alert {
private BooleanProperty iconless = new SimpleBooleanProperty(true);
private boolean isResettingIcon;
public FlatAlert(AlertType alertType) {
super(alertType);
init();
}
public FlatAlert(AlertType alertType, String contentText, ButtonType... buttons) {
super(alertType, contentText, buttons);
init();
}
private void init() {
initDialog(this, isIconless());
setupDialogIconsListener();
}
private void setupDialogIconsListener() {
Stage stage = (Stage) getDialogPane().getScene().getWindow();
stage.getIcons().addListener(this::dialogIconsChanged);
}
private void dialogIconsChanged(ListChangeListener.Change extends Image> c) {
// When initOwner is called on the Dialog the icon is changed and this event is fired
if (isResettingIcon) {
return;
}
// When there is an initOwner call the Dialog icon gets reset, we need to reapply the JMetro icon
isResettingIcon = true;
initDialogIcon(this, isIconless());
isResettingIcon = false;
}
// --- iconless
public boolean isIconless() { return iconless.get(); }
public BooleanProperty iconlessProperty() { return iconless; }
public void setIconless(boolean iconless) { this.iconless.set(iconless); }
}
© 2015 - 2024 Weber Informatics LLC | Privacy Policy