From a15a0a00449387dab418fb5e1feac9233ef0a04d Mon Sep 17 00:00:00 2001 From: Jona Walpert Date: Sat, 14 Mar 2026 17:35:47 +0100 Subject: [PATCH] Style: apply Checkstyle fixes on client side --- .../ch/unibas/dmi/dbis/cs108/casono/Main.java | 30 +- .../dbis/cs108/casono/client/ClientApp.java | 6 +- .../client/ui/chatui/ChatController.java | 50 ++- .../ui/gameui/CasinoGameController.java | 14 +- .../casono/client/ui/gameui/CasinoGameUI.java | 13 +- .../CasinoBrowserController.java | 310 +++++++++--------- .../gameuicomponents/TaskbarController.java | 43 ++- .../lobbyui/LobbyButtonGridManagerTest.java | 4 +- .../LobbyButtonTranslationManagerTest.java | 4 +- 9 files changed, 224 insertions(+), 250 deletions(-) diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/Main.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/Main.java index f7d2273..cbf1cc2 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/Main.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/Main.java @@ -2,24 +2,14 @@ package ch.unibas.dmi.dbis.cs108.casono; import ch.unibas.dmi.dbis.cs108.casono.client.ClientApp; import ch.unibas.dmi.dbis.cs108.casono.server.ServerApp; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; -/** - * Main entry point for Casono application. - * Handles client and server startup. - *

- * Standardkonstruktor für die Anwendung. - */ +/** Main entry point for Casono application. Handles client and server startup. */ public final class Main { - - /** - * Standardkonstruktor. - */ - public Main() { - // Standardkonstruktor - } - /** * Main entry point for Casono. + * * @param args Command line arguments */ public static void main(String[] args) { @@ -50,10 +40,12 @@ public final class Main { } private static void printUsage() { - System.err.println(""" - Usage: - java -jar xyz.jar server - java -jar xyz.jar client : - """); + Logger logger = LogManager.getLogger(Main.class); + logger.fatal( + """ + Usage: + java -jar xyz.jar server + java -jar xyz.jar client : + """); } } diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ClientApp.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ClientApp.java index b45aa83..7fa4291 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ClientApp.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ClientApp.java @@ -8,11 +8,9 @@ import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; /** - * Entry point for the Casono client application. Handles client startup and - * connection parameters. + * Entry point for the Casono client application. Handles client startup and connection parameters. * - *

- * Standardkonstruktor für die Anwendung. + *

Standardkonstruktor für die Anwendung. */ public class ClientApp { diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/chatui/ChatController.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/chatui/ChatController.java index 437c689..b6b273f 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/chatui/ChatController.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/chatui/ChatController.java @@ -12,46 +12,38 @@ import javafx.scene.layout.VBox; /** * Controller-Klasse für das Chat-System innerhalb der Spieloberfläche. * - * Verwaltet das Anzeigen von Chatnachrichten, das Eingabefeld für eigene Nachrichten - * sowie den Senden-Button. Unterstützt drei Arten von Nachrichten: - * - Player-to-Player (Privat) - * - Lobby-Chat (Raum) - * - Globaler Chat (Serverweit) + *

Verwaltet das Anzeigen von Chatnachrichten, das Eingabefeld für eigene Nachrichten sowie den + * Senden-Button. Unterstützt drei Arten von Nachrichten: - Player-to-Player (Privat) - Lobby-Chat + * (Raum) - Globaler Chat (Serverweit) * - * Nachrichten werden in einem {@link VBox}-Container als {@link Label} angezeigt. - * Eigene Nachrichten werden über {@link #onSendToNetwork(String)} an das - * Netzwerkprotokoll weitergeleitet, während eingehende Nachrichten über - * {@link #receiveMessage(String, String)} verarbeitet und angezeigt werden. + *

Nachrichten werden in einem {@link VBox}-Container als {@link Label} angezeigt. Eigene + * Nachrichten werden über {@link #onSendToNetwork(String)} an das Netzwerkprotokoll weitergeleitet, + * während eingehende Nachrichten über {@link #receiveMessage(String, String)} verarbeitet und + * angezeigt werden. * - * Hinweis: Einige TODOs stehen in der zugehörigen FXML-Datei + *

Hinweis: Einige TODOs stehen in der zugehörigen FXML-Datei */ public class ChatController { - @FXML - private VBox chatVBox; + @FXML private VBox chatVBox; - @FXML - private TextField inputField; + @FXML private TextField inputField; - @FXML - private Button sendButton; + @FXML private Button sendButton; - @FXML - private ScrollPane chatScrollPane; + @FXML private ScrollPane chatScrollPane; private static final int CHAT_PADDING = 20; - /** - * Initialisiert den ChatController nach dem Laden der FXML. - */ + /** Initialisiert den ChatController nach dem Laden der FXML. */ public void initialize() { inputField.setOnAction(event -> sendMessage()); chatScrollPane.vvalueProperty().bind(chatVBox.heightProperty()); } /** - * Diese Methode wird vom Senden-Button oder Enter ausgelöst. - * Sie gibt die eigene Nachricht an das Netzwerkprotokoll weiter. + * Diese Methode wird vom Senden-Button oder Enter ausgelöst. Sie gibt die eigene Nachricht an + * das Netzwerkprotokoll weiter. */ @FXML private void sendMessage() { @@ -65,8 +57,9 @@ public class ChatController { } /** - * Diese Funktion muss vom Netzwerkprotokoll aufgerufen werden, - * wenn eine neue Nachricht von einem anderen Spieler kommt. + * Diese Funktion muss vom Netzwerkprotokoll aufgerufen werden, wenn eine neue Nachricht von + * einem anderen Spieler kommt. + * * @param player Name des Spielers * @param message Nachricht des Spielers */ @@ -80,12 +73,13 @@ public class ChatController { } /** - * Schnittstelle zum Netzwerkprotokoll. - * Diese Funktion wird automatisch aufgerufen, wenn der Benutzer eine eigene Nachricht sendet. + * Schnittstelle zum Netzwerkprotokoll. Diese Funktion wird automatisch aufgerufen, wenn der + * Benutzer eine eigene Nachricht sendet. + * * @param message Nachricht, die der Benutzer abgeschickt hat */ public void onSendToNetwork(String message) { // TODO: Netzwerkcode einfügen receiveMessage("Du", message); } -} \ No newline at end of file +} diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/gameui/CasinoGameController.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/gameui/CasinoGameController.java index 91e3075..c96c9bd 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/gameui/CasinoGameController.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/gameui/CasinoGameController.java @@ -7,15 +7,11 @@ import javafx.scene.layout.VBox; /** * Controller für die Casino-Spielfläche. * - * Verantwortlich für: - * - die Darstellung des Pokertisches und der Spieleroberfläche, - * - die Verarbeitung von Benutzereingaben, - * - die Schnittstelle zur GameEngine und zum Netzwerkprotokoll. + *

Verantwortlich für: - die Darstellung des Pokertisches und der Spieleroberfläche, - die + * Verarbeitung von Benutzereingaben, - die Schnittstelle zur GameEngine und zum Netzwerkprotokoll. * - * Hinweise: - * - Die Methode `onTableClick()` dient aktuell nur als Test-Logik. - * Sie ist ggf. nicht mehr funktionsfähig und wird zukünftig - * durch die finale Spielinteraktion ersetzt. + *

Hinweise: - Die Methode `onTableClick()` dient aktuell nur als Test-Logik. Sie ist ggf. nicht + * mehr funktionsfähig und wird zukünftig durch die finale Spielinteraktion ersetzt. */ public class CasinoGameController { @@ -28,4 +24,4 @@ public class CasinoGameController { public void onTableClick() { welcomeText.setText("Einsatz akzeptiert!"); } -} \ No newline at end of file +} diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/gameui/CasinoGameUI.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/gameui/CasinoGameUI.java index c280e3f..f9b5419 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/gameui/CasinoGameUI.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/gameui/CasinoGameUI.java @@ -9,13 +9,11 @@ import javafx.stage.Stage; /** * Hauptklasse für das Casino-Spiel-UI. * - * Startet die JavaFX-Anwendung, lädt die grafische Oberfläche aus der FXML-Datei - * und initialisiert die Haupt-Stage für das Spiel. + *

Startet die JavaFX-Anwendung, lädt die grafische Oberfläche aus der FXML-Datei und + * initialisiert die Haupt-Stage für das Spiel. * - * Aufgaben: - * - Lädt die FXML-Oberfläche "/ui-structure/Casinogameui.fxml". - * - Lädt das Anwendungs-Icon aus "/images/logoinverted.png". - * - Startet die Anwendung im Vollbildmodus. + *

Aufgaben: - Lädt die FXML-Oberfläche "/ui-structure/Casinogameui.fxml". - Lädt das + * Anwendungs-Icon aus "/images/logoinverted.png". - Startet die Anwendung im Vollbildmodus. */ public class CasinoGameUI extends Application { @@ -44,9 +42,10 @@ public class CasinoGameUI extends Application { /** * Startpunkt der Anwendung. + * * @param args Befehlszeilenargumente. */ public static void main(String[] args) { launch(); } -} \ No newline at end of file +} diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/gameui/gameuicomponents/CasinoBrowserController.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/gameui/gameuicomponents/CasinoBrowserController.java index 282582a..e351b7a 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/gameui/gameuicomponents/CasinoBrowserController.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/gameui/gameuicomponents/CasinoBrowserController.java @@ -31,32 +31,22 @@ import javafx.stage.Stage; /** * Experimenteller integrierter Browser für Casono. * - * Diese Klasse implementiert einen einfachen eingebetteten Webbrowser - * auf Basis von {@link javafx.scene.web.WebView}. Der Browser dient - * primär als Hilfswerkzeug innerhalb des Spiels, um externe Inhalte - * wie Webseiten oder Videos anzuzeigen. + *

Diese Klasse implementiert einen einfachen eingebetteten Webbrowser auf Basis von {@link + * javafx.scene.web.WebView}. Der Browser dient primär als Hilfswerkzeug innerhalb des Spiels, um + * externe Inhalte wie Webseiten oder Videos anzuzeigen. * - * Status - * Der Browser befindet sich derzeit in einer experimentellen Phase. - * Einige Sicherheitsmechanismen basieren auf experimentellen - * KI-gestützten Empfehlungen und können sich in zukünftigen - * Versionen noch ändern. + *

Status Der Browser befindet sich derzeit in einer experimentellen Phase. Einige + * Sicherheitsmechanismen basieren auf experimentellen KI-gestützten Empfehlungen und können sich in + * zukünftigen Versionen noch ändern. * - * Zweck - * Der Browser wird aktuell experimentell genutzt, um: - * Pokerregeln direkt im Spiel zu erklären - * Hilfeseiten oder Dokumentationen anzuzeigen - * Videos (z.B. Tutorials oder Erklärungen) über Plattformen wie YouTube abzuspielen + *

Zweck Der Browser wird aktuell experimentell genutzt, um: Pokerregeln direkt im Spiel zu + * erklären Hilfeseiten oder Dokumentationen anzuzeigen Videos (z.B. Tutorials oder Erklärungen) + * über Plattformen wie YouTube abzuspielen * - * Sicherheitsmechanismen - * Da externe Webseiten geladen werden können, wurden einige - * grundlegende Schutzmaßnahmen integriert: - * - HTTPS-Zwang für Webseiten - * - Whitelist für bekannte Domains - * - Warnung bei unbekannten Webseiten - * - JavaScript standardmäßig deaktiviert (man kann es jedoch für Google etc. einschalten) - * - Popup-Blocker - * - Automatische Cookie-Löschung beim Schließen + *

Sicherheitsmechanismen Da externe Webseiten geladen werden können, wurden einige grundlegende + * Schutzmaßnahmen integriert: - HTTPS-Zwang für Webseiten - Whitelist für bekannte Domains - + * Warnung bei unbekannten Webseiten - JavaScript standardmäßig deaktiviert (man kann es jedoch für + * Google etc. einschalten) - Popup-Blocker - Automatische Cookie-Löschung beim Schließen */ public class CasinoBrowserController { @@ -105,76 +95,84 @@ public class CasinoBrowserController { private static boolean javascriptEnabled = false; - /** - * Löscht alle gespeicherten Cookies der aktuellen Browser-Sitzung. - */ + /** Löscht alle gespeicherten Cookies der aktuellen Browser-Sitzung. */ private static void clearCookies() { try { COOKIE_MANAGER.getCookieStore().removeAll(); - } catch (Exception ignored) {} + } catch (Exception ignored) { + } } /** * Öffnet ein neues Browserfenster und lädt eine angegebene Webseite. * - * Falls die Webseite nicht zur Liste vertrauenswürdiger Domains gehört, - * wird der Benutzer gefragt, ob die Seite dennoch geladen werden soll. + *

Falls die Webseite nicht zur Liste vertrauenswürdiger Domains gehört, wird der Benutzer + * gefragt, ob die Seite dennoch geladen werden soll. * * @param url die Startadresse der Webseite, die geladen werden soll */ public static void open(String url) { - Platform.runLater(() -> { - Stage stage = new Stage(); + Platform.runLater( + () -> { + Stage stage = new Stage(); - WebView webView = new WebView(); - WebEngine engine = webView.getEngine(); + WebView webView = new WebView(); + WebEngine engine = webView.getEngine(); - engine.setJavaScriptEnabled(false); + engine.setJavaScriptEnabled(false); - configurePopupBlocker(engine); + configurePopupBlocker(engine); - webView.getStyleClass().add("web-view"); + webView.getStyleClass().add("web-view"); - StackPane webContainer = createWebContainer(webView); + StackPane webContainer = createWebContainer(webView); - Rectangle clip = new Rectangle(); - clip.setArcWidth(CORNER_RADIUS); - clip.setArcHeight(CORNER_RADIUS); - webView.setClip(clip); + Rectangle clip = new Rectangle(); + clip.setArcWidth(CORNER_RADIUS); + clip.setArcHeight(CORNER_RADIUS); + webView.setClip(clip); - webView.widthProperty().addListener((o, a, b) -> - clip.setWidth(b.doubleValue())); - webView.heightProperty().addListener((o, a, b) -> - clip.setHeight(b.doubleValue())); + webView.widthProperty() + .addListener((o, a, b) -> clip.setWidth(b.doubleValue())); + webView.heightProperty() + .addListener((o, a, b) -> clip.setHeight(b.doubleValue())); - ImageView browserLogo = loadLogos(stage); + ImageView browserLogo = loadLogos(stage); - TextField urlField = createUrlField(url); - Label securityLabel = createSecurityLabel(); + TextField urlField = createUrlField(url); + Label securityLabel = createSecurityLabel(); - Button jsToggle = createJsToggle(engine); - Button backBtn = createBackButton(engine); - Button fwdBtn = createForwardButton(engine); - Button reloadBtn = createReloadButton(engine); - Button closeBtn = createCloseButton(stage, webView); - configureUrlEvents(engine, urlField, securityLabel); + Button jsToggle = createJsToggle(engine); + Button backBtn = createBackButton(engine); + Button fwdBtn = createForwardButton(engine); + Button reloadBtn = createReloadButton(engine); + Button closeBtn = createCloseButton(stage, webView); + configureUrlEvents(engine, urlField, securityLabel); - HBox taskbar = new HBox(HBOX_SPACIN, browserLogo, backBtn, fwdBtn, - reloadBtn, urlField, jsToggle, securityLabel, closeBtn - ); + HBox taskbar = + new HBox( + HBOX_SPACIN, + browserLogo, + backBtn, + fwdBtn, + reloadBtn, + urlField, + jsToggle, + securityLabel, + closeBtn); - taskbar.getStyleClass().add("taskbar-browser"); - taskbar.setAlignment(Pos.CENTER_LEFT); + taskbar.getStyleClass().add("taskbar-browser"); + taskbar.setAlignment(Pos.CENTER_LEFT); - Scene scene = createScene(taskbar, webContainer); + Scene scene = createScene(taskbar, webContainer); - configureKeyEvents(scene, engine); + configureKeyEvents(scene, engine); - stage.setScene(scene); - stage.setTitle("Casono Browser"); - loadUrlSafely(engine, url, securityLabel); - stage.show(); - }); + stage.setScene(scene); + stage.setTitle("Casono Browser"); + loadUrlSafely(engine, url, securityLabel); + stage.show(); + }); } /** @@ -197,41 +195,43 @@ public class CasinoBrowserController { * @param engine WebEngine nutzen */ public static void configurePopupBlocker(WebEngine engine) { - engine.setCreatePopupHandler(config -> { - Alert alert = new Alert(Alert.AlertType.WARNING); - alert.setTitle("Popup blockiert"); - alert.setHeaderText(null); - alert.setContentText("Popup wurde aus Sicherheitsgründen blockiert."); + engine.setCreatePopupHandler( + config -> { + Alert alert = new Alert(Alert.AlertType.WARNING); + alert.setTitle("Popup blockiert"); + alert.setHeaderText(null); + alert.setContentText("Popup wurde aus Sicherheitsgründen blockiert."); - try { - var stream = CasinoBrowserController.class.getResourceAsStream(LOGO_PATH); - Image logo = new Image(stream); + try { + var stream = CasinoBrowserController.class.getResourceAsStream(LOGO_PATH); + Image logo = new Image(stream); - // Variable 'streamM' abgekürzt, um das 100-Zeichen-Limit (LineLength) - // einzuhalten - var streamM = CasinoBrowserController.class.getResourceAsStream(LOGO_PATH_MAIN); - Image logomain = new Image(streamM); + // Variable 'streamM' abgekürzt, um das 100-Zeichen-Limit (LineLength) + // einzuhalten + var streamM = + CasinoBrowserController.class.getResourceAsStream(LOGO_PATH_MAIN); + Image logomain = new Image(streamM); - if (logo != null) { - Stage alertStage = (Stage) alert.getDialogPane().getScene().getWindow(); - if (alertStage != null) { - alertStage.getIcons().add(logo); + if (logo != null) { + Stage alertStage = (Stage) alert.getDialogPane().getScene().getWindow(); + if (alertStage != null) { + alertStage.getIcons().add(logo); + } + } + + if (logomain != null) { + ImageView logoView = new ImageView(logomain); + logoView.setFitHeight(LOGO_HEIGHT); + logoView.setPreserveRatio(true); + alert.setGraphic(logoView); + } + } catch (Exception e) { + LOGGER.error("Logo konnte nicht geladen werden"); } - } - if (logomain != null) { - ImageView logoView = new ImageView(logomain); - logoView.setFitHeight(LOGO_HEIGHT); - logoView.setPreserveRatio(true); - alert.setGraphic(logoView); - } - } catch (Exception e) { - LOGGER.error("Logo konnte nicht geladen werden"); - } - - alert.showAndWait(); - return null; - }); + alert.showAndWait(); + return null; + }); } /** @@ -300,25 +300,26 @@ public class CasinoBrowserController { * @param engine WebEngine nutzen * @return Button Umschalten */ - public static Button createJsToggle(WebEngine engine){ + public static Button createJsToggle(WebEngine engine) { Button jsToggle = new Button("JS EINSCHALTEN"); jsToggle.getStyleClass().add("red-button"); - jsToggle.setOnAction(e -> { - javascriptEnabled = !javascriptEnabled; - engine.setJavaScriptEnabled(javascriptEnabled); + jsToggle.setOnAction( + e -> { + javascriptEnabled = !javascriptEnabled; + engine.setJavaScriptEnabled(javascriptEnabled); - if (javascriptEnabled) { - jsToggle.setText("JS AUSSCHALTEN"); - jsToggle.getStyleClass().removeAll("red-button"); - jsToggle.getStyleClass().add("yellow-button"); + if (javascriptEnabled) { + jsToggle.setText("JS AUSSCHALTEN"); + jsToggle.getStyleClass().removeAll("red-button"); + jsToggle.getStyleClass().add("yellow-button"); - } else { - jsToggle.setText("JS EINSCHALTEN"); - jsToggle.getStyleClass().removeAll("yellow-button"); - jsToggle.getStyleClass().add("red-button"); - } - }); + } else { + jsToggle.setText("JS EINSCHALTEN"); + jsToggle.getStyleClass().removeAll("yellow-button"); + jsToggle.getStyleClass().add("red-button"); + } + }); return jsToggle; } @@ -332,11 +333,12 @@ public class CasinoBrowserController { public static Button createBackButton(WebEngine engine) { Button backBtn = new Button("<"); backBtn.getStyleClass().add("gray-button"); - backBtn.setOnAction(e -> { - if (engine.getHistory().getCurrentIndex() > 0) { - engine.getHistory().go(-1); - } - }); + backBtn.setOnAction( + e -> { + if (engine.getHistory().getCurrentIndex() > 0) { + engine.getHistory().go(-1); + } + }); return backBtn; } @@ -350,12 +352,13 @@ public class CasinoBrowserController { public static Button createForwardButton(WebEngine engine) { Button fwdBtn = new Button(">"); fwdBtn.getStyleClass().add("gray-button"); - fwdBtn.setOnAction(e -> { - if (engine.getHistory().getCurrentIndex() < - engine.getHistory().getEntries().size() - 1) { - engine.getHistory().go(1); - } - }); + fwdBtn.setOnAction( + e -> { + if (engine.getHistory().getCurrentIndex() + < engine.getHistory().getEntries().size() - 1) { + engine.getHistory().go(1); + } + }); return fwdBtn; } @@ -383,12 +386,12 @@ public class CasinoBrowserController { public static Button createCloseButton(Stage stage, WebView webView) { Button closeBtn = new Button("X"); closeBtn.getStyleClass().add("red-button"); - closeBtn.setOnAction(e -> { - webView.getEngine().load("about:blank"); - clearCookies(); - stage.close(); - - }); + closeBtn.setOnAction( + e -> { + webView.getEngine().load("about:blank"); + clearCookies(); + stage.close(); + }); return closeBtn; } @@ -400,13 +403,10 @@ public class CasinoBrowserController { * @param urlField URL Textfeld * @param securityLabel Sicherheits Label */ - public static void configureUrlEvents(WebEngine engine, - TextField urlField, - Label securityLabel) { - urlField.setOnAction(e -> - loadUrlSafely(engine, urlField.getText(), securityLabel)); - engine.locationProperty().addListener((obs, o, n) -> - urlField.setText(n)); + public static void configureUrlEvents( + WebEngine engine, TextField urlField, Label securityLabel) { + urlField.setOnAction(e -> loadUrlSafely(engine, urlField.getText(), securityLabel)); + engine.locationProperty().addListener((obs, o, n) -> urlField.setText(n)); } /** @@ -423,8 +423,7 @@ public class CasinoBrowserController { Scene scene = new Scene(root, WINDOW_WIDTH, WINDOW_HEIGHT); - var css = CasinoBrowserController.class - .getResource("/ui-structure/casinogameui.css"); + var css = CasinoBrowserController.class.getResource("/ui-structure/casinogameui.css"); if (css != null) { scene.getStylesheets().add(css.toExternalForm()); @@ -440,25 +439,23 @@ public class CasinoBrowserController { * @param engine WebEngine nutzen */ public static void configureKeyEvents(Scene scene, WebEngine engine) { - scene.setOnKeyPressed(event -> { - if (event.getCode() == KeyCode.F5) { - engine.reload(); - } - }); + scene.setOnKeyPressed( + event -> { + if (event.getCode() == KeyCode.F5) { + engine.reload(); + } + }); } /** - * Lädt eine URL in den Browser, nachdem grundlegende Sicherheitsprüfungen - * durchgeführt wurden. + * Lädt eine URL in den Browser, nachdem grundlegende Sicherheitsprüfungen durchgeführt wurden. * - * Vor dem Laden einer Seite werden folgende Prüfungen durchgeführt: - * - Überprüfung des Protokolls (nur HTTPS erlaubt) - * - Überprüfung der Domain gegen eine Whitelist - * - Schutz vor Domain-Spoofing (Domain-Vortäuschung) + *

Vor dem Laden einer Seite werden folgende Prüfungen durchgeführt: - Überprüfung des + * Protokolls (nur HTTPS erlaubt) - Überprüfung der Domain gegen eine Whitelist - Schutz vor + * Domain-Spoofing (Domain-Vortäuschung) * - * Falls eine Domain nicht als vertrauenswürdig eingestuft wird, - * muss der Benutzer bestätigen, dass die Seite dennoch geöffnet - * werden darf. + *

Falls eine Domain nicht als vertrauenswürdig eingestuft wird, muss der Benutzer + * bestätigen, dass die Seite dennoch geöffnet werden darf. * * @param engine der WebEngine-Renderer des Browsers * @param url die zu ladende Webadresse @@ -485,8 +482,9 @@ public class CasinoBrowserController { } // Sicherer Domain Check - boolean trusted = TRUSTED_DOMAINS.stream().anyMatch(domain -> - host.equals(domain) || host.endsWith("." + domain)); + boolean trusted = + TRUSTED_DOMAINS.stream() + .anyMatch(domain -> host.equals(domain) || host.endsWith("." + domain)); if (!trusted) { if (!showUnknownWebsiteAlert(host)) { @@ -515,9 +513,9 @@ public class CasinoBrowserController { alert.setTitle("Unbekannte Website"); alert.setHeaderText("Diese Website ist nicht bekannt"); alert.setContentText( - host + "\n\nDiese Seite ist nicht vom " + - "Casono Browser verifiziert.\nMöchten Sie sie trotzdem öffnen?" - ); + host + + "\n\nDiese Seite ist nicht vom " + + "Casono Browser verifiziert.\nMöchten Sie sie trotzdem öffnen?"); var stream = CasinoBrowserController.class.getResourceAsStream(LOGO_PATH); Image logo = new Image(stream); @@ -541,4 +539,4 @@ public class CasinoBrowserController { return true; } -} \ No newline at end of file +} diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/gameui/gameuicomponents/TaskbarController.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/gameui/gameuicomponents/TaskbarController.java index 79f1615..33e1e32 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/gameui/gameuicomponents/TaskbarController.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/gameui/gameuicomponents/TaskbarController.java @@ -11,10 +11,8 @@ import javafx.scene.layout.HBox; /** * Controller für die interaktive Taskleiste innerhalb der Poker-UI. * - * Verantwortlich für: - * - Drag-and-Drop-Verschieben der Taskleiste, - * - Eingabe und Verwaltung von Spieleinsätzen, - * - Steuerung allgemeiner Menüfunktionen wie Exit. + *

Verantwortlich für: - Drag-and-Drop-Verschieben der Taskleiste, - Eingabe und Verwaltung von + * Spieleinsätzen, - Steuerung allgemeiner Menüfunktionen wie Exit. */ public class TaskbarController { @@ -32,8 +30,8 @@ public class TaskbarController { private static final int CREDIT_STEP = 5; /** - * Wird aufgerufen, wenn die Taskleiste mit der Maus gedrückt wird. - * Speichert die relative Position, um später korrekt zu verschieben. + * Wird aufgerufen, wenn die Taskleiste mit der Maus gedrückt wird. Speichert die relative + * Position, um später korrekt zu verschieben. * * @param event Das Mausereignis */ @@ -44,11 +42,11 @@ public class TaskbarController { } /** - * Wird aufgerufen, während die Taskleiste mit der Maus gezogen wird. - * Aktualisiert die Position und skaliert die Taskleiste leicht zur visuellen Rückmeldung. + * Wird aufgerufen, während die Taskleiste mit der Maus gezogen wird. Aktualisiert die Position + * und skaliert die Taskleiste leicht zur visuellen Rückmeldung. * - * TODO: Es muss noch gefixt werden, dass die Taskleiste nicht aus dem - * Fenster verschwinden kann. + *

TODO: Es muss noch gefixt werden, dass die Taskleiste nicht aus dem Fenster verschwinden + * kann. * * @param event Das Mausereignis */ @@ -62,8 +60,8 @@ public class TaskbarController { } /** - * Wird aufgerufen, wenn die Maus über der Taskleiste losgelassen wird. - * Setzt die Skalierung der Taskleiste wieder auf Normalgröße. + * Wird aufgerufen, wenn die Maus über der Taskleiste losgelassen wird. Setzt die Skalierung der + * Taskleiste wieder auf Normalgröße. * * @param event Das Mausereignis */ @@ -86,8 +84,8 @@ public class TaskbarController { } /** - * Wird aufgerufen, wenn der Submit-Button in der Taskleiste gedrückt wird. - * Löst die Verarbeitung des Einsatzes aus. + * Wird aufgerufen, wenn der Submit-Button in der Taskleiste gedrückt wird. Löst die + * Verarbeitung des Einsatzes aus. */ @FXML private void onInputSubmittedAction() { @@ -97,8 +95,8 @@ public class TaskbarController { /** * Wird aufgerufen, wenn der Exit-Button in der Taskleiste gedrückt wird. * - * TODO: Logik implementieren, um zur Lobby zurückzukehren, - * ohne die gesamte Anwendung zu schließen (kein System.exit/Platform.exit). + *

TODO: Logik implementieren, um zur Lobby zurückzukehren, ohne die gesamte Anwendung zu + * schließen (kein System.exit/Platform.exit). */ @FXML private void onExitButtonClick() { @@ -106,10 +104,9 @@ public class TaskbarController { } /** - * Verarbeitet den im Textfeld eingegebenen Einsatz. - * Es werden ausschließlich ganzzahlige Werte im Bereich von 5 bis 100.000 - * Credits akzeptiert, die einem Vielfachen von 5 entsprechen (5er-Schritte). - * Der Einsatz wird aktuell nur auf der Konsole ausgegeben. + * Verarbeitet den im Textfeld eingegebenen Einsatz. Es werden ausschließlich ganzzahlige Werte + * im Bereich von 5 bis 100.000 Credits akzeptiert, die einem Vielfachen von 5 entsprechen + * (5er-Schritte). Der Einsatz wird aktuell nur auf der Konsole ausgegeben. */ private void processBet() { String input = taskbarInput.getText(); @@ -131,11 +128,11 @@ public class TaskbarController { /** * Öffnet den integrierten Casono Webbrowser. * - * TODO: Ersetze die Start-URL durch die offizielle Projekt-Website (z.B. Tipps & Tricks Seite), - * sobald die Inhalte für Strategien und Support bereitstehen. + *

TODO: Ersetze die Start-URL durch die offizielle Projekt-Website (z.B. Tipps & Tricks + * Seite), sobald die Inhalte für Strategien und Support bereitstehen. */ @FXML private void onBrowserButtonClick() { CasinoBrowserController.open("wikipedia.org"); } -} \ No newline at end of file +} diff --git a/src/test/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/LobbyButtonGridManagerTest.java b/src/test/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/LobbyButtonGridManagerTest.java index 67aaae4..da38f8e 100644 --- a/src/test/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/LobbyButtonGridManagerTest.java +++ b/src/test/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/LobbyButtonGridManagerTest.java @@ -1,9 +1,9 @@ -package ch.unibas.dmi.dbis.cs108.casono.client.ui.lobbyui; -import static org.junit.jupiter.api.Assertions.*; +package ch.unibas.dmi.dbis.cs108.casono.client.ui.lobbyui; import javafx.scene.layout.GridPane; import org.junit.jupiter.api.*; +import static org.junit.jupiter.api.Assertions.*; class LobbyButtonGridManagerTest { LobbyButtonGridManager gridManager; diff --git a/src/test/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/LobbyButtonTranslationManagerTest.java b/src/test/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/LobbyButtonTranslationManagerTest.java index d19532a..152eb0c 100644 --- a/src/test/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/LobbyButtonTranslationManagerTest.java +++ b/src/test/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/LobbyButtonTranslationManagerTest.java @@ -1,9 +1,9 @@ -package ch.unibas.dmi.dbis.cs108.casono.client.ui.lobbyui; -import static org.junit.jupiter.api.Assertions.*; +package ch.unibas.dmi.dbis.cs108.casono.client.ui.lobbyui; import java.util.Map; import org.junit.jupiter.api.*; +import static org.junit.jupiter.api.Assertions.*; class LobbyButtonTranslationManagerTest { LobbyButtonTranslationManager manager;