diff --git a/client/src/main/java/ch/zhaw/pm2/multichat/client/ChatWindowController.java b/client/src/main/java/ch/zhaw/pm2/multichat/client/ChatWindowController.java index b65daef..4aaf238 100644 --- a/client/src/main/java/ch/zhaw/pm2/multichat/client/ChatWindowController.java +++ b/client/src/main/java/ch/zhaw/pm2/multichat/client/ChatWindowController.java @@ -17,7 +17,11 @@ import java.io.IOException; import static ch.zhaw.pm2.multichat.protocol.ConnectionHandler.State.*; - +/** + * Class Representing the Controller Element of the Window, also Contains the Elements that contacts the View Elements via + * Listeners and Observable Objects. + * To Contact the Model Elements needed it also holds references to messages and the Connectionhandler. + */ public class ChatWindowController { private ClientConnectionHandler connectionHandler; private ClientMessageList messages; @@ -39,21 +43,24 @@ public class ChatWindowController { @FXML private Button connectButton; @FXML - private Button sendButton; - @FXML private TextField filterValue; - @FXML - public void initialize() { - - } - + /** + * Takes a message object and stores it used as Model and also starts message Listener via messageListener method. + * + * @param messages Object that will be set for use as Model + */ public void setMessages(ClientMessageList messages) { this.messages = messages; messageListener(); } + /** + * Takes a Connectionhandler object and stores it used as Model and also starts a Listener for it. + * + * @param connectionHandler that will be set and used as Model. + */ public void setConnectionHandler(ClientConnectionHandler connectionHandler) { this.connectionHandler = connectionHandler; startConnectionHandlerListener(); @@ -61,10 +68,17 @@ public class ChatWindowController { serverPortField.setText(String.valueOf(connectionHandler.getServerPortProperty().get())); } + /** + * Method which closes the Application via use of the disconnect Method. //TODO evtl Löschen? + */ private void applicationClose() { disconnect(); } + /** + * Method that handles the Connect Button and Initiates connect when connectionHandler is not Connected or + * a disconnect when it is connected. + */ @FXML private void toggleConnection() { if (connectionHandler == null || connectionHandler.getStateProperty().get() != CONNECTED) { @@ -74,19 +88,21 @@ public class ChatWindowController { } } - + /** + * Initiates a connection by starting Connection Handler and telling, the Handler to start a connection. + */ private void connect() { try { messages.clear(); // clear message list startConnectionHandler(); connectionHandler.connect(); } catch (ChatProtocolException | IOException e) { - addError(e.getMessage()); + addError("Error while starting Connection Handler and connect" + e); } } /** - * Initiates disconnecting of the connectionHandler, also checks if connectionHandler is avaible. + * Initiates disconnecting of the connectionHandler, also checks if connectionHandler is available. */ private void disconnect() { if (connectionHandler == null) { @@ -101,11 +117,11 @@ public class ChatWindowController { } /** - * + * Method which is used when the send button is pressed and handing over a message to the Connection Handler */ @FXML private void message() { - String messageString = messageField.getText().strip(); + String messageString = messageField.getText().strip(); //TODO MVC ok? try { if (connectionHandler == null) { addError("No connection handler"); @@ -119,11 +135,20 @@ public class ChatWindowController { } } + /** + * Method which is used when a Filter is applied + * Setting the Text in the message area after sending it through the filter. + */ @FXML private void applyFilter() { Platform.runLater(() -> this.messageArea.setText(messages.getFilteredMessages(filterValue.getText().strip()))); } + /** + * Starts the ConnectionHandler setting the username and Checking if the name follows the valid format of no spaces. + * + * @throws IOException for error that may occur during initialization of connectionHandler. + */ private void startConnectionHandler() throws IOException { String userName = userNameField.getText(); if (!userName.contains(" ")) { @@ -132,7 +157,7 @@ public class ChatWindowController { connectionHandler.initialize(serverAddress, serverPort, userName); new Thread(connectionHandler).start(); - //register Listener + //register Listener //TODO what todo with methods? //startConnectionHandlerListener(); // register window close handler @@ -142,6 +167,12 @@ public class ChatWindowController { } } + /** + * Sets the state shown according to the state the method receives, if state indicates disconnected it will also inform the + * Connection Handler and tell it to stop Receiving more messages. + * + * @param newState is the state that it should be set to. + */ public void stateChanged(State newState) { // update UI (need to be run in UI thread: see Platform.runLater()) Platform.runLater(new Runnable() { @@ -155,15 +186,25 @@ public class ChatWindowController { } } + /** + * Sets displayed username according to the String provided. + * + * @param userName provided String that is set as name. + */ public void setUserName(String userName) { Platform.runLater(new Runnable() { @Override - public void run() { + public void run() { //TODO MVC ok?? userNameField.setText(userName); } }); } + /** + * Sets displayed Server Address. + * + * @param serverAddress provided String that is set as server address. + */ public void setServerAddress(String serverAddress) { Platform.runLater(new Runnable() { @Override @@ -173,6 +214,11 @@ public class ChatWindowController { }); } + /** + * Sets displayed Server port. + * + * @param serverPort provided String that is set as server port. + */ public void setServerPort(int serverPort) { Platform.runLater(new Runnable() { @Override @@ -182,16 +228,32 @@ public class ChatWindowController { }); } + /** + * Method which adds an incoming String as an Error Message. + * + * @param message String to be added as Error + */ public void addError(String message) { messages.addMessage(new Message(Message.MessageType.ERROR, null, null, message)); } + /** + * Nested Class in charge of Closing the wind + */ class WindowCloseHandler implements EventHandler { + /** + * TODO + * @param event the event which occurred + */ public void handle(WindowEvent event) { applicationClose(); } } + /** + * TODO missing + */ + public void startConnectionHandlerListener() { connectionHandler.getStateProperty().addListener(new ChangeListener() { @Override @@ -222,7 +284,9 @@ public class ChatWindowController { }); } - + /** + * TODO + */ private void messageListener() { messages.getChangedProperty().addListener(new ChangeListener() { @Override