diff options
| author | Andriy Cherniy <qugalet@m0e.space> | 2024-06-08 22:58:45 +0300 |
|---|---|---|
| committer | Andriy Cherniy <qugalet@m0e.space> | 2024-06-08 22:58:45 +0300 |
| commit | 249c10030fe27ef6a3a0afcacf53d4024143a054 (patch) | |
| tree | f0ef624783997f9b46be6057f12d05f5e0537e3b /src/main/java/space/m0e/quga/oop/lab56maven/dialogs | |
| download | oop-kursach-249c10030fe27ef6a3a0afcacf53d4024143a054.tar.gz oop-kursach-249c10030fe27ef6a3a0afcacf53d4024143a054.zip | |
initial commit
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.java | 96 | ||||
| -rw-r--r-- | src/main/java/space/m0e/quga/oop/lab56maven/dialogs/InsertDialog.java | 127 |
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(); + } +} |
