package at.fos.ermodel.gui;

import javafx.geometry.Insets;
import javafx.scene.Scene;
import javafx.scene.control.Label;
import javafx.scene.control.TextArea;
import javafx.scene.input.KeyCode;
import javafx.scene.input.KeyCodeCombination;
import javafx.scene.input.KeyCombination;
import javafx.scene.layout.GridPane;
import javafx.stage.Modality;
import javafx.stage.Stage;
import javafx.stage.StageStyle;


public class A7
        extends Stage {
    final KeyCombination keyCombinationALT_ENTER = new KeyCodeCombination(KeyCode.ENTER, KeyCombination.ALT_DOWN);
    private final A7 thisActionMessageDialog;
    private final TextArea textTA;
    private final String holdName;
    private boolean doNothing;


    public A7(final A3 canvas, double xPos, double yPos, String name) {

        String title = "Enter Name";


        this.holdName = name;

        this.doNothing = false;

        this.thisActionMessageDialog = this;
        setTitle(title);
        initModality(Modality.APPLICATION_MODAL);


        this.textTA = new TextArea(name);
        this.textTA.setPrefWidth(350.0D);
        this.textTA.setPrefHeight(100.0D);
        this.textTA.setOnMouseEntered(event -> T3.fdssdf4354(A7.this.textTA, C2.MouseSelectedColor));
        this.textTA.setOnMouseExited(event -> A7.this.textTA.setEffect(null));
        this.textTA.setOnKeyPressed(event -> {
            if (A7.this.keyCombinationALT_ENTER.match(event)) {
                A7.this.textTA.appendText("\n");
                event.consume();
                return;
            }
            switch (event.getCode()) {
                case ENTER -> {
                    event.consume();
                    A7.this.setDataAndLeave();
                    if (!canvas.getTabWithCanvas().getText().contains("*"))
                        canvas.getTabWithCanvas().setText(canvas.getTabWithCanvas().getText() + "*");
                }
                case ESCAPE -> A7.this.setNothingAndLeave();
            }


        });
        GridPane fPane = new GridPane();
        fPane.setPadding(new Insets(10.0D, 10.0D, 10.0D, 10.0D));

        fPane.setHgap(4.0D);

        fPane.add(new Label("ESC->Cancel, Alt-Enter->Linefeed"), 0, 0, 2, 1);
        fPane.add(this.textTA, 0, 1);


        initStyle(StageStyle.UNDECORATED);
        Scene scene = new Scene(fPane, 370.0D, 150.0D);

        setScene(scene);

        setX(xPos);
        setY(yPos);
        if (yPos + scene.getHeight() > canvas.getView().getHeight() - 5.0D) {
            setY(yPos - scene.getHeight() - 20.0D);
        }
        if (xPos + scene.getWidth() > canvas.getView().getWidth() - 5.0D) {
            setX(xPos - scene.getWidth() - 20.0D);
        }

        this.textTA.requestFocus();


        sizeToScene();
        showAndWait();
    }


    private void setDataAndLeave() {
        if (this.textTA.getText() == null || this.textTA.getText().length() == 0) {
            this.textTA.setText("");


            return;
        }

        this.thisActionMessageDialog.close();
    }


    private void setNothingAndLeave() {
        this.textTA.setText(this.holdName);
        this.doNothing = true;
        this.thisActionMessageDialog.close();
    }


    public TextArea getTextTA() {
        return this.textTA;
    }


    public boolean isDoNothing() {
        return this.doNothing;
    }
}


