Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package application.gui;
- import javafx.beans.value.ChangeListener;
- import javafx.geometry.HPos;
- import javafx.geometry.Insets;
- import javafx.scene.control.Button;
- import javafx.scene.control.Label;
- import javafx.scene.control.ListView;
- import javafx.scene.control.TextArea;
- import javafx.scene.layout.GridPane;
- import java.time.format.DateTimeFormatter;
- import application.controller.Controller;
- import application.model.*;
- /**
- * Registration Pane to manage registrations
- *
- * @author Mads, Mikkel & Soeren
- *
- */
- public class RegistrationPane extends GridPane {
- // Attributes
- private static ListView<Conference> lwConferences = new ListView<>();
- private static ListView<Registration> lwRegistrations = new ListView<>();
- private static TextArea txaInfo = new TextArea();
- private static Label lblErrorConference = new Label();
- private static Label lblErrorRegistration = new Label();
- private Label lblConference = new Label("Aktiv Konferenceliste");
- private Label lblRegistrations = new Label("Deltagerliste");
- private Label lblRegistrationInformation = new Label("Deltager Information");
- private Button btnMakeRegistration = new Button("Tilmeld deltager");
- private Button btnRemoveRegistration = new Button("Fjern deltager");
- public RegistrationPane() {
- this.setPadding(new Insets(20));
- this.setHgap(20);
- this.setVgap(20);
- this.setGridLinesVisible(false);
- // Labels added to pane
- this.add(lblConference, 0, 0);
- lblConference.setStyle("-fx-font-weight: bold");
- GridPane.setHalignment(lblConference, HPos.CENTER);
- this.add(lblRegistrations, 1, 0);
- lblRegistrations.setStyle("-fx-font-weight: bold");
- GridPane.setHalignment(lblRegistrations, HPos.CENTER);
- this.add(lblRegistrationInformation, 2, 0);
- lblRegistrationInformation.setStyle("-fx-font-weight: bold");
- GridPane.setHalignment(lblRegistrationInformation, HPos.CENTER);
- // ListViews added to pane
- this.add(lwConferences, 0, 1);
- this.add(lwRegistrations, 1, 1);
- // TextArea with registration information added to pane
- this.add(txaInfo, 2, 1);
- txaInfo.setPrefWidth(200);
- txaInfo.setEditable(false);
- // Buttons added to pane
- this.add(btnMakeRegistration, 0, 2);
- GridPane.setHalignment(btnMakeRegistration, HPos.CENTER);
- this.add(btnRemoveRegistration, 1, 2);
- GridPane.setHalignment(btnRemoveRegistration, HPos.CENTER);
- // Error labels added to pane
- this.add(lblErrorConference, 0, 3);
- lblErrorConference.setStyle("-fx-text-fill: red");
- GridPane.setHalignment(lblErrorConference, HPos.CENTER);
- this.add(lblErrorRegistration, 1, 3);
- lblErrorRegistration.setStyle("-fx-text-fill: red");
- GridPane.setHalignment(lblErrorRegistration, HPos.CENTER);
- // Listener for updating the associated registrations
- ChangeListener<Conference> listenerConference = (ov, oldConference, newConference) -> this
- .selectedConferenceChanged();
- lwConferences.getSelectionModel().selectedItemProperty().addListener(listenerConference);
- // Listener for updating the participant information per registration
- ChangeListener<Registration> listenerRegistration = (ov, oldExcursion, newExcursion) -> this
- .selectedRegistrationChanged();
- lwRegistrations.getSelectionModel().selectedItemProperty().addListener(listenerRegistration);
- // Button actions when clicked
- btnMakeRegistration.setOnAction(e -> createRegistration());
- btnRemoveRegistration.setOnAction(e -> deleteRegistration());
- // Places the initialized Storage content to the ListViews and preselects no. 1
- // conference
- lwConferences.getItems().setAll(Controller.getActiveConferences());
- if (lwConferences.getItems().size() > 0) {
- lwConferences.getSelectionModel().select(0);
- }
- }
- // ------------------------------------------------------------------------------
- /**
- * Creates a PopUp window which allows registration creation.
- */
- public void createRegistration() {
- Conference conference = lwConferences.getSelectionModel().getSelectedItem();
- if (lwConferences.getItems().size() == 0) {
- removeErrorText();
- lwRegistrations.getItems().clear();
- lblErrorConference.setText("Opret først en konference");
- return;
- } else if (conference.equals(null)) {
- removeErrorText();
- lblErrorConference.setText("Vælg en konference");
- return;
- } else {
- CreateRegistrationWindow p = new CreateRegistrationWindow(conference);
- p.showAndWait();
- int selectIndexConference = lwConferences.getSelectionModel().getSelectedIndex();
- ConferencePane.updatePanes();
- lwConferences.getSelectionModel().select(selectIndexConference);
- }
- }
- /**
- * Deletes a registration from the chosen conference
- */
- private void deleteRegistration() {
- Conference conference = lwConferences.getSelectionModel().getSelectedItem();
- Registration registration = lwRegistrations.getSelectionModel().getSelectedItem();
- if (lwConferences.getItems().size() == 0) {
- removeErrorText();
- lblErrorConference.setText("Opret først en konference");
- return;
- } else if (conference.equals(null)) {
- removeErrorText();
- lblErrorConference.setText("Vælg en konference");
- return;
- }
- if (lwRegistrations.getItems().size() == 0) {
- removeErrorText();
- lblErrorRegistration.setText("Ingen tilmeldt " + conference.getName());
- return;
- } else if (registration != null) {
- Controller.removeRegistration(conference, registration);
- removeErrorText();
- int selectIndexConference = lwConferences.getSelectionModel().getSelectedIndex();
- ConferencePane.updatePanes();
- lwConferences.getSelectionModel().select(selectIndexConference);
- if (lwRegistrations.getItems().size() > 0) {
- lwRegistrations.getSelectionModel().select(0);
- }
- } else {
- removeErrorText();
- lblErrorRegistration.setText("Vælg en registrering");
- return;
- }
- }
- // ------------------------------------------------------------------------------
- /**
- * The first Listener from the constructor calls this method after a new
- * conference has been selected.
- */
- public void selectedConferenceChanged() {
- RegistrationPane.updateRegistrations();
- }
- /**
- * The second Listener from the constructor calls this method after a new
- * registration is selected
- */
- public void selectedRegistrationChanged() {
- RegistrationPane.updateInformation();
- }
- /**
- * Helper method to update the pane (Used in the ConferencePane to update after
- * conference creation)
- */
- public static void updateRegistrationPane() {
- lwConferences.getItems().setAll(Controller.getActiveConferences());
- updateRegistrations();
- if (lwConferences.getItems().size() > 0) {
- lwConferences.getSelectionModel().select(0);
- }
- }
- /**
- * Helper method to update ListViews when a new conference is selected.
- */
- public static void updateRegistrations() {
- Conference conference = lwConferences.getSelectionModel().getSelectedItem();
- if (conference != null) {
- lwRegistrations.getItems().setAll(conference.getRegistrations());
- } else {
- lwRegistrations.getItems().clear();
- }
- }
- /**
- * Helper method to update TextArea when a new registration is selected.
- */
- public static void updateInformation() {
- Registration registration = lwRegistrations.getSelectionModel().getSelectedItem();
- if (registration != null) {
- StringBuilder sb = new StringBuilder();
- String dateArrival = DateTimeFormatter.ofPattern("d/M-yy")
- .format(registration.getParticipant().getArrivalDate());
- String dateDeparture = DateTimeFormatter.ofPattern("d/M-yy")
- .format(registration.getParticipant().getDepartureDate());
- if (registration.getAttendant().isEmpty()) {
- sb.append(String.format(
- "Navn: %s\nAdresse: %s\nBy: %s\nLand: %s\nAnkomst: %s\nAfgang: %s\nNummer: %d\nFirma: %s\nFirma nr.: %d\n",
- registration.getParticipant().getName(), registration.getParticipant().getAddress(),
- registration.getParticipant().getTown(), registration.getParticipant().getCountry(),
- dateArrival, dateDeparture, registration.getParticipant().getPhoneNo(),
- registration.getParticipant().getCompany(), registration.getParticipant().getCompanyPhoneNo()));
- } else {
- sb.append(String.format(
- "Navn: %s\nLedsager: %s\nAdresse: %s\nBy: %s\nLand: %s\nAnkomst: %s\nAfgang: %s\nNummer: %d\nFirma: %s\nFirma nr.: %d\n",
- registration.getParticipant().getName(), registration.getAttendant(),
- registration.getParticipant().getAddress(), registration.getParticipant().getTown(),
- registration.getParticipant().getCountry(), dateArrival, dateDeparture,
- registration.getParticipant().getPhoneNo(), registration.getParticipant().getCompany(),
- registration.getParticipant().getCompanyPhoneNo()));
- }
- txaInfo.setText(sb.toString());
- }
- }
- /**
- * Helper method removes all error texts.
- */
- public static void removeErrorText() {
- lblErrorConference.setText("");
- lblErrorRegistration.setText("");
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement