sovled #42
This commit is contained in:
parent
28376f1242
commit
9e027b5c7a
|
@ -2,12 +2,9 @@ package ch.zhaw.pm2.multichat.client;
|
||||||
|
|
||||||
import ch.zhaw.pm2.multichat.protocol.ConnectionHandler.State;
|
import ch.zhaw.pm2.multichat.protocol.ConnectionHandler.State;
|
||||||
import ch.zhaw.pm2.multichat.protocol.ChatProtocolException;
|
import ch.zhaw.pm2.multichat.protocol.ChatProtocolException;
|
||||||
import ch.zhaw.pm2.multichat.protocol.ConnectionHandler;
|
|
||||||
import ch.zhaw.pm2.multichat.protocol.NetworkHandler;
|
|
||||||
import javafx.application.Platform;
|
import javafx.application.Platform;
|
||||||
import javafx.beans.value.ChangeListener;
|
import javafx.beans.value.ChangeListener;
|
||||||
import javafx.beans.value.ObservableValue;
|
import javafx.beans.value.ObservableValue;
|
||||||
import javafx.collections.FXCollections;
|
|
||||||
import javafx.event.EventHandler;
|
import javafx.event.EventHandler;
|
||||||
import javafx.fxml.FXML;
|
import javafx.fxml.FXML;
|
||||||
import javafx.scene.control.Button;
|
import javafx.scene.control.Button;
|
||||||
|
@ -26,33 +23,20 @@ public class ChatWindowController {
|
||||||
|
|
||||||
private final WindowCloseHandler windowCloseHandler = new WindowCloseHandler();
|
private final WindowCloseHandler windowCloseHandler = new WindowCloseHandler();
|
||||||
|
|
||||||
@FXML
|
@FXML private Pane rootPane;
|
||||||
private Pane rootPane;
|
@FXML private TextField serverAddressField;
|
||||||
@FXML
|
@FXML private TextField serverPortField;
|
||||||
private TextField serverAddressField;
|
@FXML private TextField userNameField;
|
||||||
@FXML
|
@FXML private TextField messageField;
|
||||||
private TextField serverPortField;
|
@FXML private TextArea messageArea;
|
||||||
@FXML
|
@FXML private Button connectButton;
|
||||||
private TextField userNameField;
|
@FXML private Button sendButton;
|
||||||
@FXML
|
@FXML private TextField filterValue;
|
||||||
private TextField messageField;
|
|
||||||
@FXML
|
|
||||||
private TextArea messageArea;
|
|
||||||
@FXML
|
|
||||||
private Button connectButton;
|
|
||||||
@FXML
|
|
||||||
private Button sendButton;
|
|
||||||
@FXML
|
|
||||||
private TextField filterValue;
|
|
||||||
|
|
||||||
private ChatWindowModel model = new ChatWindowModel();
|
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
public void initialize() {
|
public void initialize() {
|
||||||
serverAddressField.setText(model.getServerAddress()); // binding server address to view
|
|
||||||
model.setServerAddress(NetworkHandler.DEFAULT_ADDRESS.getCanonicalHostName()); // sets modell adress
|
|
||||||
serverPortField.setText(model.getServerPort());
|
|
||||||
model.setServerPort(String.valueOf(NetworkHandler.DEFAULT_PORT));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setMessages(ClientMessageList messages) {
|
public void setMessages(ClientMessageList messages) {
|
||||||
|
@ -62,6 +46,9 @@ public class ChatWindowController {
|
||||||
|
|
||||||
public void setConnectionHandler(ClientConnectionHandler connectionHandler){
|
public void setConnectionHandler(ClientConnectionHandler connectionHandler){
|
||||||
this.connectionHandler = connectionHandler;
|
this.connectionHandler = connectionHandler;
|
||||||
|
startConnectionHandlerListener();
|
||||||
|
serverAddressField.setText(connectionHandler.getServerAddressProperty().get());
|
||||||
|
serverPortField.setText(String.valueOf(connectionHandler.getServerPortProperty().get()));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void applicationClose() {
|
private void applicationClose() {
|
||||||
|
@ -117,7 +104,7 @@ public class ChatWindowController {
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
private void applyFilter( ) {
|
private void applyFilter( ) {
|
||||||
this.redrawMessageList();
|
Platform.runLater(() -> this.messageArea.setText(messages.getFilteredMessages(filterValue.getText().strip())));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void startConnectionHandler() throws IOException {
|
private void startConnectionHandler() throws IOException {
|
||||||
|
@ -129,7 +116,7 @@ public class ChatWindowController {
|
||||||
new Thread(connectionHandler).start();
|
new Thread(connectionHandler).start();
|
||||||
|
|
||||||
//register Listener
|
//register Listener
|
||||||
startListener();
|
//startConnectionHandlerListener();
|
||||||
|
|
||||||
// register window close handler
|
// register window close handler
|
||||||
rootPane.getScene().getWindow().addEventHandler(WindowEvent.WINDOW_CLOSE_REQUEST, windowCloseHandler);
|
rootPane.getScene().getWindow().addEventHandler(WindowEvent.WINDOW_CLOSE_REQUEST, windowCloseHandler);
|
||||||
|
@ -182,19 +169,13 @@ public class ChatWindowController {
|
||||||
messages.addMessage(new Message(Message.MessageType.ERROR, null, null, message));
|
messages.addMessage(new Message(Message.MessageType.ERROR, null, null, message));
|
||||||
}
|
}
|
||||||
|
|
||||||
private void redrawMessageList() {
|
|
||||||
this.messageArea.clear();
|
|
||||||
Platform.runLater(() -> this.messageArea.setText(messages.getFilteredMessages(filterValue.getText().strip())));
|
|
||||||
}
|
|
||||||
|
|
||||||
class WindowCloseHandler implements EventHandler<WindowEvent> {
|
class WindowCloseHandler implements EventHandler<WindowEvent> {
|
||||||
public void handle(WindowEvent event) {
|
public void handle(WindowEvent event) {
|
||||||
applicationClose();
|
applicationClose();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void startListener() {
|
public void startConnectionHandlerListener() {
|
||||||
connectionHandler.getStateProperty().addListener(new ChangeListener<State>() {
|
connectionHandler.getStateProperty().addListener(new ChangeListener<State>() {
|
||||||
@Override
|
@Override
|
||||||
public void changed(ObservableValue<? extends State> observable, State oldValue, State newValue) {
|
public void changed(ObservableValue<? extends State> observable, State oldValue, State newValue) {
|
||||||
|
@ -228,7 +209,7 @@ public class ChatWindowController {
|
||||||
messages.getChangedProperty().addListener(new ChangeListener<Boolean>() {
|
messages.getChangedProperty().addListener(new ChangeListener<Boolean>() {
|
||||||
@Override
|
@Override
|
||||||
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
|
public void changed(ObservableValue<? extends Boolean> observable, Boolean oldValue, Boolean newValue) {
|
||||||
redrawMessageList();
|
Platform.runLater(() -> messageArea.setText(messages.getFilteredMessages(filterValue.getText().strip())));
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
|
@ -29,12 +29,15 @@ public class ClientConnectionHandler extends ConnectionHandler implements Runnab
|
||||||
super();
|
super();
|
||||||
this.messages = messages;
|
this.messages = messages;
|
||||||
state = new SimpleObjectProperty<>(State.NEW);
|
state = new SimpleObjectProperty<>(State.NEW);
|
||||||
serverAddress = new SimpleStringProperty();
|
serverAddress = new SimpleStringProperty(NetworkHandler.DEFAULT_ADDRESS.getCanonicalHostName());
|
||||||
serverPort = new SimpleIntegerProperty();
|
serverPort = new SimpleIntegerProperty(NetworkHandler.DEFAULT_PORT);
|
||||||
|
this.userName = new SimpleStringProperty(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void initialize(String serverAddress, int serverPort, String userName) throws IOException {
|
public void initialize(String serverAddress, int serverPort, String userName) throws IOException {
|
||||||
state = new SimpleObjectProperty<>(NEW);
|
state.set(NEW);
|
||||||
|
this.serverAddress.set(serverAddress);
|
||||||
|
this.serverPort.set(serverPort);
|
||||||
setConnection(NetworkHandler.openConnection(serverAddress, serverPort));
|
setConnection(NetworkHandler.openConnection(serverAddress, serverPort));
|
||||||
this.userName = new SimpleStringProperty((userName == null || userName.isBlank())? USER_NONE : userName);
|
this.userName = new SimpleStringProperty((userName == null || userName.isBlank())? USER_NONE : userName);
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue