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

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");
}
}
}