summaryrefslogtreecommitdiff
path: root/src/main/java/space/m0e/quga/oop/lab56maven/dialogs
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/space/m0e/quga/oop/lab56maven/dialogs')
-rw-r--r--src/main/java/space/m0e/quga/oop/lab56maven/dialogs/ChangeDialog.java96
-rw-r--r--src/main/java/space/m0e/quga/oop/lab56maven/dialogs/InsertDialog.java127
2 files changed, 223 insertions, 0 deletions
diff --git a/src/main/java/space/m0e/quga/oop/lab56maven/dialogs/ChangeDialog.java b/src/main/java/space/m0e/quga/oop/lab56maven/dialogs/ChangeDialog.java
new file mode 100644
index 0000000..1f005ab
--- /dev/null
+++ b/src/main/java/space/m0e/quga/oop/lab56maven/dialogs/ChangeDialog.java
@@ -0,0 +1,96 @@
+package space.m0e.quga.oop.lab56maven.dialogs;
+
+import javafx.fxml.FXML;
+import javafx.fxml.FXMLLoader;
+import javafx.fxml.Initializable;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.scene.control.*;
+import javafx.stage.Modality;
+import javafx.stage.Stage;
+import space.m0e.quga.oop.lab56maven.entities.common.Ability;
+import space.m0e.quga.oop.lab56maven.entities.micro.Immigrant;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Arrays;
+import java.util.Objects;
+import java.util.ResourceBundle;
+
+public class ChangeDialog 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 Button submitButton;
+
+ public static Immigrant obj;
+
+ public static void display(Immigrant obj1) throws IOException {
+ obj = obj1;
+ Parent root = FXMLLoader.load(Objects.requireNonNull(ChangeDialog.class.getResource("change_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) {
+ Arrays.stream(Ability.values())
+ .forEach(a -> this.ability.getItems().add(a));
+ firstName.setText(obj.getFirstName());
+ lastName.setText(obj.getLastName());
+ age.setText(String.valueOf(obj.getAge()));
+ x.setText(String.valueOf(obj.getX()));
+ y.setText(String.valueOf(obj.getY()));
+ ability.setValue(obj.getAbility().toString());
+ }
+
+ public void sendError(String title, String description) {
+ Alert alert = new Alert(Alert.AlertType.ERROR);
+ alert.setTitle("Error");
+ alert.setHeaderText(title);
+ alert.setContentText(description);
+ alert.showAndWait();
+ }
+
+ @FXML
+ public void submitButtonHandler() {
+ if (age.getText().isEmpty() ||
+ x.getText().isEmpty() ||
+ y.getText().isEmpty() ||
+ firstName.getText().isEmpty() ||
+ lastName.getText().isEmpty() ||
+ ability.getValue() == null
+ ) {
+ sendError("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) {
+ sendError("You must enter a valid age", null);
+ return;
+ }
+
+ obj.setX(inputX);
+ obj.setY(inputY);
+ obj.setAge(inputAge);
+ obj.setAbility(inputAbility);
+ obj.setFirstName(firstName.getText());
+ obj.setLastName(lastName.getText());
+
+ window.close();
+ }
+}
diff --git a/src/main/java/space/m0e/quga/oop/lab56maven/dialogs/InsertDialog.java b/src/main/java/space/m0e/quga/oop/lab56maven/dialogs/InsertDialog.java
new file mode 100644
index 0000000..c0c72f3
--- /dev/null
+++ b/src/main/java/space/m0e/quga/oop/lab56maven/dialogs/InsertDialog.java
@@ -0,0 +1,127 @@
+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.ArrayList;
+import java.util.Arrays;
+import java.util.Objects;
+import java.util.ResourceBundle;
+
+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");
+ }
+
+ public void sendError(String title, String description) {
+ Alert alert = new Alert(Alert.AlertType.ERROR);
+ alert.setTitle("Error");
+ alert.setHeaderText(title);
+ alert.setContentText(description);
+ alert.showAndWait();
+ }
+
+ @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
+ ) {
+ sendError("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) {
+ sendError("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 ArrayList<>());
+ }
+ immigrant.getThread().start();
+
+ Main.immigrants.add(immigrant);
+ }
+ case "Dwarf" -> {
+ Dwarf dwarf = new Dwarf(firstName.getText(), lastName.getText(), inputAge, inputX, inputY, inputAbility);
+ if (!generateItems.isSelected()) {
+ dwarf.setItems(new ArrayList<>());
+ }
+
+ Main.immigrants.add(dwarf);
+ }
+
+ case "Nobel" -> {
+ Nobel nobel = new Nobel(firstName.getText(), lastName.getText(), inputAge, inputX, inputY, inputAbility);
+ if (!generateItems.isSelected()) {
+ nobel.setItems(new ArrayList<>());
+ }
+
+ Main.immigrants.add(nobel);
+ }
+ }
+
+ window.close();
+ }
+}