package view; import java.util.HashMap; import java.util.Map; import javafx.animation.FadeTransition; import javafx.animation.Timeline; import javafx.animation.Transition; import javafx.application.Platform; import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.scene.control.Button; import javafx.scene.layout.GridPane; import javafx.util.Duration; import model.persistance.Settings; import model.persistance.User; import studportControl.Studierendenportal; import studportControl.Transcript; public class StudportBar extends GridPane { private final Button[] transcripts; private final Button openBarBtn; private final Button closeBarBtn; private boolean isTranscriptsVisible = true; private final Map<Button, Transition> activeTransitions; private final Dashboard dashboard; public StudportBar(Dashboard dashboard) { this.dashboard = dashboard; activeTransitions = new HashMap<Button, Transition>(); setHgap(10); transcripts = new Button[4]; transcripts[0] = new Button(Transcript.ALLE_LEISTUNGEN_DEUTSCH); transcripts[1] = new Button(Transcript.BESTANDEN_DEUTSCH); transcripts[2] = new Button(Transcript.ALLE_LEISTUNGEN_ENGLISCH); transcripts[3] = new Button(Transcript.BESTANDEN_ENGLISCH); closeBarBtn = new Button("X"); closeBarBtn.setId("loginButtonCancel"); closeBarBtn.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { toggleTranscriptsOpacity(); } }); openBarBtn = new Button("Notenauszug"); openBarBtn.setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { toggleTranscriptsOpacity(); } }); for (int i = 0; i < transcripts.length; i++) { add(transcripts[i], i + 1, 0); transcripts[i].setOnAction(new EventHandler<ActionEvent>() { @Override public void handle(ActionEvent event) { startDownload(event); } }); } toggleTranscriptsOpacity(); } private void startDownload(ActionEvent event) { User user = Settings.getInstance().getUser(); final String name = user.getName(); final String password = user.getPassword(); if (name == null || name.isEmpty() || password.isEmpty() || password == null) { Platform.runLater(new Runnable() { @Override public void run() { dashboard.fadeInLogin(); dashboard.setStatusText("Deine Benutzerdaten fehlen!", true); } }); return; } new Thread(new Studierendenportal(dashboard, name, password, (Button) event.getSource(), this)).start(); changeButtonstate((Button) event.getSource(), true); } private void toggleTranscriptsOpacity() { if (isTranscriptsVisible) { add(openBarBtn, 0, 0); isTranscriptsVisible = false; for (int i = 0; i < transcripts.length; i++) { transcripts[i].setOpacity(0.0); } getChildren().remove(closeBarBtn); } else { getChildren().remove(openBarBtn); isTranscriptsVisible = true; for (int i = 0; i < transcripts.length; i++) { transcripts[i].setOpacity(1.0); } add(closeBarBtn, 0, 0); } } public void changeButtonstate(Button button, boolean activate) { if (activate) { button.setStyle("-fx-background-color: linear-gradient(orange, orangered)"); button.setMouseTransparent(true); FadeTransition transition = new FadeTransition(Duration.millis(1000), button); activeTransitions.put(button, transition); transition.setFromValue(1.0); transition.setToValue(0.0); transition.setAutoReverse(true); transition.setCycleCount(Timeline.INDEFINITE); transition.play(); } else { final Transition transition = activeTransitions.get(button); transition.stop(); button.setMouseTransparent(false); button.setOpacity(1.0); button.setStyle(null); button.setId("button"); } } }