Advertisement
Guest User

Untitled

a guest
Nov 18th, 2019
100
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 8.88 KB | None | 0 0
  1. package application.gui;
  2.  
  3. import javafx.beans.value.ChangeListener;
  4. import javafx.geometry.HPos;
  5. import javafx.geometry.Insets;
  6. import javafx.scene.control.Button;
  7. import javafx.scene.control.Label;
  8. import javafx.scene.control.ListView;
  9. import javafx.scene.control.TextArea;
  10. import javafx.scene.layout.GridPane;
  11.  
  12. import java.time.format.DateTimeFormatter;
  13.  
  14. import application.controller.Controller;
  15. import application.model.*;
  16.  
  17. /**
  18. * Registration Pane to manage registrations
  19. *
  20. * @author Mads, Mikkel & Soeren
  21. *
  22. */
  23. public class RegistrationPane extends GridPane {
  24. // Attributes
  25. private static ListView<Conference> lwConferences = new ListView<>();
  26. private static ListView<Registration> lwRegistrations = new ListView<>();
  27. private static TextArea txaInfo = new TextArea();
  28. private static Label lblErrorConference = new Label();
  29. private static Label lblErrorRegistration = new Label();
  30. private Label lblConference = new Label("Aktiv Konferenceliste");
  31. private Label lblRegistrations = new Label("Deltagerliste");
  32. private Label lblRegistrationInformation = new Label("Deltager Information");
  33. private Button btnMakeRegistration = new Button("Tilmeld deltager");
  34. private Button btnRemoveRegistration = new Button("Fjern deltager");
  35.  
  36. public RegistrationPane() {
  37.  
  38. this.setPadding(new Insets(20));
  39. this.setHgap(20);
  40. this.setVgap(20);
  41. this.setGridLinesVisible(false);
  42. // Labels added to pane
  43. this.add(lblConference, 0, 0);
  44. lblConference.setStyle("-fx-font-weight: bold");
  45. GridPane.setHalignment(lblConference, HPos.CENTER);
  46. this.add(lblRegistrations, 1, 0);
  47. lblRegistrations.setStyle("-fx-font-weight: bold");
  48. GridPane.setHalignment(lblRegistrations, HPos.CENTER);
  49. this.add(lblRegistrationInformation, 2, 0);
  50. lblRegistrationInformation.setStyle("-fx-font-weight: bold");
  51. GridPane.setHalignment(lblRegistrationInformation, HPos.CENTER);
  52. // ListViews added to pane
  53. this.add(lwConferences, 0, 1);
  54. this.add(lwRegistrations, 1, 1);
  55. // TextArea with registration information added to pane
  56. this.add(txaInfo, 2, 1);
  57. txaInfo.setPrefWidth(200);
  58. txaInfo.setEditable(false);
  59. // Buttons added to pane
  60. this.add(btnMakeRegistration, 0, 2);
  61. GridPane.setHalignment(btnMakeRegistration, HPos.CENTER);
  62. this.add(btnRemoveRegistration, 1, 2);
  63. GridPane.setHalignment(btnRemoveRegistration, HPos.CENTER);
  64. // Error labels added to pane
  65. this.add(lblErrorConference, 0, 3);
  66. lblErrorConference.setStyle("-fx-text-fill: red");
  67. GridPane.setHalignment(lblErrorConference, HPos.CENTER);
  68. this.add(lblErrorRegistration, 1, 3);
  69. lblErrorRegistration.setStyle("-fx-text-fill: red");
  70. GridPane.setHalignment(lblErrorRegistration, HPos.CENTER);
  71.  
  72. // Listener for updating the associated registrations
  73. ChangeListener<Conference> listenerConference = (ov, oldConference, newConference) -> this
  74. .selectedConferenceChanged();
  75. lwConferences.getSelectionModel().selectedItemProperty().addListener(listenerConference);
  76. // Listener for updating the participant information per registration
  77. ChangeListener<Registration> listenerRegistration = (ov, oldExcursion, newExcursion) -> this
  78. .selectedRegistrationChanged();
  79. lwRegistrations.getSelectionModel().selectedItemProperty().addListener(listenerRegistration);
  80. // Button actions when clicked
  81. btnMakeRegistration.setOnAction(e -> createRegistration());
  82. btnRemoveRegistration.setOnAction(e -> deleteRegistration());
  83. // Places the initialized Storage content to the ListViews and preselects no. 1
  84. // conference
  85. lwConferences.getItems().setAll(Controller.getActiveConferences());
  86. if (lwConferences.getItems().size() > 0) {
  87. lwConferences.getSelectionModel().select(0);
  88. }
  89. }
  90.  
  91. // ------------------------------------------------------------------------------
  92.  
  93. /**
  94. * Creates a PopUp window which allows registration creation.
  95. */
  96. public void createRegistration() {
  97. Conference conference = lwConferences.getSelectionModel().getSelectedItem();
  98. if (lwConferences.getItems().size() == 0) {
  99. removeErrorText();
  100. lwRegistrations.getItems().clear();
  101. lblErrorConference.setText("Opret først en konference");
  102. return;
  103. } else if (conference.equals(null)) {
  104. removeErrorText();
  105. lblErrorConference.setText("Vælg en konference");
  106. return;
  107. } else {
  108. CreateRegistrationWindow p = new CreateRegistrationWindow(conference);
  109. p.showAndWait();
  110. int selectIndexConference = lwConferences.getSelectionModel().getSelectedIndex();
  111. ConferencePane.updatePanes();
  112. lwConferences.getSelectionModel().select(selectIndexConference);
  113. }
  114. }
  115.  
  116. /**
  117. * Deletes a registration from the chosen conference
  118. */
  119. private void deleteRegistration() {
  120. Conference conference = lwConferences.getSelectionModel().getSelectedItem();
  121. Registration registration = lwRegistrations.getSelectionModel().getSelectedItem();
  122. if (lwConferences.getItems().size() == 0) {
  123. removeErrorText();
  124. lblErrorConference.setText("Opret først en konference");
  125. return;
  126. } else if (conference.equals(null)) {
  127. removeErrorText();
  128. lblErrorConference.setText("Vælg en konference");
  129. return;
  130. }
  131. if (lwRegistrations.getItems().size() == 0) {
  132. removeErrorText();
  133. lblErrorRegistration.setText("Ingen tilmeldt " + conference.getName());
  134. return;
  135. } else if (registration != null) {
  136. Controller.removeRegistration(conference, registration);
  137. removeErrorText();
  138. int selectIndexConference = lwConferences.getSelectionModel().getSelectedIndex();
  139. ConferencePane.updatePanes();
  140. lwConferences.getSelectionModel().select(selectIndexConference);
  141. if (lwRegistrations.getItems().size() > 0) {
  142. lwRegistrations.getSelectionModel().select(0);
  143. }
  144. } else {
  145. removeErrorText();
  146. lblErrorRegistration.setText("Vælg en registrering");
  147. return;
  148. }
  149. }
  150.  
  151. // ------------------------------------------------------------------------------
  152.  
  153. /**
  154. * The first Listener from the constructor calls this method after a new
  155. * conference has been selected.
  156. */
  157. public void selectedConferenceChanged() {
  158. RegistrationPane.updateRegistrations();
  159. }
  160.  
  161. /**
  162. * The second Listener from the constructor calls this method after a new
  163. * registration is selected
  164. */
  165. public void selectedRegistrationChanged() {
  166. RegistrationPane.updateInformation();
  167. }
  168.  
  169. /**
  170. * Helper method to update the pane (Used in the ConferencePane to update after
  171. * conference creation)
  172. */
  173. public static void updateRegistrationPane() {
  174. lwConferences.getItems().setAll(Controller.getActiveConferences());
  175. updateRegistrations();
  176. if (lwConferences.getItems().size() > 0) {
  177. lwConferences.getSelectionModel().select(0);
  178. }
  179. }
  180.  
  181. /**
  182. * Helper method to update ListViews when a new conference is selected.
  183. */
  184. public static void updateRegistrations() {
  185. Conference conference = lwConferences.getSelectionModel().getSelectedItem();
  186. if (conference != null) {
  187. lwRegistrations.getItems().setAll(conference.getRegistrations());
  188. } else {
  189. lwRegistrations.getItems().clear();
  190. }
  191. }
  192.  
  193. /**
  194. * Helper method to update TextArea when a new registration is selected.
  195. */
  196. public static void updateInformation() {
  197. Registration registration = lwRegistrations.getSelectionModel().getSelectedItem();
  198. if (registration != null) {
  199. StringBuilder sb = new StringBuilder();
  200. String dateArrival = DateTimeFormatter.ofPattern("d/M-yy")
  201. .format(registration.getParticipant().getArrivalDate());
  202. String dateDeparture = DateTimeFormatter.ofPattern("d/M-yy")
  203. .format(registration.getParticipant().getDepartureDate());
  204. if (registration.getAttendant().isEmpty()) {
  205. sb.append(String.format(
  206. "Navn: %s\nAdresse: %s\nBy: %s\nLand: %s\nAnkomst: %s\nAfgang: %s\nNummer: %d\nFirma: %s\nFirma nr.: %d\n",
  207. registration.getParticipant().getName(), registration.getParticipant().getAddress(),
  208. registration.getParticipant().getTown(), registration.getParticipant().getCountry(),
  209. dateArrival, dateDeparture, registration.getParticipant().getPhoneNo(),
  210. registration.getParticipant().getCompany(), registration.getParticipant().getCompanyPhoneNo()));
  211. } else {
  212. sb.append(String.format(
  213. "Navn: %s\nLedsager: %s\nAdresse: %s\nBy: %s\nLand: %s\nAnkomst: %s\nAfgang: %s\nNummer: %d\nFirma: %s\nFirma nr.: %d\n",
  214. registration.getParticipant().getName(), registration.getAttendant(),
  215. registration.getParticipant().getAddress(), registration.getParticipant().getTown(),
  216. registration.getParticipant().getCountry(), dateArrival, dateDeparture,
  217. registration.getParticipant().getPhoneNo(), registration.getParticipant().getCompany(),
  218. registration.getParticipant().getCompanyPhoneNo()));
  219. }
  220. txaInfo.setText(sb.toString());
  221. }
  222. }
  223.  
  224. /**
  225. * Helper method removes all error texts.
  226. */
  227. public static void removeErrorText() {
  228. lblErrorConference.setText("");
  229. lblErrorRegistration.setText("");
  230. }
  231. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement