From 2bc79b53a7482540a73a4afff02a411186bd2c7b Mon Sep 17 00:00:00 2001 From: Sebastian Lenzlinger Date: Thu, 28 Apr 2022 12:04:08 +0200 Subject: [PATCH] Adding Wrapper Classes for Controlls and corresponding EventHandlers. added different fxml views. --- .../client/gui/ClientListViewController.java | 5 ++ .../client/gui/LobbySceneViewController.java | 5 ++ .../gui/ServerMessageViewController.java | 5 ++ .../client/gui/buttons/ChangeNameButton.java | 7 ++ .../client/gui/buttons/JoinGameButton.java | 7 ++ .../client/gui/buttons/LeaveServerButton.java | 7 ++ .../client/gui/buttons/NewGameButton.java | 7 ++ .../client/gui/chat/ChatController.java | 66 ++++++++++++----- .../ChangeNameButtonPressedEventHandler.java | 17 +++++ .../JoinGameButtonPressedEventHandler.java | 17 +++++ .../LeaveServerButtonPressedEventHandler.java | 17 +++++ .../NewGameButtonPressedEventHandler.java | 17 +++++ .../gui/lounge/LoungeSceneViewController.java | 5 ++ .../client/gui/ClientListView.fxml | 14 ++++ .../client/gui/ServerMessageView.fxml | 14 ++++ .../multiplayer/client/gui/chat/ChatView.fxml | 70 ++++++++----------- .../client/gui/lounge/LoungeSceneView.fxml | 6 ++ 17 files changed, 229 insertions(+), 57 deletions(-) create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ClientListViewController.java create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/LobbySceneViewController.java create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ServerMessageViewController.java create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/buttons/ChangeNameButton.java create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/buttons/JoinGameButton.java create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/buttons/LeaveServerButton.java create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/buttons/NewGameButton.java create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/events/ChangeNameButtonPressedEventHandler.java create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/events/JoinGameButtonPressedEventHandler.java create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/events/LeaveServerButtonPressedEventHandler.java create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/events/NewGameButtonPressedEventHandler.java create mode 100644 src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LoungeSceneViewController.java create mode 100644 src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ClientListView.fxml create mode 100644 src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ServerMessageView.fxml create mode 100644 src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LoungeSceneView.fxml diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ClientListViewController.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ClientListViewController.java new file mode 100644 index 0000000..62bfef6 --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ClientListViewController.java @@ -0,0 +1,5 @@ +package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui; + +public class ClientListViewController { + +} diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/LobbySceneViewController.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/LobbySceneViewController.java new file mode 100644 index 0000000..2d04b3c --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/LobbySceneViewController.java @@ -0,0 +1,5 @@ +package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui; + +public class LobbySceneViewController { + +} diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ServerMessageViewController.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ServerMessageViewController.java new file mode 100644 index 0000000..f7e95be --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ServerMessageViewController.java @@ -0,0 +1,5 @@ +package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui; + +public class ServerMessageViewController { + +} diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/buttons/ChangeNameButton.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/buttons/ChangeNameButton.java new file mode 100644 index 0000000..3ef4194 --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/buttons/ChangeNameButton.java @@ -0,0 +1,7 @@ +package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.buttons; + +import javafx.scene.control.Button; + +public class ChangeNameButton extends Button { + +} diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/buttons/JoinGameButton.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/buttons/JoinGameButton.java new file mode 100644 index 0000000..aed8c2a --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/buttons/JoinGameButton.java @@ -0,0 +1,7 @@ +package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.buttons; + +import java.awt.Button; + +public class JoinGameButton extends Button { + +} diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/buttons/LeaveServerButton.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/buttons/LeaveServerButton.java new file mode 100644 index 0000000..3baabdf --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/buttons/LeaveServerButton.java @@ -0,0 +1,7 @@ +package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.buttons; + +import javafx.scene.control.Button; + +public class LeaveServerButton extends Button { + +} diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/buttons/NewGameButton.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/buttons/NewGameButton.java new file mode 100644 index 0000000..ef6dd67 --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/buttons/NewGameButton.java @@ -0,0 +1,7 @@ +package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.buttons; + +import javafx.scene.control.Button; + +public class NewGameButton extends Button { + +} diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/ChatController.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/ChatController.java index c1664d0..ec9b1fe 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/ChatController.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/ChatController.java @@ -4,6 +4,8 @@ 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.helpers.Protocol; +import com.sun.javafx.scene.control.Properties; +import com.sun.javafx.scene.control.inputmap.KeyBinding; import java.net.URL; import java.util.ResourceBundle; import javafx.application.Platform; @@ -15,16 +17,22 @@ import javafx.event.ActionEvent; import javafx.event.EventHandler; import javafx.fxml.FXML; import javafx.fxml.Initializable; +import javafx.scene.Group; import javafx.scene.Node; import javafx.scene.control.Button; import javafx.scene.control.Label; +import javafx.scene.control.ScrollPane; import javafx.scene.control.SplitPane; import javafx.scene.control.TextArea; import javafx.scene.control.TextField; +import javafx.scene.input.KeyCode; +import javafx.scene.input.KeyEvent; import javafx.scene.layout.Background; +import javafx.scene.layout.GridPane; import javafx.scene.layout.Pane; import javafx.scene.layout.VBox; import javafx.scene.paint.Color; +import javafx.scene.text.TextFlow; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -33,6 +41,12 @@ public class ChatController implements Initializable { public static final Logger LOGGER = LogManager.getLogger(ChatController.class); public static final BudaLogConfig l = new BudaLogConfig(LOGGER); + @FXML + private Group vboxGroup; + @FXML + private GridPane vBoxGridPane; + @FXML + private ScrollPane ChatScrollPane; @FXML private VBox vBoxServerMessage; @FXML @@ -103,32 +117,23 @@ public class ChatController implements Initializable { public void changed(ObservableValue observable, Number oldValue, Number newValue) { vBoxChatMessages.setMaxHeight(newValue.doubleValue()); + ChatScrollPane.setMaxHeight(newValue.doubleValue()*2); } }); - /** * Initialize what happens when the send button is pressed */ sendButton.setOnAction(new EventHandler() { @Override public void handle(ActionEvent event) { - String msg = chatMsgField.getText().split("\\R")[0]; //cut off extra lines, if present. - if (!msg.isEmpty()) { - client.getClient().sendMsgToServer(cmd.toString() + msg); - LOGGER.info("Message trying to send is: " + cmd.toString() + msg); - Label l; - if (cmd.startsWith(whisper)) { - l = new Label("You whispered to " + whisperTargetSelectField.getText() + ": " + msg); - l.setBackground(Background.fill(Color.LAVENDERBLUSH)); - } else { - l = new Label(client.getUsername() + " (you): " + msg); - l.setBackground(Background.fill(Color.LAVENDER)); - } - vBoxChatMessages.getChildren().add(l); - chatMsgField.clear(); - } else { - LOGGER.debug("Trying to send an empty message."); - } + sendChatMsg(); + } + }); + + chatMsgField.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + sendChatMsg(); } }); @@ -158,6 +163,29 @@ public class ChatController implements Initializable { }); } + private void sendChatMsg() { + String msg = chatMsgField.getText();//.split("\\R")[0]; //cut off extra lines, if present. + if (!msg.isEmpty()) { + client.getClient().sendMsgToServer(cmd.toString() + msg); + LOGGER.info("Message trying to send is: " + cmd.toString() + msg); + Label l; + if (cmd.startsWith(whisper)) { + l = new Label("You whispered to " + whisperTargetSelectField.getText() + ": " + msg); + l.setBackground(Background.fill(Color.LAVENDERBLUSH)); + } else { + l = new Label(client.getUsername() + " (you): " + msg); + l.setBackground(Background.fill(Color.LAVENDER)); + l.setWrapText(true); + l.setMaxHeight(Double.MAX_VALUE); + l.setScaleShape(true); + } + vBoxChatMessages.getChildren().add(l); + chatMsgField.clear(); + } else { + LOGGER.debug("Trying to send an empty message."); + } + } + /** * @return the ClientModel whose chat controller this is */ @@ -185,6 +213,8 @@ public class ChatController implements Initializable { */ public void addChatMsgToView(String msg) { Label l = new Label(msg); + l.setWrapText(true); + l.setMaxHeight(Double.MAX_VALUE); if (msg.contains("whispers")) { l.setBackground(Background.fill(Color.SLATEBLUE)); } else { diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/events/ChangeNameButtonPressedEventHandler.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/events/ChangeNameButtonPressedEventHandler.java new file mode 100644 index 0000000..aab222a --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/events/ChangeNameButtonPressedEventHandler.java @@ -0,0 +1,17 @@ +package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.events; + +import javafx.event.ActionEvent; +import javafx.event.EventHandler; + +public class ChangeNameButtonPressedEventHandler implements EventHandler { + + /** + * Invoked when a specific event of the type for which this handler is registered happens. + * + * @param event the event which occurred + */ + @Override + public void handle(ActionEvent event) { + + } +} diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/events/JoinGameButtonPressedEventHandler.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/events/JoinGameButtonPressedEventHandler.java new file mode 100644 index 0000000..fed658b --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/events/JoinGameButtonPressedEventHandler.java @@ -0,0 +1,17 @@ +package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.events; + +import javafx.event.ActionEvent; +import javafx.event.EventHandler; + +public class JoinGameButtonPressedEventHandler implements EventHandler { + + /** + * Invoked when a specific event of the type for which this handler is registered happens. + * + * @param event the event which occurred + */ + @Override + public void handle(ActionEvent event) { + + } +} diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/events/LeaveServerButtonPressedEventHandler.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/events/LeaveServerButtonPressedEventHandler.java new file mode 100644 index 0000000..53ddf74 --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/events/LeaveServerButtonPressedEventHandler.java @@ -0,0 +1,17 @@ +package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.events; + +import javafx.event.ActionEvent; +import javafx.event.EventHandler; + +public class LeaveServerButtonPressedEventHandler implements EventHandler { + + /** + * Invoked when a specific event of the type for which this handler is registered happens. + * + * @param event the event which occurred + */ + @Override + public void handle(ActionEvent event) { + + } +} diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/events/NewGameButtonPressedEventHandler.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/events/NewGameButtonPressedEventHandler.java new file mode 100644 index 0000000..9fb38c7 --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/events/NewGameButtonPressedEventHandler.java @@ -0,0 +1,17 @@ +package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.events; + +import javafx.event.ActionEvent; +import javafx.event.EventHandler; + +public class NewGameButtonPressedEventHandler implements EventHandler { + + /** + * Invoked when a specific event of the type for which this handler is registered happens. + * + * @param event the event which occurred + */ + @Override + public void handle(ActionEvent event) { + + } +} 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 new file mode 100644 index 0000000..9a72b54 --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LoungeSceneViewController.java @@ -0,0 +1,5 @@ +package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.lounge; + +public class LoungeSceneViewController { + +} diff --git a/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ClientListView.fxml b/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ClientListView.fxml new file mode 100644 index 0000000..5a8071e --- /dev/null +++ b/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ClientListView.fxml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ServerMessageView.fxml b/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ServerMessageView.fxml new file mode 100644 index 0000000..2220daf --- /dev/null +++ b/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ServerMessageView.fxml @@ -0,0 +1,14 @@ + + + + + + + + + + + diff --git a/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/ChatView.fxml b/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/ChatView.fxml index 0ee721d..52b6d92 100644 --- a/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/ChatView.fxml +++ b/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/ChatView.fxml @@ -2,6 +2,7 @@ + @@ -9,10 +10,11 @@ + - + @@ -21,45 +23,18 @@ - + - + - - - - - - - - - - - - - - - - - - - - - - - - - + - - - - + - + @@ -69,25 +44,28 @@ - + - - + - + - + - + @@ -108,5 +86,19 @@ + + + + + + + + + + + + + + diff --git a/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LoungeSceneView.fxml b/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LoungeSceneView.fxml new file mode 100644 index 0000000..92ce78d --- /dev/null +++ b/src/main/resources/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/lounge/LoungeSceneView.fxml @@ -0,0 +1,6 @@ + + + + + +