From 65a93a8c8201d19b91a1928958e67cb00473cf63 Mon Sep 17 00:00:00 2001 From: Jona Walpert Date: Sun, 12 Apr 2026 10:52:55 +0200 Subject: [PATCH] Feat: Reuse shared ClientService in CasinomainuiController Make the controller use ClientApp.getSharedClientService() if available; otherwise fall back to creating a new ClientService. Add/cleanup Javadoc. --- .../ui/lobbyui/CasinomainuiController.java | 37 ++++++++++++------- 1 file changed, 24 insertions(+), 13 deletions(-) diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/CasinomainuiController.java b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/CasinomainuiController.java index d18d36f..701f092 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/CasinomainuiController.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/casono/client/ui/lobbyui/CasinomainuiController.java @@ -1,5 +1,6 @@ package ch.unibas.dmi.dbis.cs108.casono.client.ui.lobbyui; +import ch.unibas.dmi.dbis.cs108.casono.client.ClientApp; import ch.unibas.dmi.dbis.cs108.casono.client.network.ClientService; import ch.unibas.dmi.dbis.cs108.casono.client.network.LobbyClient; import javafx.application.Platform; @@ -36,12 +37,16 @@ public class CasinomainuiController { private int nextButtonId = 1; private LobbyClient lobbyClient; - /** Default constructor for dependency injection by FXMLLoader. */ + /** Default constructor used by FXMLLoader. */ public CasinomainuiController() { // Default constructor } - /** Initializes the UI components and sets default values. */ + /** + * Initializes the UI components and sets default values. If a shared {@link + * ch.unibas.dmi.dbis.cs108.casono.client.network.ClientService} exists (created at application + * start), the controller reuses it so the connection remains open and already-logged-in. + */ @FXML public void initialize() { titleLabel.setText("Casono"); @@ -51,16 +56,18 @@ public class CasinomainuiController { translationManager = LobbyButtonTranslationManager.getInstance(); String host = System.getProperty("casono.server.host"); int port = Integer.parseInt(System.getProperty("casono.server.port")); - ClientService clientService; - try { - clientService = new ClientService(host, port); - } catch (RuntimeException e) { - LOGGER.warn( - "Could not connect to server {}:{} — starting in offline mode: {}", - host, - port, - e.getMessage()); - clientService = new ClientService(true); // offline mode + ClientService clientService = ClientApp.getSharedClientService(); + if (clientService == null) { + try { + clientService = new ClientService(host, port); + } catch (RuntimeException e) { + LOGGER.warn( + "Could not connect to server {}:{} — starting in offline mode: {}", + host, + port, + e.getMessage()); + clientService = new ClientService(true); // offline mode + } } gridManager = new LobbyButtonGridManager( @@ -117,7 +124,11 @@ public class CasinomainuiController { Platform.exit(); } - /** Handles creation of a new lobby button. */ + /** + * Handles creation of a new lobby button. Attempts to create a lobby on the server via the + * {@link LobbyButtonGridManager} and registers the new button in the local translation manager. + * Errors are logged and displayed as an informational alert. + */ @FXML public void handleCreateLobbyButton() { if (translationManager.isFull()) {