|
@@ -2,10 +2,12 @@ package fr.insa.clavardator.ui.chat;
|
2
|
2
|
|
3
|
3
|
import fr.insa.clavardator.ui.users.UserActiveIndicatorController;
|
4
|
4
|
import fr.insa.clavardator.users.PeerUser;
|
|
5
|
+import javafx.application.Platform;
|
5
|
6
|
import javafx.fxml.FXML;
|
6
|
7
|
import javafx.fxml.Initializable;
|
7
|
8
|
import javafx.scene.control.Label;
|
8
|
9
|
|
|
10
|
+import java.beans.PropertyChangeEvent;
|
9
|
11
|
import java.net.URL;
|
10
|
12
|
import java.util.ArrayList;
|
11
|
13
|
import java.util.ResourceBundle;
|
|
@@ -16,12 +18,26 @@ public class ChatHeaderController implements Initializable {
|
16
|
18
|
private Label remoteUsernameLabel;
|
17
|
19
|
@FXML
|
18
|
20
|
private UserActiveIndicatorController indicatorController;
|
|
21
|
+ private PeerUser user;
|
19
|
22
|
|
20
|
23
|
@Override
|
21
|
24
|
public void initialize(URL location, ResourceBundle resources) {
|
22
|
25
|
}
|
23
|
26
|
|
|
27
|
+ private void onUsernameChange(PropertyChangeEvent propertyChangeEvent) {
|
|
28
|
+ if (propertyChangeEvent.getPropertyName().equals("username")) {
|
|
29
|
+ final String newUsername = (String) propertyChangeEvent.getNewValue();
|
|
30
|
+ Platform.runLater(() -> remoteUsernameLabel.setText(newUsername));
|
|
31
|
+ }
|
|
32
|
+ }
|
|
33
|
+
|
24
|
34
|
public void setRemoteUser(PeerUser remoteUser) {
|
|
35
|
+ if (this.user != null) {
|
|
36
|
+ // remove old observer before setting new user
|
|
37
|
+ this.user.removeObserver(this::onUsernameChange);
|
|
38
|
+ }
|
|
39
|
+ this.user = remoteUser;
|
|
40
|
+ user.addObserver(this::onUsernameChange);
|
25
|
41
|
remoteUsernameLabel.setText(remoteUser.getUsername());
|
26
|
42
|
indicatorController.setUser(remoteUser);
|
27
|
43
|
indicatorController.setSize(10.0);
|