You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
3.9 KiB
112 lines
3.9 KiB
package seng202.group9.GUI;
|
|
|
|
import javafx.event.EventHandler;
|
|
import javafx.fxml.FXML;
|
|
import javafx.scene.control.Alert;
|
|
import javafx.scene.control.Button;
|
|
import javafx.scene.control.TextField;
|
|
import javafx.scene.input.KeyCode;
|
|
import javafx.scene.input.KeyEvent;
|
|
import javafx.scene.layout.GridPane;
|
|
import javafx.stage.Stage;
|
|
import seng202.group9.Controller.DataException;
|
|
import seng202.group9.Controller.Dataset;
|
|
import seng202.group9.Controller.EntryParser;
|
|
import seng202.group9.Controller.Session;
|
|
import seng202.group9.Core.Airline;
|
|
|
|
|
|
/**
|
|
* The GUI controller class for airline_edit_form.fxml.
|
|
* Extends from the abstract class {@link Controller}.
|
|
* Created by Sunguin
|
|
*/
|
|
public class AirlineEditController extends Controller {
|
|
//Setting up text fields for editing data.
|
|
@FXML
|
|
private TextField airlNameEdit;
|
|
@FXML
|
|
private TextField airlAliasEdit;
|
|
@FXML
|
|
private TextField airlIATAEdit;
|
|
@FXML
|
|
private TextField airlICAOEdit;
|
|
@FXML
|
|
private TextField airlCallsignEdit;
|
|
@FXML
|
|
private TextField airlCountryEdit;
|
|
@FXML
|
|
private TextField airlActiveEdit;
|
|
@FXML
|
|
private Button applyButton;
|
|
@FXML
|
|
private GridPane airlineContainer;
|
|
|
|
|
|
//Sets up an empty Dataset to be assigned to the current dataset.
|
|
private Dataset theDataSet = null;
|
|
//Sets up an empty session to be assigned to the current session.
|
|
private Session currentSession = null;
|
|
//Sets up an empty airline to be assigned to the airline being edited.
|
|
private Airline toEdit = null;
|
|
|
|
|
|
/**
|
|
* Loads up the current dataset and current session.
|
|
* Also gets the airline to be edited from the table.
|
|
* Sets the text fields as the airline selected.
|
|
*/
|
|
public void load() {
|
|
theDataSet = getParent().getCurrentDataset();
|
|
currentSession = getParent().getSession();
|
|
|
|
airlineContainer.setOnKeyPressed(new EventHandler<KeyEvent>(){
|
|
@Override
|
|
public void handle(KeyEvent event) {
|
|
if (event.getCode().equals(KeyCode.ENTER)){
|
|
editAirline();
|
|
}
|
|
}
|
|
});
|
|
|
|
toEdit = theDataSet.getAirlineDictionary().get(currentSession.getAirlineToEdit());
|
|
|
|
airlNameEdit.setText(toEdit.getName());
|
|
airlAliasEdit.setText(toEdit.getAlias());
|
|
airlIATAEdit.setText(toEdit.getIATA());
|
|
airlICAOEdit.setText(toEdit.getICAO());
|
|
airlCallsignEdit.setText(toEdit.getCallSign());
|
|
airlCountryEdit.setText(toEdit.getCountryName());
|
|
airlActiveEdit.setText(toEdit.getActive());
|
|
}
|
|
|
|
|
|
/**
|
|
* Edits the current airline and closes the popup window.
|
|
* Takes in the values from the text fields.
|
|
* @see Dataset
|
|
*/
|
|
public void editAirline() {
|
|
//Tries to edit an airport and comes up with a popup if successful and exits the popup.
|
|
//Otherwise an error message will pop up with what is wrong.
|
|
try {
|
|
EntryParser parser = new EntryParser();
|
|
parser.parseAirline(airlNameEdit.getText(), airlAliasEdit.getText(), airlIATAEdit.getText(),
|
|
airlICAOEdit.getText(), airlCallsignEdit.getText(), airlCountryEdit.getText(), airlActiveEdit.getText());
|
|
theDataSet.editAirline(toEdit, airlNameEdit.getText(), airlAliasEdit.getText(), airlIATAEdit.getText(),
|
|
airlICAOEdit.getText(), airlCallsignEdit.getText(), airlCountryEdit.getText(), airlActiveEdit.getText());
|
|
|
|
Alert alert = new Alert(Alert.AlertType.INFORMATION);
|
|
alert.setTitle("Airline Edit Successful");
|
|
alert.setHeaderText("Airline data edited!");
|
|
alert.setContentText("Your airline data has been successfully edited.");
|
|
alert.showAndWait();
|
|
|
|
Stage stage = (Stage) applyButton.getScene().getWindow();
|
|
stage.close();
|
|
} catch (DataException e) {
|
|
System.err.println("RIP Harambe: " + e.getMessage() + "IT WAS TOO SOON");
|
|
}
|
|
}
|
|
}
|