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 e0fe4ac..6c39dc2 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 @@ -1,19 +1,28 @@ package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat; +import ch.unibas.dmi.dbis.cs108.multiplayer.client.Client; import java.net.URL; import java.util.ResourceBundle; +import javafx.beans.property.BooleanProperty; +import javafx.beans.property.SimpleBooleanProperty; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; +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.SplitPane; import javafx.scene.control.TextArea; import javafx.scene.control.TextField; import javafx.scene.layout.VBox; public class ChatController implements Initializable { + @FXML + private SplitPane chatPaneRoot; @FXML private VBox vBoxChatMessages; - @FXML private Button sendButton; @FXML @@ -21,6 +30,14 @@ public class ChatController implements Initializable { @FXML private TextArea chatMsgField; + private Client client; + + private SimpleBooleanProperty whisperTargetChosen; + + public ChatController(Client client) { + this.client = client; + whisperTargetChosen = new SimpleBooleanProperty(); + } /** @@ -33,5 +50,46 @@ public class ChatController implements Initializable { @Override public void initialize(URL location, ResourceBundle resources) { + vBoxChatMessages.heightProperty().addListener(new ChangeListener() { + @Override + public void changed(ObservableValue observable, Number oldValue, + Number newValue) { + vBoxChatMessages.setMaxHeight(newValue.doubleValue()); + } + }); + + sendButton.setOnAction(new EventHandler() { + @Override + public void handle(ActionEvent event) { + String msg = chatMsgField.getText(); + if (!msg.isEmpty()) { + + } + } + }); + + whisperTargetChosen.bind(whisperTargetSelectField.textProperty().isEmpty()); + + whisperTargetSelectField.textProperty().addListener(new ChangeListener() { + @Override + public void changed(ObservableValue observable, String oldValue, + String newValue) { + whisperTargetSelectField.setText(newValue); + } + }); + } + + /** + * @return the client who's chat controller this is + */ + public Client getClient() { + return client; + } + + /** + * @param client who's gui controller this should be + */ + public void setClient(Client client) { + this.client = client; } } diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/outChatCmd.java b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/outChatCmd.java new file mode 100644 index 0000000..5ac79ad --- /dev/null +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/multiplayer/client/gui/chat/outChatCmd.java @@ -0,0 +1,41 @@ +package ch.unibas.dmi.dbis.cs108.multiplayer.client.gui.chat; + +import ch.unibas.dmi.dbis.cs108.multiplayer.helpers.Protocol; +import javafx.beans.value.ChangeListener; +import javafx.beans.value.ObservableValue; + +public class outChatCmd implements ChangeListener { + + private String cmd; + private static final Protocol prtcl = new Protocol(); + private static final String whisper = Protocol.whisper; + private static final String chatToAll = Protocol.chatMsgToAll; + private static final String chatToLobby = Protocol.chatMsgToLobby + + public outChatCmd(String cmd, String parameters) { + this.cmd = cmd; + this.parameters = parameters; + } + + public String getCmd() { + return cmd; + } + + public String getParameters() { + return parameters; + } + + /** + * Called when the value of an {@link ObservableValue} changes. + *

+ * In general, it is considered bad practice to modify the observed value in this method. + * + * @param observable The {@code ObservableValue} which value changed + * @param oldValue The old value + * @param newValue + */ + @Override + public void changed(ObservableValue observable, Object oldValue, Object newValue) { + + } +} diff --git a/src/main/java/ch/unibas/dmi/dbis/cs108/resources/splitPaneChatView.fxml b/src/main/java/ch/unibas/dmi/dbis/cs108/resources/splitPaneChatView.fxml index 1daa0be..1ae8b3e 100644 --- a/src/main/java/ch/unibas/dmi/dbis/cs108/resources/splitPaneChatView.fxml +++ b/src/main/java/ch/unibas/dmi/dbis/cs108/resources/splitPaneChatView.fxml @@ -12,7 +12,7 @@ - +