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
}
}
}
}