package com.example.vpr_javafx; import javafx.collections.FXCollections; import javafx.collections.ObservableList; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; import javafx.scene.Node; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.scene.control.*; import javafx.scene.image.Image; import javafx.scene.image.ImageView; import javafx.scene.layout.StackPane; import javafx.stage.Stage; import java.io.FileWriter; import java.io.IOException; import java.nio.file.Files; import java.nio.file.Paths; import java.util.ArrayList; import java.util.Arrays; import java.util.List; public class MainController { @FXML private Label lMonH1; @FXML private Label lMonH2; @FXML private Label lMonD1; @FXML private Label lMonD2; @FXML private Label lTueH1; @FXML private Label lTueH2; @FXML private Label lTueD1; @FXML private Label lTueD2; @FXML private Label lWednH1; @FXML private Label lWednH2; @FXML private Label lWednD1; @FXML private Label lWednD2; @FXML private Label lThurH1; @FXML private Label lThurH2; @FXML private Label lThurD1; @FXML private Label lThurD2; @FXML private Label lFriH1; @FXML private Label lFriH2; @FXML private Label lFriD1; @FXML private Label lFriD2; @FXML private Label monDat; @FXML private Label tueDat; @FXML private Label wedDat; @FXML private Label thurDat; @FXML private Label friDat; @FXML private ImageView imgImage1; @FXML private ImageView imgImage2; @FXML private ImageView imgImage3; @FXML private ImageView imgImage4; @FXML private ImageView imgImage5; @FXML private ImageView imgImage6; @FXML private ImageView imgImage7; @FXML private ImageView imgImage8; @FXML private ImageView imgImage9; @FXML private ImageView imgImage10; @FXML private TextField tfPhone; @FXML public TextField tfName; @FXML public TextField tfChild; @FXML public TextField tfStreet; @FXML public TextField tfHouseNumber; @FXML public TextField tfPostalCode; @FXML public TextField tfCity; @FXML private PasswordField pfPassword; @FXML private Label allergene; @FXML private Button btResetSelection; @FXML private Button btToOrder; @FXML private RadioButton rbMonH1; @FXML private RadioButton rbMonH2; @FXML private RadioButton rbTueH1; @FXML private RadioButton rbTueH2; @FXML private RadioButton rbWednH1; @FXML private RadioButton rbWednH2; @FXML private RadioButton rbThurH1; @FXML private RadioButton rbThurH2; @FXML private RadioButton rbFriH1; @FXML private RadioButton rbFriH2; @FXML private ListView orderList; @FXML final String imagePathUrl = "file:target/classes/com/example/vpr_javafx/pics/"; @FXML final String veggieImageUrl = imagePathUrl + "vegetarisch.png"; @FXML final String veganImageUrl = imagePathUrl + "vegan.png"; @FXML final String meatImageUrl = imagePathUrl + "fleisch.png"; @FXML private String imageUrl; private ArrayList chosenMeals; @FXML protected void OnSignInButton(ActionEvent event) throws IOException { Data data = new Data("user.txt"); data.validateData(tfPhone, pfPassword, this); } @FXML protected void FillLabels() { try { List menuLines = Files.readAllLines(Paths.get("menue.txt")); for (int i = 0; i < menuLines.size(); i++) { String[] parts = menuLines.get(i).split(";"); String date = parts[0]; String day = parts[1]; String dish = parts[2]; String sideDish = parts[3]; String typ = parts[4]; String allergenic = parts[5]; String[] allergenics = allergenic.split(","); Menu menu = new Menu(date, dish, sideDish, typ, Arrays.stream(allergenics).toList()); String dayMenu = dish+"\n"+sideDish+"\n"+allergenic; switch (day) { case "Montag": monDat.setText(menu.getDate()); break; case "Dienstag": tueDat.setText(menu.getDate()); break; case "Mittwoch": wedDat.setText(menu.getDate()); break; case "Donnerstag": thurDat.setText(menu.getDate()); break; case "Freitag": friDat.setText(menu.getDate()); } if(typ.equals("Fleisch")) { imageUrl=meatImageUrl; } if(typ.equals("Vegetarisch")) { imageUrl=veggieImageUrl; } if(typ.equals("Vegan")) { imageUrl=veganImageUrl; } Image image = new Image(imageUrl); switch (i) { case 0: lMonH1.setText(dayMenu); imgImage1.setImage(image); break; case 1: lMonD1.setText(dayMenu); break; case 2: lMonH2.setText(dayMenu); imgImage2.setImage(image); break; case 3: lMonD2.setText(dayMenu); break; case 4: lTueH1.setText(dayMenu); imgImage3.setImage(image); break; case 5: lTueD1.setText(dayMenu); break; case 6: lTueH2.setText(dayMenu); imgImage4.setImage(image); break; case 7: lTueD2.setText(dayMenu); break; case 8: lWednH1.setText(dayMenu); imgImage5.setImage(image); break; case 9: lWednD1.setText(dayMenu); break; case 10: lWednH2.setText(dayMenu); imgImage6.setImage(image); break; case 11: lWednD2.setText(dayMenu); break; case 12: lThurH1.setText(dayMenu); imgImage7.setImage(image); break; case 13: lThurD1.setText(dayMenu); break; case 14: lThurH2.setText(dayMenu); imgImage8.setImage(image); break; case 15: lThurD2.setText(dayMenu); break; case 16: lFriH1.setText(dayMenu); imgImage9.setImage(image); break; case 17: lFriD1.setText(dayMenu); break; case 18: lFriH2.setText(dayMenu); imgImage10.setImage(image); break; case 19: lFriD2.setText(dayMenu); break; } } } catch (IOException e) { e.printStackTrace(); } } /** * writeAllergene() is a method to format and set allergene * @author Madeleine Vigier */ @FXML protected void writeAllergene() { allergene.setText("a: Eier; b: Soja,\n" + "c: Milch; d: Erdnüsse;\n" + "e: Weichtiere; f: Krebstiere;\n" + "g: Getreide; h: Senf; i: Sesam;\n" + "j: Schwefeldioxid und Sulfit;\n" + "k: Nüsse; l: Sellerie;\n" + "m: Fische; n: Lupinen\n\n" + "1: Nitrit-Pökelsalz\n" + "2: Phosphat\n" + "3: Nitrat\n" + "4: Antioxidationsmittel\n" + "5: Farbstoff\n" + "6: Geschmacksverstärker;\n" + "7: Süßungsmittel;\n" + "8: Konservierungsstoff"); } /** * ToRegistration() ruft die Registration-View auf, sobald man auf den Registrierungs-Button klickt * @param event * @throws IOException * @author Kevin Maier */ @FXML protected void ToRegistration(ActionEvent event) throws IOException { Parent root = FXMLLoader.load(getClass().getResource("Registration-view.fxml")); Stage stage = new Stage(); Scene scene = new Scene(root); stage.setScene(scene); stage.show(); } /** * OnRegistrationButton() creates a new user * @param event * @throws IOException * @author Kevin Maier */ @FXML protected void OnRegistrationButton(ActionEvent event) throws IOException { Alert alert = new Alert(Alert.AlertType.WARNING); Data validRegistration = new Data("user.txt"); if (validRegistration.validateRegistration(tfName, tfPhone, pfPassword, tfStreet, tfHouseNumber, tfPostalCode, tfCity, tfChild, this)) { try (FileWriter writer = new FileWriter("user.txt", true)){ writer.write(tfName.getText() + ";" + tfStreet.getText() + " " + tfHouseNumber.getText() + "," + tfPostalCode.getText() + " " + tfCity.getText() + ";" + tfPhone.getText() + ";" + tfChild.getText() + ";" + pfPassword.getText() + System.lineSeparator()); } catch (IOException e) { e.printStackTrace(); } } } @FXML protected void setRadioButton() { ToggleGroup monToggle = new ToggleGroup(); ToggleGroup tueToggle = new ToggleGroup(); ToggleGroup wednToggle = new ToggleGroup(); ToggleGroup thurToggle = new ToggleGroup(); ToggleGroup friToggle = new ToggleGroup(); rbMonH1.setToggleGroup(monToggle); rbMonH2.setToggleGroup(monToggle); rbTueH1.setToggleGroup(tueToggle); rbTueH2.setToggleGroup(tueToggle); rbWednH1.setToggleGroup(wednToggle); rbWednH2.setToggleGroup(wednToggle); rbThurH1.setToggleGroup(thurToggle); rbThurH2.setToggleGroup(thurToggle); rbFriH1.setToggleGroup(friToggle); rbFriH1.setToggleGroup(friToggle); btResetSelection.setVisible(true); btToOrder.setVisible(true); rbMonH1.setVisible(true); rbMonH2.setVisible(true); rbTueH1.setVisible(true); rbTueH2.setVisible(true); rbWednH1.setVisible(true); rbWednH2.setVisible(true); rbThurH1.setVisible(true); rbThurH2.setVisible(true); rbFriH1.setVisible(true); rbFriH2.setVisible(true); } @FXML protected void resetSelection(ActionEvent event) { rbMonH1.setSelected(false); rbMonH2.setSelected(false); rbTueH1.setSelected(false); rbTueH2.setSelected(false); rbWednH1.setSelected(false); rbWednH2.setSelected(false); rbThurH1.setSelected(false); rbThurH2.setSelected(false); rbFriH1.setSelected(false); rbFriH2.setSelected(false); chosenMeals.clear(); } @FXML protected void toOrder(ActionEvent event) throws IOException { try (FileWriter writer = new FileWriter("parentOrder.txt", true)) { writer.write(getLabelValueWithRadio().toString() + System.lineSeparator()); Alert alert = new Alert(Alert.AlertType.INFORMATION); alert.setContentText("Bestellung abgeschickt."); Parent rootParent = FXMLLoader.load(getClass().getResource("Order-view.fxml")); Stage stage = (Stage) ((Node) event.getSource()).getScene().getWindow(); Scene scene = new Scene(rootParent); stage.setScene(scene); stage.show(); ObservableList orders = FXCollections.observableArrayList(getLabelValueWithRadio()); orderList = new ListView<>(orders); StackPane rootStackPane = new StackPane(); rootStackPane.getChildren().add(orderList); Scene scene2 = new Scene(rootStackPane); stage.setScene(scene2); stage.show(); } catch (IOException e) { e.printStackTrace(); } } @FXML protected void removeFromOrder() throws IOException { } @FXML protected ArrayList getLabelValueWithRadio() { chosenMeals = new ArrayList<>(); String mainDish; String dessert; Data data = new Data("user.txt"); for (User user : data.readUser()) { if (tfPhone.getText().equals(user.getPhonenumber()) && pfPassword.getText().equals(user.getPassword())) { chosenMeals.add(user.getNameParent1()+"\n"); break; } } if (rbMonH1.isSelected()) { mainDish = lMonH1.getText(); dessert = lMonD1.getText(); chosenMeals.add("Hauptgericht: " + mainDish + " Dessert: " + dessert); } if (rbMonH2.isSelected()) { mainDish = lMonH2.getText(); dessert = lMonD2.getText(); chosenMeals.add("Hauptgericht: " + mainDish + " Dessert: " + dessert); } if (rbTueH1.isSelected()) { mainDish = lTueH1.getText(); dessert = lTueD1.getText(); chosenMeals.add("Hauptgericht: " + mainDish + " Dessert: " + dessert); } if (rbTueH2.isSelected()) { mainDish = lTueH2.getText(); dessert = lTueD2.getText(); chosenMeals.add("Hauptgericht: " + mainDish + " Dessert: " + dessert); } if (rbWednH1.isSelected()) { mainDish = lWednH1.getText(); dessert = lWednD1.getText(); chosenMeals.add("Hauptgericht: " + mainDish + " Dessert: " + dessert); } if (rbWednH2.isSelected()) { mainDish = lWednH2.getText(); dessert = lWednD2.getText(); chosenMeals.add("Hauptgericht: " + mainDish + " Dessert: " + dessert); } if (rbThurH1.isSelected()) { mainDish = lThurH1.getText(); dessert = lThurD1.getText(); chosenMeals.add("Hauptgericht: " + mainDish + " Dessert: " + dessert); } if (rbThurH2.isSelected()) { mainDish = lThurH2.getText(); dessert = lThurD2.getText(); chosenMeals.add("Hauptgericht: " + mainDish + " Dessert: " + dessert); } if (rbFriH1.isSelected()) { mainDish = lFriH1.getText(); dessert = lFriD1.getText(); chosenMeals.add("Hauptgericht: " + mainDish + " Dessert: " + dessert); } if (rbFriH2.isSelected()) { mainDish = lFriH2.getText(); dessert = lFriD2.getText(); chosenMeals.add("Hauptgericht: " + mainDish + " Dessert: " + dessert); } Alert alert = new Alert(Alert.AlertType.INFORMATION); alert.setContentText(chosenMeals.toString()); alert.show(); return chosenMeals; } }