org.pcsoft.framework.jfex.controls.util.FXWindowUtils Maven / Gradle / Ivy
The newest version!
package org.pcsoft.framework.jfex.controls.util;
import javafx.beans.value.ChangeListener;
import javafx.event.EventHandler;
import javafx.scene.Node;
import javafx.scene.image.Image;
import javafx.stage.Stage;
import javafx.stage.Window;
import javafx.stage.WindowEvent;
import java.util.function.Consumer;
public final class FXWindowUtils extends FXUtils {
public static void handleOnShownWindow(final Node node, final EventHandler handler) {
handleOnWindow(node, w -> w.setOnShown(null), w -> w.setOnShown(handler));
}
public static void handleOnCloseWindow(final Node node, final EventHandler handler) {
handleOnWindow(node, w -> w.setOnCloseRequest(null), w -> w.setOnCloseRequest(handler));
}
public static void setWindowIcons(final Node node, final Image... icons) {
handleOnWindow(node, w -> ((Stage)w).getIcons().clear(), w -> ((Stage)w).getIcons().setAll(icons));
}
private static void handleOnWindow(final Node node, final Consumer cleanupConsumer, final Consumer setupConsumer) {
ChangeListener changeListener = (v, o, n) -> {
if (o != null) {
cleanupConsumer.accept(o);
}
if (n == null)
return;
setupConsumer.accept(n);
};
node.sceneProperty().addListener((v, o, n) -> {
if (o != null) {
o.windowProperty().removeListener(changeListener);
}
if (n != null) {
n.windowProperty().addListener(changeListener);
changeListener.changed(n.windowProperty(), n.getWindow(), n.getWindow());
}
});
}
private FXWindowUtils() {
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy