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 839619c..d693491 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 @@ -20,7 +20,9 @@ import java.io.*; import java.net.UnknownHostException; import java.util.Objects; import java.util.Scanner; +import javafx.beans.property.SimpleListProperty; import javafx.beans.property.SimpleStringProperty; +import javafx.collections.ObservableList; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; @@ -372,14 +374,26 @@ public class Client { } - private void updateListOfClients(String data) { + private void updateListOfLobbies(String data) { String[] arr = data.split(":"); + ObservableList list = new SimpleListProperty<>(); int n = arr.length; for (int i = 0; i < n; i = i + 2) { - ChatController.getClient().addClientToList(new SimpleStringProperty(arr[i])); + list.add(new SimpleStringProperty(arr[i])); + ChatController.getClient().addLobbyToList(new SimpleStringProperty(arr[i])); } } + private void updateListOfClients(String data) { + String[] arr = data.split(":"); + ObservableList list = new SimpleListProperty<>(); + int n = arr.length; + for (int i = 0; i < n; i = i + 2) { + list.add(new SimpleStringProperty(arr[i])); + } + ChatController.getClient().getAllClients().setAll(); + } + /** * Starts a new thread, thad adds a message to notificationText in the gameController, waits 3 * seconds and deletes it again. diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ClientModel.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ClientModel.java index 9b2f674..9ad8909 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ClientModel.java +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/ClientModel.java @@ -30,6 +30,8 @@ public class ClientModel { private ObservableList allClients; private ObservableMap idToNameMap; + private ObservableList lobbies; + private HashSet clientsOnServer; @@ -38,6 +40,7 @@ public class ClientModel { this.client = client; this.allClients = FXCollections.observableArrayList(); this.idToNameMap = FXCollections.observableHashMap(); + this.lobbies = FXCollections.observableArrayList(); } //private Number; 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 f6885f6..80789f4 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 @@ -3,26 +3,33 @@ 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.events.ChangeNameButtonPressedEventHandler; import ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.events.LeaveServerButtonPressedEventHandler; +import ch.unibas.dmi.dbis.cs108.multiplayer.helpers.Protocol; import java.net.URL; import java.util.ResourceBundle; +import javafx.beans.property.SimpleStringProperty; import javafx.beans.property.StringProperty; +import javafx.collections.ObservableList; +import javafx.event.ActionEvent; +import javafx.event.EventHandler; import javafx.fxml.FXML; import javafx.fxml.Initializable; import javafx.scene.control.Button; import javafx.scene.control.ListCell; import javafx.scene.control.ListView; +import javafx.scene.control.TextField; import javafx.scene.control.ToolBar; -import javafx.scene.control.TreeView; import javafx.scene.layout.AnchorPane; import javafx.scene.layout.BorderPane; import javafx.scene.layout.HBox; +import javafx.scene.text.Text; public class LoungeSceneViewController implements Initializable { + Protocol protocol; public Button newGameButton; @FXML - private TreeView LobbyTreeView; + private ListView LobbyListView; @FXML private ListView ClientListView; @FXML @@ -50,30 +57,52 @@ public class LoungeSceneViewController implements Initializable { */ @Override public void initialize(URL location, ResourceBundle resources) { - ChangeNameButton.setOnAction(new ChangeNameButtonPressedEventHandler()); + this.protocol = new Protocol(); + ChangeNameButton.setOnAction(event -> changeName()); LeaveServerButton.setOnAction(new LeaveServerButtonPressedEventHandler()); + newGameButton.setOnAction(event -> newGame()); + + ClientListView.se ClientListView.setItems(client.getAllClients()); + LobbyListView.setPlaceholder(new Text("No open lobbies!")); } - public void updateLobbyListView(){ - + public void updateLobbyListView() { + //TODO } - public void updateClientListView(){ - + public void updateClientListView(ObservableList names) { + this.ClientListView.setItems(names); } public void addLobby(LobbyListItem lobby) { - //TODO fix/complete following code: LobbyTreeView. (commented out due to compiling error) + //TODO } - public void addClientToList(ClientListItem player) { - ListCell playerCell = new ListCell<>(); + public void addClientToList(String s) { + ClientListView.getItems().add(new SimpleStringProperty(s)); + } + + public void newGame() { + client.getClient().sendMsgToServer(Protocol.createNewLobby); + } + + public void changeName() { + TextField name = new TextField("Enter new name!"); + this.NTtBToolBar.getItems().add(name); + name.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + client.getClient().sendMsgToServer(Protocol.nameChange + "$" + name.getText()); + NTtBToolBar.getItems().remove(NTtBToolBar.getItems().size()); + } + }); } /** * Utility to set the client model for this class + * * @param client, the client model */ public static void setClient(ClientModel client) { 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 index ddd29bb..52c4b4e 100644 --- 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 @@ -38,7 +38,7 @@ - +