Advertisement
Guest User

Untitled

a guest
Feb 22nd, 2020
142
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 9.64 KB | None | 0 0
  1. import java.io.IOException;
  2. import javafx.collections.FXCollections;
  3. import javafx.collections.ObservableList;
  4. import javafx.collections.transformation.SortedList;
  5. import javafx.event.ActionEvent;
  6. import javafx.fxml.FXML;
  7. import javafx.fxml.Initializable;
  8. import javafx.scene.control.ChoiceBox;
  9. import javafx.scene.control.TableColumn;
  10. import javafx.scene.control.TableView;
  11. import javafx.scene.control.TextField;
  12. import javafx.scene.control.cell.PropertyValueFactory;
  13. import javafx.scene.input.KeyEvent;
  14. import javafx.collections.transformation.FilteredList;
  15. import javafx.scene.input.MouseEvent;
  16. import java.net.URL;
  17. import java.util.ArrayList;
  18. import java.util.ResourceBundle;
  19. import javafx.fxml.FXMLLoader;
  20. import javafx.scene.Node;
  21. import javafx.scene.Parent;
  22. import javafx.scene.Scene;
  23. import javafx.stage.Stage;
  24.  
  25. public class MainViewController implements Initializable {
  26.  
  27. ObservableList<ReadableData> data = FXCollections.observableArrayList();
  28.  
  29. /**
  30. * Initialise TableView
  31. */
  32. @FXML
  33. private TableView<ReadableData> MainView;
  34. @FXML
  35. private TableColumn<ReadableData, String> hallNumberCol;
  36. @FXML
  37. private TableColumn<ReadableData, String> roomNumberCol;
  38. @FXML
  39. private TableColumn<ReadableData, String> forenameCol;
  40. @FXML
  41. private TableColumn<ReadableData, String> surnameCol;
  42. @FXML
  43. private TableColumn<ReadableData, String> studentNumCol;
  44. @FXML
  45. private TableColumn<ReadableData, String> leaseNumberCol;
  46. @FXML
  47. private TableColumn<ReadableData, String> cleaningStatusCol;
  48. @FXML
  49. private TableColumn<ReadableData, String> roomStatusCol;
  50. @FXML
  51. private ChoiceBox cleaningStatusBox;
  52. @FXML
  53. private TextField roomStatusBox;
  54. @FXML
  55. private TextField searchBox;
  56. @FXML
  57. private TextField hallNumberBox;
  58. @FXML
  59. private TextField roomNumberBox;
  60. @FXML
  61. private TextField leaseNumberBox;
  62. @FXML
  63. private TextField forenameBox;
  64. @FXML
  65. private TextField surnameBox;
  66. @FXML
  67. private TextField studentIdBox;
  68. @FXML
  69. public void logOut(ActionEvent event) throws IOException
  70. {
  71. Parent loginScreenParent = FXMLLoader.load(getClass().getResource("LoginScreen.fxml"));
  72. Scene loginScreen = new Scene(loginScreenParent);
  73.  
  74. //This line gets the Stage information
  75. Stage window = (Stage)((Node)event.getSource()).getScene().getWindow();
  76.  
  77. window.setScene(loginScreen);
  78. window.show();
  79.  
  80. }
  81.  
  82. /**
  83. * Initialise the controller class
  84. */
  85. @Override
  86. public void initialize(URL url, ResourceBundle resourceBundle) {
  87.  
  88. // Set the columns in the table
  89. hallNumberCol.setCellValueFactory(
  90. new PropertyValueFactory<ReadableData, String>("hallNumber"));
  91.  
  92. roomNumberCol.setCellValueFactory(
  93. new PropertyValueFactory<ReadableData, String>("roomNumber"));
  94.  
  95. studentNumCol.setCellValueFactory(
  96. new PropertyValueFactory<ReadableData, String>("studentNumber"));
  97.  
  98. forenameCol.setCellValueFactory(
  99. new PropertyValueFactory<ReadableData, String>("forename"));
  100.  
  101. surnameCol.setCellValueFactory(
  102. new PropertyValueFactory<ReadableData, String>("surname"));
  103.  
  104. leaseNumberCol.setCellValueFactory(
  105. new PropertyValueFactory<ReadableData, String>("leaseNumber"));
  106.  
  107. cleaningStatusCol.setCellValueFactory(
  108. new PropertyValueFactory<ReadableData, String>("cleaningStatus"));
  109.  
  110. roomStatusCol.setCellValueFactory(
  111. new PropertyValueFactory<ReadableData, String>("roomStatus"));
  112.  
  113. MainView.setItems(getData());
  114.  
  115. cleaningStatusBox.getItems().addAll("Clean","Dirty","Offline");
  116.  
  117. // Gets selected row when clicked
  118. MainView.setOnMouseClicked((MouseEvent event) -> {
  119. if (event.getClickCount() > 1) {
  120. getRow();
  121. }
  122. });
  123. onWardenLogin();
  124.  
  125. }
  126. public void onWardenLogin()
  127. {
  128. if(LoginScreenController.manager != true);
  129. surnameBox.setDisable(true);
  130. forenameBox.setDisable(true);
  131. studentIdBox.setDisable(true);
  132. leaseNumberBox.setDisable(true);
  133. data.removeIf(obj -> !obj.getHallNumber().contains("1"));
  134.  
  135.  
  136. }
  137.  
  138. public void getRow() {
  139. // check the table's selected item and get selected item
  140. if (MainView.getSelectionModel().getSelectedItem() != null) {
  141. ReadableData selectedData = MainView.getSelectionModel().getSelectedItem();
  142. hallNumberBox.setText(selectedData.getHallNumber());
  143. roomNumberBox.setText((selectedData.getRoomNumber()));
  144. studentIdBox.setText((selectedData.getStudentNumber()));
  145. forenameBox.setText((selectedData.getForename()));
  146. surnameBox.setText((selectedData.getSurname()));
  147. leaseNumberBox.setText((selectedData.getLeaseNumber()));
  148. roomStatusBox.setText((selectedData.getRoomStatus()));
  149. //cleaningStatusBox.getSelectionModel().setSelectedItem(selectedData);
  150. }
  151. }
  152.  
  153. @FXML
  154. private void update(){
  155. ReadableData selectedData = MainView.getSelectionModel().getSelectedItem();
  156.  
  157.  
  158. //Hall hall = selectedData.getHall();
  159. Lease lease = selectedData.getLease();
  160. Room room = selectedData.getRoom();
  161.  
  162. selectedData.setStudentNumber(studentIdBox.getText());
  163. selectedData.setForename(forenameBox.getText());
  164. selectedData.setSurname(surnameBox.getText());
  165. selectedData.setLeaseNumber(leaseNumberBox.getText());
  166. selectedData.setCleaningStatus(cleaningStatusBox.getSelectionModel().getSelectedItem().toString());
  167.  
  168. if (lease != null)
  169. {
  170. Student student = lease.getStudent();
  171. student.setForename(forenameBox.getText());
  172. student.setSurname(surnameBox.getText());
  173. student.setStudentID(Integer.valueOf(studentIdBox.getText()));
  174. lease.setLeaseNumber(Integer.valueOf(leaseNumberBox.getText()));
  175. if (room.isOccupied())
  176. {
  177. roomStatusBox.setText(room.getRoomStatus());
  178. }
  179.  
  180. }
  181. }
  182. /**
  183. * Search - NOT WORKING
  184. * Need to call getData() somehow
  185. * @param event
  186. */
  187. @FXML
  188. private void searchRecord(KeyEvent event) {
  189. FilteredList<ReadableData> filter = new FilteredList<>(data, e -> true);
  190. searchBox.textProperty().addListener((observable, oldValue, newValue) -> {
  191. filter.setPredicate(student -> {
  192.  
  193. if (newValue == null || newValue.isEmpty()) {
  194. return true;
  195. }
  196. String typedText = newValue.toLowerCase();
  197. if (student.getSurname().toLowerCase().indexOf(typedText) != -1) {
  198.  
  199. return true;
  200. }
  201. if (student.getForename().toLowerCase().indexOf(typedText) != -1) {
  202.  
  203. return true;
  204. }
  205. return false;
  206. });
  207. SortedList<ReadableData> sortedList = new SortedList<>(filter);
  208. sortedList.comparatorProperty().bind(MainView.comparatorProperty());
  209. MainView.setItems(sortedList);
  210. });
  211. }
  212.  
  213. /**
  214. * getData
  215. * Returns an ObservableList of objects
  216. * @return
  217. */
  218. public ObservableList<ReadableData> getData() {
  219.  
  220. // Singleton Method gets single instance of the class
  221. UWESystem uweAccommodationSystemController = UWESystem.getInstance();
  222.  
  223. // Create the halls
  224. uweAccommodationSystemController.createHalls();
  225.  
  226. ArrayList<Hall> halls = uweAccommodationSystemController.getHalls();
  227.  
  228. // Iterate through halls and rooms and get data for table
  229. for (int i = 0; i < halls.size(); i++) {
  230. Hall currentHall = halls.get(i);
  231. ArrayList<Room> rooms = currentHall.getRooms();
  232.  
  233. for (int j = 0; j < rooms.size(); j++) {
  234. Room room = rooms.get(j);
  235.  
  236. Student student = null;
  237.  
  238. String leaseString = "";
  239.  
  240. Lease lease = null;
  241.  
  242. if (room.isOccupied()) {
  243. lease = room.getLease();
  244. student = lease.getStudent();
  245. leaseString = String.valueOf(lease.getLeaseNumber());
  246. }
  247.  
  248. String studentId = "";
  249. String studentForename = "";
  250. String studentSurname = "";
  251.  
  252. if (student != null) {
  253. studentId = String.valueOf(student.getStudentID());
  254. studentForename = String.valueOf(student.getForename());
  255. studentSurname = String.valueOf(student.getSurname());
  256. }
  257.  
  258. ReadableData row = new ReadableData(
  259.  
  260. String.valueOf(currentHall.getHallNumber()),
  261. String.valueOf(room.getRoomNumber()),
  262. studentId,
  263. studentForename,
  264. studentSurname,
  265. leaseString,
  266. room.getCleaningStatus(),
  267. room.getRoomStatus(),
  268. currentHall,
  269. room,
  270. lease);
  271.  
  272.  
  273. data.add(row);
  274.  
  275. }
  276. }
  277.  
  278. return data;
  279. MainView.refresh();
  280.  
  281.  
  282. }
  283.  
  284. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement