Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.io.IOException;
- import javafx.collections.FXCollections;
- import javafx.collections.ObservableList;
- import javafx.collections.transformation.SortedList;
- import javafx.event.ActionEvent;
- import javafx.fxml.FXML;
- import javafx.fxml.Initializable;
- import javafx.scene.control.ChoiceBox;
- import javafx.scene.control.TableColumn;
- import javafx.scene.control.TableView;
- import javafx.scene.control.TextField;
- import javafx.scene.control.cell.PropertyValueFactory;
- import javafx.scene.input.KeyEvent;
- import javafx.collections.transformation.FilteredList;
- import javafx.scene.input.MouseEvent;
- import java.net.URL;
- import java.util.ArrayList;
- import java.util.ResourceBundle;
- import javafx.fxml.FXMLLoader;
- import javafx.scene.Node;
- import javafx.scene.Parent;
- import javafx.scene.Scene;
- import javafx.stage.Stage;
- public class MainViewController implements Initializable {
- ObservableList<ReadableData> data = FXCollections.observableArrayList();
- /**
- * Initialise TableView
- */
- @FXML
- private TableView<ReadableData> MainView;
- @FXML
- private TableColumn<ReadableData, String> hallNumberCol;
- @FXML
- private TableColumn<ReadableData, String> roomNumberCol;
- @FXML
- private TableColumn<ReadableData, String> forenameCol;
- @FXML
- private TableColumn<ReadableData, String> surnameCol;
- @FXML
- private TableColumn<ReadableData, String> studentNumCol;
- @FXML
- private TableColumn<ReadableData, String> leaseNumberCol;
- @FXML
- private TableColumn<ReadableData, String> cleaningStatusCol;
- @FXML
- private TableColumn<ReadableData, String> roomStatusCol;
- @FXML
- private ChoiceBox cleaningStatusBox;
- @FXML
- private TextField roomStatusBox;
- @FXML
- private TextField searchBox;
- @FXML
- private TextField hallNumberBox;
- @FXML
- private TextField roomNumberBox;
- @FXML
- private TextField leaseNumberBox;
- @FXML
- private TextField forenameBox;
- @FXML
- private TextField surnameBox;
- @FXML
- private TextField studentIdBox;
- @FXML
- public void logOut(ActionEvent event) throws IOException
- {
- Parent loginScreenParent = FXMLLoader.load(getClass().getResource("LoginScreen.fxml"));
- Scene loginScreen = new Scene(loginScreenParent);
- //This line gets the Stage information
- Stage window = (Stage)((Node)event.getSource()).getScene().getWindow();
- window.setScene(loginScreen);
- window.show();
- }
- /**
- * Initialise the controller class
- */
- @Override
- public void initialize(URL url, ResourceBundle resourceBundle) {
- // Set the columns in the table
- hallNumberCol.setCellValueFactory(
- new PropertyValueFactory<ReadableData, String>("hallNumber"));
- roomNumberCol.setCellValueFactory(
- new PropertyValueFactory<ReadableData, String>("roomNumber"));
- studentNumCol.setCellValueFactory(
- new PropertyValueFactory<ReadableData, String>("studentNumber"));
- forenameCol.setCellValueFactory(
- new PropertyValueFactory<ReadableData, String>("forename"));
- surnameCol.setCellValueFactory(
- new PropertyValueFactory<ReadableData, String>("surname"));
- leaseNumberCol.setCellValueFactory(
- new PropertyValueFactory<ReadableData, String>("leaseNumber"));
- cleaningStatusCol.setCellValueFactory(
- new PropertyValueFactory<ReadableData, String>("cleaningStatus"));
- roomStatusCol.setCellValueFactory(
- new PropertyValueFactory<ReadableData, String>("roomStatus"));
- MainView.setItems(getData());
- cleaningStatusBox.getItems().addAll("Clean","Dirty","Offline");
- // Gets selected row when clicked
- MainView.setOnMouseClicked((MouseEvent event) -> {
- if (event.getClickCount() > 1) {
- getRow();
- }
- });
- onWardenLogin();
- }
- public void onWardenLogin()
- {
- if(LoginScreenController.manager != true);
- surnameBox.setDisable(true);
- forenameBox.setDisable(true);
- studentIdBox.setDisable(true);
- leaseNumberBox.setDisable(true);
- data.removeIf(obj -> !obj.getHallNumber().contains("1"));
- }
- public void getRow() {
- // check the table's selected item and get selected item
- if (MainView.getSelectionModel().getSelectedItem() != null) {
- ReadableData selectedData = MainView.getSelectionModel().getSelectedItem();
- hallNumberBox.setText(selectedData.getHallNumber());
- roomNumberBox.setText((selectedData.getRoomNumber()));
- studentIdBox.setText((selectedData.getStudentNumber()));
- forenameBox.setText((selectedData.getForename()));
- surnameBox.setText((selectedData.getSurname()));
- leaseNumberBox.setText((selectedData.getLeaseNumber()));
- roomStatusBox.setText((selectedData.getRoomStatus()));
- //cleaningStatusBox.getSelectionModel().setSelectedItem(selectedData);
- }
- }
- @FXML
- private void update(){
- ReadableData selectedData = MainView.getSelectionModel().getSelectedItem();
- //Hall hall = selectedData.getHall();
- Lease lease = selectedData.getLease();
- Room room = selectedData.getRoom();
- selectedData.setStudentNumber(studentIdBox.getText());
- selectedData.setForename(forenameBox.getText());
- selectedData.setSurname(surnameBox.getText());
- selectedData.setLeaseNumber(leaseNumberBox.getText());
- selectedData.setCleaningStatus(cleaningStatusBox.getSelectionModel().getSelectedItem().toString());
- if (lease != null)
- {
- Student student = lease.getStudent();
- student.setForename(forenameBox.getText());
- student.setSurname(surnameBox.getText());
- student.setStudentID(Integer.valueOf(studentIdBox.getText()));
- lease.setLeaseNumber(Integer.valueOf(leaseNumberBox.getText()));
- if (room.isOccupied())
- {
- roomStatusBox.setText(room.getRoomStatus());
- }
- }
- }
- /**
- * Search - NOT WORKING
- * Need to call getData() somehow
- * @param event
- */
- @FXML
- private void searchRecord(KeyEvent event) {
- FilteredList<ReadableData> filter = new FilteredList<>(data, e -> true);
- searchBox.textProperty().addListener((observable, oldValue, newValue) -> {
- filter.setPredicate(student -> {
- if (newValue == null || newValue.isEmpty()) {
- return true;
- }
- String typedText = newValue.toLowerCase();
- if (student.getSurname().toLowerCase().indexOf(typedText) != -1) {
- return true;
- }
- if (student.getForename().toLowerCase().indexOf(typedText) != -1) {
- return true;
- }
- return false;
- });
- SortedList<ReadableData> sortedList = new SortedList<>(filter);
- sortedList.comparatorProperty().bind(MainView.comparatorProperty());
- MainView.setItems(sortedList);
- });
- }
- /**
- * getData
- * Returns an ObservableList of objects
- * @return
- */
- public ObservableList<ReadableData> getData() {
- // Singleton Method gets single instance of the class
- UWESystem uweAccommodationSystemController = UWESystem.getInstance();
- // Create the halls
- uweAccommodationSystemController.createHalls();
- ArrayList<Hall> halls = uweAccommodationSystemController.getHalls();
- // Iterate through halls and rooms and get data for table
- for (int i = 0; i < halls.size(); i++) {
- Hall currentHall = halls.get(i);
- ArrayList<Room> rooms = currentHall.getRooms();
- for (int j = 0; j < rooms.size(); j++) {
- Room room = rooms.get(j);
- Student student = null;
- String leaseString = "";
- Lease lease = null;
- if (room.isOccupied()) {
- lease = room.getLease();
- student = lease.getStudent();
- leaseString = String.valueOf(lease.getLeaseNumber());
- }
- String studentId = "";
- String studentForename = "";
- String studentSurname = "";
- if (student != null) {
- studentId = String.valueOf(student.getStudentID());
- studentForename = String.valueOf(student.getForename());
- studentSurname = String.valueOf(student.getSurname());
- }
- ReadableData row = new ReadableData(
- String.valueOf(currentHall.getHallNumber()),
- String.valueOf(room.getRoomNumber()),
- studentId,
- studentForename,
- studentSurname,
- leaseString,
- room.getCleaningStatus(),
- room.getRoomStatus(),
- currentHall,
- room,
- lease);
- data.add(row);
- }
- }
- return data;
- MainView.refresh();
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement