summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndriy Cherniy <qugalet@m0e.space>2024-06-15 10:43:34 +0300
committerAndriy Cherniy <qugalet@m0e.space>2024-06-15 10:44:28 +0300
commit0a41210ec447cf48bf75082f989165cbf1c78ab8 (patch)
treedf6888e0b4600dbdb80a7c7f7b0f4e9f5ea86122
parentdc9a76efb2b8a3bbe85aff07d18bf72acd491404 (diff)
downloadoop-kursach-0a41210ec447cf48bf75082f989165cbf1c78ab8.tar.gz
oop-kursach-0a41210ec447cf48bf75082f989165cbf1c78ab8.zip
17
-rw-r--r--src/main/java/space/m0e/quga/oop/lab56maven/Main.java8
-rw-r--r--src/main/java/space/m0e/quga/oop/lab56maven/dialogs/CountDialog.java61
-rw-r--r--src/main/resources/space/m0e/quga/oop/lab56maven/dialogs/count_dialog.fxml22
3 files changed, 91 insertions, 0 deletions
diff --git a/src/main/java/space/m0e/quga/oop/lab56maven/Main.java b/src/main/java/space/m0e/quga/oop/lab56maven/Main.java
index 9aa199b..3b0c594 100644
--- a/src/main/java/space/m0e/quga/oop/lab56maven/Main.java
+++ b/src/main/java/space/m0e/quga/oop/lab56maven/Main.java
@@ -108,6 +108,14 @@ public class Main extends Application {
}
}
+ case C -> {
+ try {
+ CountDialog.display();
+ } catch (IOException e) {
+ e.printStackTrace();
+ }
+ }
+
case TAB -> {
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setTitle("Object list");
diff --git a/src/main/java/space/m0e/quga/oop/lab56maven/dialogs/CountDialog.java b/src/main/java/space/m0e/quga/oop/lab56maven/dialogs/CountDialog.java
new file mode 100644
index 0000000..a00ef70
--- /dev/null
+++ b/src/main/java/space/m0e/quga/oop/lab56maven/dialogs/CountDialog.java
@@ -0,0 +1,61 @@
+package space.m0e.quga.oop.lab56maven.dialogs;
+
+import javafx.fxml.FXMLLoader;
+import javafx.fxml.Initializable;
+import javafx.scene.Parent;
+import javafx.scene.Scene;
+import javafx.scene.control.*;
+import javafx.scene.input.MouseEvent;
+import javafx.stage.Modality;
+import javafx.stage.Stage;
+import space.m0e.quga.oop.lab56maven.Main;
+import space.m0e.quga.oop.lab56maven.entities.common.Utils;
+import space.m0e.quga.oop.lab56maven.entities.micro.Immigrant;
+
+import java.io.IOException;
+import java.net.URL;
+import java.util.Objects;
+import java.util.ResourceBundle;
+
+public class CountDialog implements Initializable {
+ public static Stage window = null;
+ public static Scene scene;
+ public ComboBox searchCombo;
+ public Button submitButton;
+ public Label resultLabel;
+
+ public static void display() throws IOException {
+ Parent root = FXMLLoader.load(Objects.requireNonNull(CountDialog.class.getResource("count_dialog.fxml")));
+
+ window = new Stage();
+ window.initModality(Modality.APPLICATION_MODAL);
+ window.setTitle("Count");
+
+ scene = new Scene(root, 440, 350);
+ window.setScene(scene);
+ window.showAndWait();
+ }
+
+ @Override
+ public void initialize(URL location, ResourceBundle resources) {
+ searchCombo.getItems().addAll("Children", "Elders", "Healthy");
+ searchCombo.setValue("Healthy");
+ }
+
+ public void submitButtonHandler(MouseEvent mouseEvent) throws IOException {
+ resultLabel.setText("Result: " + String.valueOf(Main.immigrants.stream().filter(immigrant -> {
+ switch (searchCombo.getValue().toString()) {
+ case "Children" -> {
+ return immigrant.getAge() <= 12;
+ }
+ case "Elders" -> {
+ return immigrant.getAge() >= 70;
+ }
+ case "Healthy" -> {
+ return immigrant.getHp()/immigrant.getMaxHp() >= 0.5;
+ }
+ }
+ return false;
+ }).count()));
+ }
+}
diff --git a/src/main/resources/space/m0e/quga/oop/lab56maven/dialogs/count_dialog.fxml b/src/main/resources/space/m0e/quga/oop/lab56maven/dialogs/count_dialog.fxml
new file mode 100644
index 0000000..16f5aa9
--- /dev/null
+++ b/src/main/resources/space/m0e/quga/oop/lab56maven/dialogs/count_dialog.fxml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<?import java.lang.*?>
+<?import java.util.*?>
+<?import javafx.scene.*?>
+<?import javafx.scene.control.*?>
+<?import javafx.scene.layout.*?>
+
+<VBox xmlns="http://javafx.com/javafx"
+ xmlns:fx="http://javafx.com/fxml"
+ fx:controller="space.m0e.quga.oop.lab56maven.dialogs.CountDialog"
+ alignment="CENTER"
+ spacing="10"
+ prefHeight="400.0" prefWidth="600.0">
+
+ <Label text="Count parameter" />
+ <ComboBox fx:id="searchCombo" />
+
+ <Button fx:id="submitButton" onMouseClicked="#submitButtonHandler" text="OK" alignment="BOTTOM_CENTER"/>
+
+ <Label fx:id="resultLabel" />
+</VBox>