package space.m0e.quga.oop.lab56maven.dialogs; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.fxml.Initializable; import javafx.geometry.Point2D; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.control.*; import javafx.scene.control.Button; import javafx.scene.control.TextField; import javafx.stage.Modality; import javafx.stage.Stage; import space.m0e.quga.oop.lab56maven.Main; import space.m0e.quga.oop.lab56maven.entities.common.Ability; import space.m0e.quga.oop.lab56maven.entities.micro.Dwarf; import space.m0e.quga.oop.lab56maven.entities.micro.Immigrant; import space.m0e.quga.oop.lab56maven.entities.micro.Nobel; import java.awt.*; import java.io.IOException; import java.net.URL; import java.util.*; import static space.m0e.quga.oop.lab56maven.entities.common.Utils.sendErrorAlert; public class InsertDialog implements Initializable { public static Stage window = null; public static Scene scene; public TextField firstName; public TextField lastName; public TextField age; public TextField x; public TextField y; public ChoiceBox ability; public CheckBox generateItems; public Button submitButton; public ChoiceBox classSelection; public static void display() throws IOException { Parent root = FXMLLoader.load(Objects.requireNonNull(InsertDialog.class.getResource("insert_dialog.fxml"))); window = new Stage(); window.initModality(Modality.APPLICATION_MODAL); window.setTitle("Insert New Dialog"); scene = new Scene(root, 440, 350); window.setScene(scene); window.showAndWait(); } @Override public void initialize(URL location, ResourceBundle resources) { Point p = MouseInfo.getPointerInfo().getLocation(); Point2D local = Main.root.screenToLocal(p.x, p.y); x.setText(String.valueOf(local.getX())); y.setText(String.valueOf(local.getY())); Arrays.stream(Ability.values()) .forEach(a -> this.ability.getItems().add(a)); generateItems.setSelected(true); classSelection.getItems().addAll("Immigrant", "Dwarf", "Nobel"); classSelection.setValue("Immigrant"); } @FXML public void submitButtonHandler() { if (age.getText().isEmpty() || x.getText().isEmpty() || y.getText().isEmpty() || firstName.getText().isEmpty() || lastName.getText().isEmpty() || ability.getValue() == null || classSelection.getValue() == null ) { sendErrorAlert("You must enter all the fields", null); return; } int inputAge = Integer.parseInt(age.getText()); double inputX = Double.parseDouble(x.getText()); double inputY = Double.parseDouble(y.getText()); Ability inputAbility = Ability.valueOf(ability.getValue().toString()); if (inputAge < 0) { sendErrorAlert("You must enter a valid age", null); return; } switch (classSelection.getValue().toString()) { case "Immigrant" -> { Immigrant immigrant = new Immigrant(firstName.getText(), lastName.getText(), inputAge, inputX, inputY, inputAbility); if (!generateItems.isSelected()) { immigrant.setItems(new HashMap<>()); } Main.immigrants.add(immigrant); immigrant.getTimeline().play(); } case "Dwarf" -> { Dwarf dwarf = new Dwarf(firstName.getText(), lastName.getText(), inputAge, inputX, inputY, inputAbility); if (!generateItems.isSelected()) { dwarf.setItems(new HashMap<>()); } dwarf.getTimeline().play(); Main.immigrants.add(dwarf); } case "Nobel" -> { Nobel nobel = new Nobel(firstName.getText(), lastName.getText(), inputAge, inputX, inputY, inputAbility); if (!generateItems.isSelected()) { nobel.setItems(new HashMap<>()); } nobel.getTimeline().play(); Main.immigrants.add(nobel); } } window.close(); } }