Advertisement
Guest User

Untitled

a guest
Feb 24th, 2020
116
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 8.64 KB | None | 0 0
  1. public class MainViewController implements Initializable {
  2.  
  3.     ObservableList<ReadableData> data = FXCollections.observableArrayList();
  4.  
  5.  
  6.     /**
  7.      * Initialise TableView
  8.      */
  9.     @FXML
  10.     private TableView<ReadableData> MainView;
  11.     @FXML
  12.     private TableColumn<ReadableData, String> hallNumberCol;
  13.     @FXML
  14.     private TableColumn<ReadableData, String> roomNumberCol;
  15.     @FXML
  16.     private TableColumn<ReadableData, String> forenameCol;
  17.     @FXML
  18.     private TableColumn<ReadableData, String> surnameCol;
  19.     @FXML
  20.     private TableColumn<ReadableData, String> studentNumCol;
  21.     @FXML
  22.     private TableColumn<ReadableData, String> leaseNumberCol;
  23.     @FXML
  24.     private TableColumn<ReadableData, String> cleaningStatusCol;
  25.     @FXML
  26.     private TableColumn<ReadableData, String> roomStatusCol;
  27.     @FXML
  28.     private ChoiceBox cleaningStatusBox;
  29.     @FXML
  30.     private TextField roomStatusBox;
  31.     @FXML
  32.     private TextField searchBox;
  33.     @FXML
  34.     private TextField hallNumberBox;
  35.     @FXML
  36.     private TextField roomNumberBox;
  37.     @FXML
  38.     private TextField leaseNumberBox;
  39.     @FXML
  40.     private TextField forenameBox;
  41.     @FXML
  42.     private TextField surnameBox;
  43.     @FXML
  44.     private TextField studentIdBox;
  45.     // TO DO
  46.     // Display how many rooms are unoccupied
  47.     @FXML
  48.     private TextField roomsAvailableBox;
  49.     @FXML
  50.     private Button updateButton;
  51.  
  52.  
  53.     /**
  54.      * Initialise the controller class
  55.      */
  56.     @Override
  57.     public void initialize(URL url, ResourceBundle resourceBundle) {
  58.  
  59.         // Set the columns in the table
  60.         hallNumberCol.setCellValueFactory(
  61.                 new PropertyValueFactory<ReadableData, String>("hallNumber"));
  62.  
  63.         roomNumberCol.setCellValueFactory(
  64.                 new PropertyValueFactory<ReadableData, String>("roomNumber"));
  65.  
  66.         studentNumCol.setCellValueFactory(
  67.                 new PropertyValueFactory<ReadableData, String>("studentNumber"));
  68.  
  69.         forenameCol.setCellValueFactory(
  70.                 new PropertyValueFactory<ReadableData, String>("forename"));
  71.  
  72.         surnameCol.setCellValueFactory(
  73.                 new PropertyValueFactory<ReadableData, String>("surname"));
  74.  
  75.         leaseNumberCol.setCellValueFactory(
  76.                 new PropertyValueFactory<ReadableData, String>("leaseNumber"));
  77.  
  78.         cleaningStatusCol.setCellValueFactory(
  79.                 new PropertyValueFactory<ReadableData, String>("cleaningStatus"));
  80.  
  81.         roomStatusCol.setCellValueFactory(
  82.                 new PropertyValueFactory<ReadableData, String>("roomStatus"));
  83.  
  84.  
  85.         MainView.setItems(getData());
  86.  
  87.         // Gets selected row when clicked
  88.         MainView.setOnMouseClicked((MouseEvent event) -> {
  89.             if (event.getClickCount() > 1) {
  90.                 getRow();
  91.             }
  92.         });
  93.  
  94.         disableButtons();
  95.  
  96.  
  97.         //if(LoginScreenController.wardenOne == true){
  98.            // updateButton.setDisable(true);
  99.         //}
  100.  
  101.     }
  102.  
  103.     private void disableButtons(){
  104.         if(LoginScreenController.manager != true){
  105.             //UWESystem.getInstance();
  106.             //updateButton.setDisable(true);
  107.             data.removeIf(obj -> !obj.getHallNumber().contains("1"));
  108.         }
  109.     }
  110.  
  111.  
  112.     /**
  113.      * getRow
  114.      * Displays selected row to text fields
  115.      */
  116.     public void getRow() {
  117.         // check the table's selected item and get selected item
  118.         if (MainView.getSelectionModel().getSelectedItem() != null) {
  119.             ReadableData selectedData = MainView.getSelectionModel().getSelectedItem();
  120.             hallNumberBox.setText(selectedData.getHallNumber());
  121.             roomNumberBox.setText((selectedData.getRoomNumber()));
  122.             studentIdBox.setText((selectedData.getStudentNumber()));
  123.             forenameBox.setText((selectedData.getForename()));
  124.             surnameBox.setText((selectedData.getSurname()));
  125.             leaseNumberBox.setText((selectedData.getLeaseNumber()));
  126.             //cleaningStatusBox.getText((selectedData.getRoomNumber()));
  127.             roomStatusBox.setText((selectedData.getRoomStatus()));
  128.         }
  129.     }
  130.  
  131.  
  132.  
  133.     /**
  134.      * update
  135.      * Updates selected row in table by using text fields
  136.      */
  137.  
  138.     @FXML
  139.     private void update(){
  140.         ReadableData selectedData = MainView.getSelectionModel().getSelectedItem();
  141.  
  142.  
  143.         Hall hall = selectedData.getHall();
  144.         Room room = selectedData.getRoom();
  145.         Lease lease = selectedData.getLease();
  146.  
  147.  
  148.  
  149.         if (lease != null)
  150.         {
  151.             hall.getHallNumber();
  152.             room.getRoomNumber();
  153.             Student student = lease.getStudent();
  154.             student.setStudentID(Integer.valueOf(studentIdBox.getText()));
  155.             student.setForename(forenameBox.getText());
  156.             student.setSurname(surnameBox.getText());
  157.             lease.setLeaseNumber(Integer.valueOf(leaseNumberBox.getText()));
  158.             room.getRoomStatus();
  159.         }
  160.  
  161.  
  162.  
  163.     }
  164.  
  165.  
  166.     @FXML
  167.     public void logout(ActionEvent event) throws IOException
  168.     {
  169.         Parent loginScreenParent = FXMLLoader.load(getClass().getResource("LoginScreen.fxml"));
  170.         Scene loginScreen = new Scene(loginScreenParent);
  171.  
  172.         //This line gets the Stage information
  173.         Stage window = (Stage)((Node)event.getSource()).getScene().getWindow();
  174.  
  175.         window.setScene(loginScreen);
  176.         window.show();
  177.     }
  178.  
  179.  
  180.     /**
  181.      * searchRecord
  182.      * Searches table based on student name
  183.      * @param event
  184.      */
  185.    @FXML
  186.     private void searchRecord(KeyEvent event) {
  187.         FilteredList<ReadableData> filter = new FilteredList<>(data, e -> true);
  188.         searchBox.textProperty().addListener((observable, oldValue, newValue) -> {
  189.             filter.setPredicate(student -> {
  190.  
  191.                 if (newValue == null || newValue.isEmpty()) {
  192.                     return true;
  193.                 }
  194.                 String typedText = newValue.toLowerCase();
  195.                 if (student.getSurname().toLowerCase().indexOf(typedText) != -1) {
  196.  
  197.                     return true;
  198.                 }
  199.                 if (student.getForename().toLowerCase().indexOf(typedText) != -1) {
  200.  
  201.                     return true;
  202.                 }
  203.                 return false;
  204.             });
  205.             SortedList<ReadableData> sortedList = new SortedList<>(filter);
  206.             sortedList.comparatorProperty().bind(MainView.comparatorProperty());
  207.             MainView.setItems(sortedList);
  208.         });
  209.     }
  210.  
  211.  
  212.  
  213.     /**
  214.      * getData
  215.      * Returns an ObservableList of objects
  216.      */
  217.     public ObservableList<ReadableData> getData() {
  218.  
  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.                 // Add attributes to row
  273.                 data.add(row);
  274.             }
  275.         }
  276.         return data;
  277.     }
  278.  
  279. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement