package view;
import javafx.animation.Interpolator;
import javafx.animation.ParallelTransition;
import javafx.animation.TranslateTransition;
import javafx.event.ActionEvent;
import javafx.event.EventHandler;
import javafx.scene.layout.GridPane;
import javafx.util.Duration;
public class LoginFader implements EventHandler<ActionEvent> {
private final double c;
private final GridPane login;
private final ParallelTransition p;
private final Dashboard dashboard;
public LoginFader(Dashboard dashboard, double c, GridPane login) {
this.dashboard = dashboard;
this.c = c;
this.login = login;
p = new ParallelTransition();
}
public ParallelTransition getT() {
return p;
}
@Override
public void handle(ActionEvent event) {
if (c < 0) {
fadeOut();
} else {
fadeIn();
}
}
private void fade(double c, GridPane login) {
TranslateTransition t1 = new TranslateTransition(Duration.millis(500), dashboard.getActionBar());
t1.setByX(c);
TranslateTransition t2 = new TranslateTransition(Duration.millis(500), login);
t2.setByX(c);
t2.setFromX(login.getLayoutX() - c);
t2.setToX(login.getLayoutX());
p.getChildren().addAll(t1, t2);
p.setInterpolator(new Interpolator() {
@Override
protected double curve(double t) {
return Math.pow(t, 2);
}
});
p.play();
if (login.getOpacity() == 0) {
login.setOpacity(1);
} else {
login.setOpacity(0);
}
}
public void fadeIn() {
dashboard.setMenuTransparent(true);
fade(500, login);
}
public void fadeOut() {
dashboard.setMenuTransparent(false);
fade(-500, login);
}
}