diff options
| author | Andriy Cherniy <qugalet@m0e.space> | 2024-06-15 10:43:34 +0300 |
|---|---|---|
| committer | Andriy Cherniy <qugalet@m0e.space> | 2024-06-15 10:44:28 +0300 |
| commit | 0a41210ec447cf48bf75082f989165cbf1c78ab8 (patch) | |
| tree | df6888e0b4600dbdb80a7c7f7b0f4e9f5ea86122 | |
| parent | dc9a76efb2b8a3bbe85aff07d18bf72acd491404 (diff) | |
| download | oop-kursach-0a41210ec447cf48bf75082f989165cbf1c78ab8.tar.gz oop-kursach-0a41210ec447cf48bf75082f989165cbf1c78ab8.zip | |
17
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> |
