114 lines
4.8 KiB
Java
114 lines
4.8 KiB
Java
package views;
|
|
|
|
import javafx.beans.property.SimpleStringProperty;
|
|
import javafx.collections.FXCollections;
|
|
import javafx.collections.ObservableList;
|
|
import javafx.geometry.Insets;
|
|
import javafx.geometry.Pos;
|
|
import javafx.scene.Scene;
|
|
import javafx.scene.control.*;
|
|
import javafx.scene.layout.BorderPane;
|
|
import javafx.scene.layout.VBox;
|
|
import javafx.stage.Stage;
|
|
import models.Flight;
|
|
import models.Flights;
|
|
import utils.XMLHelper;
|
|
|
|
import java.time.LocalDate;
|
|
import java.time.format.DateTimeFormatter;
|
|
import java.util.List;
|
|
|
|
public class ViewLogbookScreen {
|
|
private Stage stage;
|
|
|
|
public ViewLogbookScreen(Stage stage) {
|
|
this.stage = stage;
|
|
}
|
|
|
|
public void display() {
|
|
Label label = new Label("Fluglogbuch Pegasus");
|
|
label.setStyle("-fx-font-size: 32px; -fx-font-weight: bold; -fx-text-fill: #431EB9; -fx-font-family: 'Arial Black';");
|
|
|
|
TableView<Flight> table = new TableView<>();
|
|
table.setStyle("-fx-font-weight: bold;");
|
|
|
|
TableColumn<Flight, String> datumCol = new TableColumn<>("Datum");
|
|
datumCol.setCellValueFactory(cellData -> {
|
|
LocalDate date = cellData.getValue().getDatum();
|
|
String formattedDate = date != null ? date.format(DateTimeFormatter.ISO_LOCAL_DATE) : "";
|
|
return new SimpleStringProperty(formattedDate);
|
|
});
|
|
|
|
TableColumn<Flight, String> musterCol = new TableColumn<>("Muster");
|
|
musterCol.setCellValueFactory(cellData -> cellData.getValue().musterProperty());
|
|
|
|
TableColumn<Flight, String> abflugortCol = new TableColumn<>("Abflugort");
|
|
abflugortCol.setCellValueFactory(cellData -> cellData.getValue().abflugortProperty());
|
|
|
|
TableColumn<Flight, String> abflugzeitCol = new TableColumn<>("Abflugzeit");
|
|
abflugzeitCol.setCellValueFactory(cellData -> cellData.getValue().abflugzeitProperty());
|
|
|
|
TableColumn<Flight, String> ankunftszeitCol = new TableColumn<>("Ankunftszeit");
|
|
ankunftszeitCol.setCellValueFactory(cellData -> cellData.getValue().ankunftszeitProperty());
|
|
|
|
TableColumn<Flight, Double> tToFCol = new TableColumn<>("Flugdauer");
|
|
tToFCol.setCellValueFactory(cellData -> cellData.getValue().tToFProperty().asObject());
|
|
|
|
TableColumn<Flight, Integer> anzahlLandungenCol = new TableColumn<>("Landungen");
|
|
anzahlLandungenCol.setCellValueFactory(cellData -> cellData.getValue().anzahlLandungenProperty().asObject());
|
|
|
|
TableColumn<Flight, String> pilotCol = new TableColumn<>("Pilot");
|
|
pilotCol.setCellValueFactory(cellData -> cellData.getValue().pilotProperty().get().nameProperty());
|
|
|
|
TableColumn<Flight, Boolean> nachtflugCol = new TableColumn<>("Nachtflug");
|
|
nachtflugCol.setCellValueFactory(cellData -> cellData.getValue().nachtflugProperty().asObject());
|
|
|
|
TableColumn<Flight, String> kommentarCol = new TableColumn<>("Kommentar");
|
|
kommentarCol.setCellValueFactory(cellData -> cellData.getValue().kommentarProperty());
|
|
|
|
table.getColumns().addAll(datumCol, musterCol, abflugortCol, abflugzeitCol, ankunftszeitCol, tToFCol, anzahlLandungenCol, pilotCol, nachtflugCol, kommentarCol);
|
|
|
|
ObservableList<Flight> flightList = FXCollections.observableArrayList();
|
|
Flights flights = (Flights) XMLHelper.loadFromXML("flights.xml");
|
|
if (flights != null) {
|
|
List<Flight> flightEntries = flights.getFlights();
|
|
flightList.addAll(flightEntries);
|
|
}
|
|
table.setItems(flightList);
|
|
|
|
Button editBtn = new Button("Bearbeiten");
|
|
editBtn.setStyle("-fx-background-color: #000000; -fx-text-fill: #FFFFFF; -fx-font-weight: bold;");
|
|
editBtn.setOnAction(e -> {
|
|
Flight selectedFlight = table.getSelectionModel().getSelectedItem();
|
|
if (selectedFlight != null) {
|
|
new EditFlightScreen(stage, selectedFlight).display();
|
|
} else {
|
|
showAlert("Fehler", "Bitte wählen Sie einen Flug aus.");
|
|
}
|
|
});
|
|
|
|
Button backButton = new Button("Zurück");
|
|
backButton.setStyle("-fx-background-color: #000000; -fx-text-fill: #FFFFFF; -fx-font-weight: bold;");
|
|
backButton.setOnAction(e -> new HomeScreen(stage).display());
|
|
|
|
VBox vbox = new VBox(20, label, table, editBtn, backButton);
|
|
vbox.setAlignment(Pos.CENTER);
|
|
vbox.setPadding(new Insets(20));
|
|
vbox.setStyle("-fx-background-color: #E6F2FF;");
|
|
|
|
Scene scene = new Scene(vbox, 800, 600);
|
|
scene.getStylesheets().add(getClass().getResource("/resources/styles.css").toExternalForm());
|
|
|
|
stage.setScene(scene);
|
|
stage.show();
|
|
}
|
|
|
|
private void showAlert(String title, String message) {
|
|
Alert alert = new Alert(Alert.AlertType.ERROR);
|
|
alert.setTitle(title);
|
|
alert.setHeaderText(null);
|
|
alert.setContentText(message);
|
|
alert.showAndWait();
|
|
}
|
|
}
|