Advertisement
Guest User

Untitled

a guest
Nov 26th, 2014
163
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.90 KB | None | 0 0
  1. package gui;
  2.  
  3. import javafx.beans.value.ChangeListener;
  4. import javafx.geometry.Insets;
  5. import javafx.scene.control.Button;
  6. import javafx.scene.control.CheckBox;
  7. import javafx.scene.control.DatePicker;
  8. import javafx.scene.control.Label;
  9. import javafx.scene.control.ListView;
  10. import javafx.scene.control.TextField;
  11. import javafx.scene.layout.GridPane;
  12. import model.Hotel;
  13. import model.Konference;
  14. import model.Tilmelding;
  15. import service.Service;
  16.  
  17. public class KonferencePane extends GridPane {
  18. // TODO Spørg margrethe om hvordan man kan få listview til at opdatere hvis
  19. // man laver noget
  20. // i en anden tab
  21. // TODO Hvordan man laver mutiple selections på et listview
  22. // TODO spørg margrethe om hvordan man håndterer removeHotelFromKonference.
  23. // Den vil crashe når
  24. // den kører metoden for anden gang pga. den ikke kan fjerne then samme
  25. // konference to gange.
  26. // TODO Spørg også om det er muligt at begrænse DatePicker til kun at virke
  27. // indenfor
  28. // konferencen's
  29. // tidspunkt, og hvordan man forhindrer at der er negativt antal dage.
  30. private TextField txfKonfId, txfPris, txfSted, txfSamletpris;
  31. private Label lblStart, lblSlut, lblKonfId, lblPris;
  32. private ListView<Konference> lvwKonferencer;
  33. private ListView<Tilmelding> lvwTilmeldinger;
  34. private DatePicker startDatoPicker, slutDatoPicker;
  35. private CheckBox cSamletpris;
  36.  
  37. public KonferencePane() {
  38. setPadding(new Insets(20));
  39. setHgap(20);
  40. setVgap(10);
  41. setGridLinesVisible(false);
  42.  
  43. cSamletpris = new CheckBox();
  44. cSamletpris.setText("udregn samlet pris");
  45. this.add(cSamletpris, 6, 1);
  46. cSamletpris.setDisable(true);
  47. cSamletpris.setOnAction(event -> {
  48. if (cSamletpris.isSelected()) {
  49. Tilmelding t = lvwTilmeldinger.getSelectionModel()
  50. .getSelectedItem();
  51. if (t != null) {
  52.  
  53. txfSamletpris.setText(t.beregnSamletPris() + "");
  54. }
  55. }
  56. });
  57.  
  58. lblStart = new Label("Start Dato:");
  59. this.add(lblStart, 0, 0);
  60.  
  61. startDatoPicker = new DatePicker();
  62. this.add(startDatoPicker, 0, 1);
  63.  
  64. lblSlut = new Label("Slut Dato:");
  65. this.add(lblSlut, 0, 2);
  66. slutDatoPicker = new DatePicker();
  67. this.add(slutDatoPicker, 0, 3);
  68.  
  69. lblKonfId = new Label("Konferrence id:");
  70. this.add(lblKonfId, 0, 4);
  71.  
  72. txfSamletpris = new TextField();
  73. this.add(txfSamletpris, 6, 2);
  74. txfSamletpris.setDisable(true);
  75.  
  76. txfKonfId = new TextField();
  77. this.add(txfKonfId, 0, 5);
  78.  
  79. lblPris = new Label("Pris:");
  80. this.add(lblPris, 0, 6);
  81.  
  82. txfPris = new TextField();
  83. this.add(txfPris, 0, 7);
  84.  
  85. Label lblSted = new Label("Sted:");
  86. this.add(lblSted, 0, 8);
  87.  
  88. txfSted = new TextField();
  89. this.add(txfSted, 0, 9);
  90.  
  91. Label lblDeltagere = new Label("Deltagere:");
  92. this.add(lblDeltagere, 3, 0);
  93.  
  94. Label lblKonferencer = new Label("Konferencer:");
  95. this.add(lblKonferencer, 2, 0);
  96.  
  97. lvwKonferencer = new ListView<>();
  98. this.add(lvwKonferencer, 2, 1, 1, 8);
  99. lvwKonferencer.setPrefHeight(200);
  100. lvwKonferencer.setPrefWidth(200);
  101.  
  102. lvwTilmeldinger = new ListView<>();
  103. this.add(lvwTilmeldinger, 3, 1, 1, 8);
  104. lvwTilmeldinger.setPrefHeight(200);
  105. lvwTilmeldinger.setPrefWidth(200);
  106.  
  107. ChangeListener<Tilmelding> tilmeldingListener = (ov, oldTilmelding,
  108. newTilmelding) -> aktiverPris();
  109. lvwTilmeldinger.getSelectionModel().selectedItemProperty()
  110. .addListener(tilmeldingListener);
  111.  
  112. /*
  113. * Updates the listview of konferences upon initialization, othervise it
  114. * will be empty until a new konference is created
  115. */
  116. lvwKonferencer.getItems().setAll(Service.getKonferencer());
  117.  
  118. ChangeListener<Konference> konfListener = (ov, oldKonference,
  119. newKonference) -> updateControls();
  120. lvwKonferencer.getSelectionModel().selectedItemProperty()
  121. .addListener(konfListener);
  122.  
  123. Button btnAdd = new Button("Opret konference");
  124. this.add(btnAdd, 0, 11);
  125. btnAdd.setOnAction(event -> opretKonference());
  126.  
  127. Button btnRemove = new Button("Fjern deltager");
  128. this.add(btnRemove, 0, 12);
  129. btnRemove.setOnAction(event -> removeTilmelding());
  130.  
  131. Button btnRemoveKonf = new Button("Fjern konference");
  132. this.add(btnRemoveKonf, 0, 13);
  133. btnRemoveKonf.setOnAction(event -> removeKonference());
  134.  
  135. Button btnUpdate = new Button("Opdater konference");
  136. this.add(btnUpdate, 0, 14);
  137. btnUpdate.setOnAction(event -> updateKonferenceInfo(lvwKonferencer
  138. .getSelectionModel().getSelectedItem()));
  139. }
  140.  
  141. /*
  142. * Creates a new konference with the info read from the textfields. WILL
  143. * cause errors if any of the textFields it uses are empty. Need an if
  144. * statement that checks if they're not empty, else discard information and
  145. * message popup that the user caused a thermonuclear war.
  146. */
  147. public void opretKonference() {
  148. double subtotal = Double.valueOf(txfPris.getText()).doubleValue();
  149. Service.createKonference(txfKonfId.getText(),
  150. startDatoPicker.getValue(), slutDatoPicker.getValue(),
  151. subtotal, txfSted.getText());
  152. lvwKonferencer.getItems().setAll(Service.getKonferencer());
  153. clearTextFields();
  154. }
  155.  
  156. /*
  157. * Checks if a konference exists, then fills the lvwTilmeldinger with it's
  158. * tilmeldinger.
  159. */
  160. public void updateControls() {
  161. Konference konference = lvwKonferencer.getSelectionModel()
  162. .getSelectedItem();
  163. if (konference != null) {
  164. lvwTilmeldinger.getItems().setAll(konference.getTilmeldinger());
  165. fillTextFieldsWithKonfInfo(konference);
  166. }
  167.  
  168. }
  169.  
  170. /*
  171. * Removes tilmelding, clears up any links between that and konference so it
  172. * gets deleted by the garbage collector. Also updates the list
  173. */
  174. public void removeTilmelding() {
  175. Konference konference = lvwKonferencer.getSelectionModel()
  176. .getSelectedItem();
  177. Tilmelding tilmelding = lvwTilmeldinger.getSelectionModel()
  178. .getSelectedItem();
  179. konference.removeTilmelding(tilmelding);
  180. lvwTilmeldinger.getItems().setAll(konference.getTilmeldinger());
  181. }
  182.  
  183. /*
  184. * Deletes the konference from storage via service, removes all link
  185. * attributes between Tilmeldinger, hotels and the konference itself,
  186. * atleast that's what is intended. Is possible to crash if more than one
  187. * hotel is attributed to the konference.
  188. */
  189. public void removeKonference() {
  190. Konference konference = lvwKonferencer.getSelectionModel()
  191. .getSelectedItem();
  192. for (Tilmelding t : konference.getTilmeldinger()) {
  193. konference.removeTilmelding(t);
  194. }
  195. for (Hotel h : konference.getHoteller()) {
  196. Service.removeHotelFromKonference(h, konference);
  197. }
  198. lvwTilmeldinger.getItems().setAll(konference.getTilmeldinger());
  199. Service.deleteKonference(konference);
  200. lvwKonferencer.getItems().setAll(Service.getKonferencer());
  201. clearTextFields();
  202.  
  203. }
  204.  
  205. /*
  206. * This is clear, the janitor, cleans up after each time we've made a mess
  207. * from deleting or creating a konference, clear does good.
  208. */
  209. public void clearTextFields() {
  210. txfKonfId.clear();
  211. txfPris.clear();
  212. txfSted.clear();
  213. slutDatoPicker.setValue(null);
  214. startDatoPicker.setValue(null);
  215. }
  216.  
  217. /*
  218. * THis is fill, he does the opposite of clear, but only when told to, fills
  219. * textfields with info rom a konference.
  220. */
  221. public void fillTextFieldsWithKonfInfo(Konference k) {
  222. txfKonfId.setText(k.getKonferenceid());
  223. txfPris.setText(k.getKonferenceafgift() + "");
  224. txfSted.setText(k.getSted());
  225. slutDatoPicker.setValue(k.getSlutDato());
  226. startDatoPicker.setValue(k.getStartDato());
  227.  
  228. }
  229.  
  230. /*
  231. * Reads the textfields and sets them as the new info for the selected
  232. * konference
  233. */
  234. public void updateKonferenceInfo(Konference k) {
  235. if (k != null) {
  236. k.setKonferenceid(txfKonfId.getText());
  237. k.setKonferenceafgift(Double.parseDouble(txfPris.getText()));
  238. k.setSted(txfSted.getText());
  239. k.setSlutDato(slutDatoPicker.getValue());
  240. k.setStartDato(startDatoPicker.getValue());
  241. lvwKonferencer.getItems().setAll(Service.getKonferencer());
  242. }
  243.  
  244. }
  245.  
  246. public void aktiverPris() {
  247. cSamletpris.setDisable(false);
  248. txfSamletpris.setDisable(false);
  249. }
  250.  
  251. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement