Pegasus/src/views/HomeScreen.java

120 lines
5.1 KiB
Java

package views;
import javafx.geometry.Insets;
import javafx.geometry.Pos;
import javafx.scene.Scene;
import javafx.scene.control.Alert;
import javafx.scene.control.Button;
import javafx.scene.control.Label;
import javafx.scene.control.Tooltip;
import javafx.scene.image.Image;
import javafx.scene.image.ImageView;
import javafx.scene.layout.BorderPane;
import javafx.scene.layout.GridPane;
import javafx.scene.layout.VBox;
import javafx.scene.shape.Circle;
import javafx.stage.Stage;
import models.Pilots;
import utils.XMLHelper;
public class HomeScreen {
private Stage stage;
public HomeScreen(Stage stage) {
this.stage = stage;
}
public void display() {
// Titel des Projekts
Label title = new Label("Fluglogbuch Pegasus");
title.setStyle("-fx-font-size: 32px; -fx-font-weight: bold; -fx-text-fill: #000000; -fx-font-family: 'Arial Black';");
Button btn1 = createButton("Flug erfassen", "/resources/icons/add_flight_icon.png", "Erfassen Sie einen neuen Flug");
Button btn2 = createButton("Logbuch einsehen", "/resources/icons/view_logbook_icon.png", "Sehen Sie das Fluglogbuch ein");
Button btn3 = createButton("Pilotenprofil verwalten", "/resources/icons/manage_pilot_icon.png", "Verwalten Sie das Profil eines Piloten");
Button btn4 = createButton("Piloten löschen", "/resources/icons/delete_pilot_icon.png", "Löschen Sie einen Piloten");
Button helpBtn = createHelpButton("/resources/icons/help_icon.png", "Hilfe anzeigen");
Button pilotsBtn = createButton("Alle Piloten anzeigen", "/resources/icons/view_pilot_icon.png", "Alle Piloten anzeigen");
Button editPilotsBtn = createButton("Pilot bearbeiten", "/resources/icons/edit_pilot_icon.png", "Bearbeiten Sie ein Pilotenprofil");
btn1.setOnAction(e -> new AddFlightScreen(stage).display());
btn2.setOnAction(e -> new ViewLogbookScreen(stage).display());
btn3.setOnAction(e -> new ManagePilotProfileScreen(stage).display());
btn4.setOnAction(e -> new DeletePilotScreen(stage).display());
helpBtn.setOnAction(e -> new HelpScreen(stage).display());
pilotsBtn.setOnAction(e -> new PilotView(stage).displayAllPilots());
editPilotsBtn.setOnAction(e -> {
Pilots pilots = (Pilots) XMLHelper.loadFromXML("pilots.xml");
if (pilots != null && !pilots.getPilots().isEmpty()) {
new ManagePilotProfileScreen(stage).displayEditSelection(pilots); // Aufruf mit Pilotenliste
} else {
showAlert("Keine Piloten", "Es sind keine Piloten zum Bearbeiten verfügbar.");
}
});
GridPane gridPane = new GridPane();
gridPane.setPadding(new Insets(20));
gridPane.setHgap(20);
gridPane.setVgap(20);
gridPane.setAlignment(Pos.CENTER);
gridPane.add(btn1, 0, 0);
gridPane.add(btn2, 1, 0);
gridPane.add(btn3, 0, 1);
gridPane.add(pilotsBtn, 1, 1);
gridPane.add(editPilotsBtn, 0, 2);
gridPane.add(btn4, 1, 2);
VBox vbox = new VBox(20, title, gridPane);
vbox.setAlignment(Pos.CENTER);
BorderPane borderPane = new BorderPane();
borderPane.setCenter(vbox);
borderPane.setRight(helpBtn);
BorderPane.setAlignment(helpBtn, Pos.TOP_RIGHT);
BorderPane.setMargin(helpBtn, new Insets(10));
Scene scene = new Scene(borderPane, 800, 600);
scene.getStylesheets().add(getClass().getResource("/resources/styles.css").toExternalForm());
stage.setScene(scene);
stage.setTitle("Fluglogbuch Pegasus");
stage.show();
}
private Button createButton(String text, String iconPath, String tooltipText) {
Image icon = new Image(getClass().getResourceAsStream(iconPath));
ImageView iconView = new ImageView(icon);
iconView.setFitHeight(20);
iconView.setFitWidth(20);
Button button = new Button(text, iconView);
button.setTooltip(new Tooltip(tooltipText));
button.setStyle("-fx-background-color: #000000; -fx-text-fill: #FFFFFF; -fx-font-weight: bold;");
button.setPrefSize(250, 50);
return button;
}
private Button createHelpButton(String iconPath, String tooltipText) {
Image icon = new Image(getClass().getResourceAsStream(iconPath));
ImageView iconView = new ImageView(icon);
iconView.setFitHeight(30);
iconView.setFitWidth(30);
Button button = new Button("", iconView);
button.setTooltip(new Tooltip(tooltipText));
button.setStyle("-fx-background-color: #000000; -fx-text-fill: #FFFFFF; -fx-font-weight: bold;");
button.setShape(new Circle(25)); // Set button shape to circle
button.setMinSize(50, 50); // Set the min size to ensure it remains circular
button.setMaxSize(50, 50); // Set the max size to ensure it remains circular
return button;
}
private void showAlert(String title, String message) {
Alert alert = new Alert(Alert.AlertType.INFORMATION);
alert.setTitle(title);
alert.setHeaderText(null);
alert.setContentText(message);
alert.showAndWait();
}
}