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 db76c8b..c8498d9 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.chat.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; @@ -39,10 +40,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,10 +79,13 @@ public class Client { } sendMsgToServer(Protocol.clientLogin + "$" + systemName); this.chatApp = new ChatApp(new ClientModel(systemName, this)); - this.chatGui = new GUI(this.chatApp); + //this.chatGui = new GUI(this.chatApp); clientPinger = new ClientPinger(this, this.socket); this.gameStateModel = new GameStateModel(); 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) { @@ -257,7 +266,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"); @@ -287,7 +296,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/JClientProtocolParser.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/JClientProtocolParser.java index 2ad6979..a91a6b0 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/JClientProtocolParser.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/JClientProtocolParser.java @@ -61,12 +61,12 @@ public class JClientProtocolParser { break; case Protocol.printToGUI: String substring = msg.substring(6); - int index = msg.indexOf("$"); + int index = substring.indexOf("$"); String parameter = ""; String data = substring; try { - parameter = msg.substring(0,index); - data = msg.substring(index+1); + parameter = substring.substring(0,index); + data = substring.substring(index+1); } catch (Exception e) { LOGGER.warn("No parameter in PTGUI"); } 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 06a9d30..04eee0f 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 @@ -2,6 +2,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 ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.lounge.LoungeApp; import javafx.application.Application; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -12,12 +13,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 @@ -32,6 +42,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/chat/ChatApp.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/ChatApp.java index 84e7947..2cc693d 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/ChatApp.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/ChatApp.java @@ -2,6 +2,7 @@ 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.lounge.LoungeSceneViewController; import java.net.URL; import java.util.Objects; import javafx.application.Application; @@ -21,6 +22,8 @@ public class ChatApp extends Application { private static ChatController chatController; private ClientModel cModel; + private static LoungeSceneViewController loungeSceneViewController; + public ChatApp() { super(); LOGGER.info("Empty ChatApp constructor got called: "); @@ -66,6 +69,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 @@ -94,6 +101,7 @@ public class ChatApp extends Application { Objects.requireNonNull(ChatApp.class.getResource( "ChatView.fxml"))); // TODO bin chatController.getChatPaneRoot() border to root border for rezising + Scene scene = new Scene(root); scene.setRoot(root); primaryStage.setScene(scene); @@ -101,7 +109,7 @@ public class ChatApp extends Application { e.printStackTrace(); } primaryStage.setResizable(true); - primaryStage.setTitle("Chat"); + primaryStage.setTitle("Lounge"); primaryStage.show(); 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