improve username change detection
這個提交存在於:
父節點
75ec382fb7
當前提交
1fe1681d8b
共有 2 個檔案被更改,包括 18 行新增 和 1 行删除
|
@ -2,10 +2,12 @@ package fr.insa.clavardator.ui.chat;
|
||||||
|
|
||||||
import fr.insa.clavardator.ui.users.UserActiveIndicatorController;
|
import fr.insa.clavardator.ui.users.UserActiveIndicatorController;
|
||||||
import fr.insa.clavardator.users.PeerUser;
|
import fr.insa.clavardator.users.PeerUser;
|
||||||
|
import javafx.application.Platform;
|
||||||
import javafx.fxml.FXML;
|
import javafx.fxml.FXML;
|
||||||
import javafx.fxml.Initializable;
|
import javafx.fxml.Initializable;
|
||||||
import javafx.scene.control.Label;
|
import javafx.scene.control.Label;
|
||||||
|
|
||||||
|
import java.beans.PropertyChangeEvent;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
|
@ -16,12 +18,26 @@ public class ChatHeaderController implements Initializable {
|
||||||
private Label remoteUsernameLabel;
|
private Label remoteUsernameLabel;
|
||||||
@FXML
|
@FXML
|
||||||
private UserActiveIndicatorController indicatorController;
|
private UserActiveIndicatorController indicatorController;
|
||||||
|
private PeerUser user;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void initialize(URL location, ResourceBundle resources) {
|
public void initialize(URL location, ResourceBundle resources) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void onUsernameChange(PropertyChangeEvent propertyChangeEvent) {
|
||||||
|
if (propertyChangeEvent.getPropertyName().equals("username")) {
|
||||||
|
final String newUsername = (String) propertyChangeEvent.getNewValue();
|
||||||
|
Platform.runLater(() -> remoteUsernameLabel.setText(newUsername));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void setRemoteUser(PeerUser remoteUser) {
|
public void setRemoteUser(PeerUser remoteUser) {
|
||||||
|
if (this.user != null) {
|
||||||
|
// remove old observer before setting new user
|
||||||
|
this.user.removeObserver(this::onUsernameChange);
|
||||||
|
}
|
||||||
|
this.user = remoteUser;
|
||||||
|
user.addObserver(this::onUsernameChange);
|
||||||
remoteUsernameLabel.setText(remoteUser.getUsername());
|
remoteUsernameLabel.setText(remoteUser.getUsername());
|
||||||
indicatorController.setUser(remoteUser);
|
indicatorController.setUser(remoteUser);
|
||||||
indicatorController.setSize(10.0);
|
indicatorController.setSize(10.0);
|
||||||
|
|
|
@ -2,6 +2,7 @@ package fr.insa.clavardator.ui.users;
|
||||||
|
|
||||||
import fr.insa.clavardator.users.PeerUser;
|
import fr.insa.clavardator.users.PeerUser;
|
||||||
import fr.insa.clavardator.util.Log;
|
import fr.insa.clavardator.util.Log;
|
||||||
|
import javafx.application.Platform;
|
||||||
import javafx.fxml.FXML;
|
import javafx.fxml.FXML;
|
||||||
import javafx.fxml.Initializable;
|
import javafx.fxml.Initializable;
|
||||||
import javafx.scene.shape.Circle;
|
import javafx.scene.shape.Circle;
|
||||||
|
@ -34,7 +35,7 @@ public class UserActiveIndicatorController implements Initializable {
|
||||||
if (propertyChangeEvent.getPropertyName().equals("state")) {
|
if (propertyChangeEvent.getPropertyName().equals("state")) {
|
||||||
final PeerUser.State newState = (PeerUser.State) propertyChangeEvent.getNewValue();
|
final PeerUser.State newState = (PeerUser.State) propertyChangeEvent.getNewValue();
|
||||||
Log.v(this.getClass().getSimpleName(), "User state updated to " + newState.toString());
|
Log.v(this.getClass().getSimpleName(), "User state updated to " + newState.toString());
|
||||||
updateState(newState == PeerUser.State.CONNECTED);
|
Platform.runLater(() -> updateState(newState == PeerUser.State.CONNECTED));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
載入中…
新增問題並參考