package com.example.demo;
import javafx.animation.*;
import javafx.event.ActionEvent;
import javafx.fxml.FXML;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.TextField;
import javafx.scene.layout.Pane;
import javafx.scene.layout.StackPane;
import javafx.scene.layout.VBox;
import javafx.scene.paint.Color;
import javafx.scene.shape.SVGPath;
import javafx.util.Duration;
public class HelloController {
@FXML private TextField display;
@FXML private VBox mainContainer;
private double firstNumber = 0;
private String operator = "";
private boolean start = true;
@FXML
protected void onDigitClick(ActionEvent event) {
if (start) {
display.setText("");
start = false;
}
String value = ((Button)event.getSource()).getText();
display.setText(display.getText() + value);
if (display.getText().equals("0092")) {
showLoveAnimation();
}
}
private void showLoveAnimation() {
StackPane overlay = new StackPane();
overlay.setStyle("-fx-background-color: rgba(44, 62, 80, 0.9); -fx-background-radius: 10;");
overlay.setPrefSize(mainContainer.getWidth(), mainContainer.getHeight());
SVGPath heart = new SVGPath();
heart.setContent("M12 21.35l-1.45-1.32C5.4 15.36 2 12.28 2 8.5 2 5.42 4.42 3 7.5 3c1.74 0 3.41.81 4.5 2.09C13.09 3.81 14.76 3 16.5 3 19.58 3 22 5.42 22 8.5c0 3.78-3.4 6.86-8.55 11.54L12 21.35z");
heart.setFill(Color.web("#e74c3c"));
heart.setScaleX(6);
heart.setScaleY(6);
Label label = new Label("Я люблю тебя, Юля!");
label.setStyle("-fx-text-fill: white; -fx-font-size: 22px; -fx-font-weight: bold;");
label.setTranslateY(100);
overlay.getChildren().addAll(heart, label);
((Pane) mainContainer.getScene().getRoot()).getChildren().add(overlay);
ScaleTransition pulse = new ScaleTransition(Duration.seconds(0.5), heart);
pulse.setByX(1.2); pulse.setByY(1.2); pulse.setCycleCount(8); pulse.setAutoReverse(true);
FadeTransition fadeOut = new FadeTransition(Duration.seconds(1), overlay);
fadeOut.setFromValue(1); fadeOut.setToValue(0); fadeOut.setDelay(Duration.seconds(4));
fadeOut.setOnFinished(e -> {
((Pane) mainContainer.getScene().getRoot()).getChildren().remove(overlay);
display.setText("");
});
pulse.play();
fadeOut.play();
}
@FXML
protected void onOperatorClick(ActionEvent event) {
operator = ((Button)event.getSource()).getText();
firstNumber = Double.parseDouble(display.getText());
start = true;
}
@FXML
protected void onClearClick() {
display.setText("");
start = true;
}
@FXML
protected void onResultClick() {
double secondNumber = Double.parseDouble(display.getText());
switch (operator) {
case "+": display.setText(String.valueOf(firstNumber + secondNumber)); break;
case "-": display.setText(String.valueOf(firstNumber - secondNumber)); break;
case "*": display.setText(String.valueOf(firstNumber * secondNumber)); break;
case "/": display.setText(String.valueOf(firstNumber / secondNumber)); break;
}
start = true;
}
}