diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/Client.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/Client.java index 36fe472..12ed944 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/Client.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/Client.java @@ -8,6 +8,7 @@ import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.GameStateModel; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.ChatApp; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat.ChatController; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.game.GameController; +import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.lounge.LoungeApp; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.lounge.LoungeSceneViewController; import ch.unibas.dmi.dbis.cs108.multiplayer.helpers.ClientPinger; @@ -40,10 +41,15 @@ public class Client { public ClientPinger clientPinger; private ChatApp chatApp; - private GUI chatGui; + //private GUI chatGui; private ClientModel clientModel; private GameStateModel gameStateModel; private GameController gameController; + + private GUI gui; + + private LoungeApp loungeApp; + //private GUI loungeGui; private LoungeSceneViewController loungeSceneViewController; /** @@ -73,12 +79,17 @@ public class Client { systemName = username; } sendMsgToServer(Protocol.clientLogin + "$" + systemName); + this.chatApp = new ChatApp(new ClientModel(systemName, this)); + //this.chatGui = new GUI(this.chatApp); clientPinger = new ClientPinger(this, this.socket); this.gameStateModel = new GameStateModel(); this.chatApp = new ChatApp(new ClientModel(systemName, this)); ChatApp.setGameController(new GameController(ChatApp.getClientModel(), gameStateModel)); this.chatGui = new GUI(this.chatApp); this.gameController = new GameController(ChatApp.getClientModel(), gameStateModel); + this.loungeApp = new LoungeApp(ChatApp.getClientModel()); + //this.loungeGui = new GUI(this.loungeApp); + this.gui = new GUI(this.chatApp,this.loungeApp); this.loungeSceneViewController = new LoungeSceneViewController(); LoungeSceneViewController.setClient(ChatApp.getClientModel()); } catch (IOException e) { @@ -262,7 +273,7 @@ public class Client { cP.start(); client.userInputListener(); //this one blocks. //Start the GUI - GUI gui = new GUI(client.chatApp); + GUI gui = new GUI(client.chatApp,client.loungeApp); Thread guiThread = new Thread(gui); guiThread.start(); LOGGER.info("7"); @@ -292,7 +303,7 @@ public class Client { cP.start(); client.userInputListener(); //this one blocks. LOGGER.info("7.1"); - Thread guiThread = new Thread(client.chatGui); + Thread guiThread = new Thread(client.gui); LOGGER.info("8"); guiThread.start(); LOGGER.info("9"); diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ChatApp.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ChatApp.java index 2aa522c..a89f608 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ChatApp.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ChatApp.java @@ -1,9 +1,7 @@ -package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui; +package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat; import ch.unibas.dmi.dbis.cs108.BudaLogConfig; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.ClientModel; -import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat.ChatController; -import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.game.GameController; import java.net.URL; import java.util.Objects; import javafx.application.Application; @@ -26,6 +24,8 @@ public class ChatApp extends Application { private ClientModel cModel; private GameController gameC; + private static LoungeSceneViewController loungeSceneViewController; + public ChatApp() { super(); LOGGER.info("Empty ChatApp constructor got called: "); @@ -88,6 +88,10 @@ public class ChatApp extends Application { return chatController; } + public static void setLoungeSceneViewController(LoungeSceneViewController controller) { + loungeSceneViewController = controller; + } + /** * The main entry point for all JavaFX applications. The start method is called after the init @@ -127,6 +131,7 @@ public class ChatApp extends Application { Objects.requireNonNull(chatResource)); primaryStage.setTitle("Night Train To Budapest"); primaryStage.setResizable(true); + primaryStage.setTitle("Chat"); primaryStage.show(); diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/GUI.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/GUI.java index e06bd0b..f3049be 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/GUI.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/GUI.java @@ -1,6 +1,7 @@ package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui; import ch.unibas.dmi.dbis.cs108.BudaLogConfig; +import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat.ChatApp; import javafx.application.Application; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -11,12 +12,21 @@ public class GUI implements Runnable { public static final BudaLogConfig l = new BudaLogConfig(LOGGER); private ChatApp chatApp; - + private LoungeApp loungeApp; public GUI(ChatApp chatApp) { this.chatApp = chatApp; } + public GUI(LoungeApp loungeApp) { + this.loungeApp = loungeApp; + } + + public GUI(ChatApp chatApp, + LoungeApp loungeApp) { + this.chatApp = chatApp; + this.loungeApp = loungeApp; + } /** * When an object implementing interface {@code Runnable} is used to create a thread, starting the @@ -31,6 +41,7 @@ public class GUI implements Runnable { @Override public void run() { LOGGER.info("here"); - Application.launch(this.chatApp.getClass()); + //Application.launch(this.chatApp.getClass()); + Application.launch(this.loungeApp.getClass()); } } diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LoungeApp.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LoungeApp.java new file mode 100644 index 0000000..ce2df98 --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LoungeApp.java @@ -0,0 +1,128 @@ +package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.lounge; + +import ch.unibas.dmi.dbis.cs108.BudaLogConfig; +import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.ClientModel; +import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat.ChatApp; +import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat.ChatController; +import java.net.URL; +import java.util.Objects; +import javafx.application.Application; +import javafx.fxml.FXMLLoader; +import javafx.scene.Parent; +import javafx.scene.Scene; +import javafx.stage.Stage; +import org.apache.logging.log4j.LogManager; +import org.apache.logging.log4j.Logger; + +/** + * Class for debugging the lounge gui scene + */ +public class LoungeApp extends Application { + + public static final Logger LOGGER = LogManager.getLogger(ChatApp.class); + public static final BudaLogConfig l = new BudaLogConfig(LOGGER); + + private static ClientModel clientModel; + private static ChatController chatController; + private ClientModel cModel; + + private static LoungeSceneViewController loungeSceneViewController; + + public LoungeApp() { + super(); + LOGGER.info("Empty ChatApp constructor got called: "); + } + + public LoungeApp(ClientModel clientM) { + clientModel = clientM; + chatController = new ChatController(clientM); + } + + /** + * Sets the ChatController for the Application, needs to be static, but only one application can + * be launched per programm + * + * @param chatC the ChatController to be linked to this chatApp + */ + public static void setChatController(ChatController chatC) { + chatController = chatC; + } + + /** + * Sets the non-static ClientModel field of this class + * + * @param cModel the non static ClientModel to be added + */ + public void setcModel(ClientModel cModel) { + this.cModel = cModel; + } + + public ClientModel getcModel() { + return cModel; + } + + public static void setClientModel(ClientModel clientM) { + clientModel = clientM; + } + + public static ClientModel getClientModel() { + return clientModel; + } + + public ChatController getChatController() { + return chatController; + } + + public static void setLoungeSceneViewController(LoungeSceneViewController controller) { + loungeSceneViewController = controller; + } + + + /** + * The main entry point for all JavaFX applications. The start method is called after the init + * method has returned, and after the system is ready for the application to begin running. + * + *
+ * NOTE: This method is called on the JavaFX Application Thread. + *
+ * + * @param primaryStage the primary stage for this application, onto which the application scene + * can be set. Applications may create other stages, if needed, but they will + * not be primary stages. + * @throws Exception if something goes wrong + */ + @Override + public void start(Stage primaryStage) throws Exception { + this.setcModel(clientModel); + URL resource = ChatApp.class.getResource( + "LoungeSceneView.fxml"); + if (resource == null) { + LOGGER.info("File wasnt found. Name: LoungeSceneView.fxml"); + } + //ChatApp chatApp = new ChatApp(new ClientModel()); + try { + Parent root = FXMLLoader.load( + Objects.requireNonNull(LoungeApp.class.getResource( + "LoungeSceneView.fxml"))); + // TODO bin chatController.getChatPaneRoot() border to root border for rezising +// loungeSceneViewController.getChatAreaHBox().getChildren() +// .add(FXMLLoader.load(Objects.requireNonNull(ChatApp.class.getResource("ChatView.fxml")))); + Scene scene = new Scene(root); + scene.setRoot(root); + primaryStage.setScene(scene); + } catch (Exception e) { + e.printStackTrace(); + } + primaryStage.setResizable(true); + primaryStage.setTitle("Lounge"); + primaryStage.show(); + + + } + + public static void main(String[] args) { + launch(args); + } + +} + diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LoungeSceneViewController.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LoungeSceneViewController.java index 7f3b1c7..479d0a1 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LoungeSceneViewController.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LoungeSceneViewController.java @@ -1,6 +1,7 @@ package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.lounge; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.ClientModel; +import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat.ChatApp; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.events.ChangeNameButtonPressedEventHandler; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.events.LeaveServerButtonPressedEventHandler; import ch.unibas.dmi.dbis.cs108.multiplayer.helpers.Protocol; @@ -9,6 +10,7 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.ResourceBundle; +import javafx.application.Application; import javafx.beans.binding.StringBinding; import javafx.beans.property.SimpleListProperty; import javafx.beans.property.SimpleMapProperty; @@ -57,6 +59,7 @@ public class LoungeSceneViewController implements Initializable { private ToolBar NTtBToolBar; public static ClientModel client; + public static ChatApp chatApp; private ObservableMap