package com.alexhulbert.icewind.gui; import java.util.ArrayList; import java.util.List; import javafx.animation.FadeTransition; import javafx.beans.binding.Bindings; import javafx.beans.binding.DoubleBinding; import javafx.collections.ObservableList; import javafx.scene.Node; import javafx.scene.control.Labeled; import javafx.scene.layout.Pane; import javafx.util.Duration; public class Utils { public static void fadeOut(Node host, double duration) { FadeTransition ft = new FadeTransition(Duration.millis(duration), host); ft.setFromValue(1.0); ft.setToValue(0.0); ft.play(); } public static void fadeIn(Node host, double duration) { FadeTransition ft = new FadeTransition(Duration.millis(duration), host); ft.setFromValue(0.0); ft.setToValue(1.0); ft.play(); } private static List<Node> recurse(List<Node> children) { List<Node> output = new ArrayList<Node>(); for (Node obj : children) { if (obj instanceof Pane) { output.addAll(recurse(((Pane)obj).getChildren())); } else { output.add(obj); } } return output; } public static void fitFont(ObservableList<Node> children, Pane pane) { for (Node obj : recurse(children)) { if (obj instanceof Labeled && !obj.getStyleClass().contains("noresize")){ Labeled element = (Labeled) obj; double s = element.getFont().getSize(); DoubleBinding fontSize = pane.widthProperty().multiply(0.75).add(pane.heightProperty()).divide(1200).multiply(s); obj.styleProperty().bind(Bindings.concat("-fx-font-size: ").concat(fontSize.asString()).concat(";")); } else { //:I } } } }