remove old observer before changing user
This commit is contained in:
parent
f544711bfb
commit
6f1bd41cc9
1 changed files with 23 additions and 12 deletions
|
@ -5,6 +5,7 @@ import javafx.fxml.FXML;
|
||||||
import javafx.fxml.Initializable;
|
import javafx.fxml.Initializable;
|
||||||
import javafx.scene.shape.Circle;
|
import javafx.scene.shape.Circle;
|
||||||
|
|
||||||
|
import java.beans.PropertyChangeEvent;
|
||||||
import java.net.URL;
|
import java.net.URL;
|
||||||
import java.util.ResourceBundle;
|
import java.util.ResourceBundle;
|
||||||
|
|
||||||
|
@ -12,13 +13,15 @@ public class UserActiveIndicatorController implements Initializable {
|
||||||
|
|
||||||
@FXML
|
@FXML
|
||||||
private Circle circle;
|
private Circle circle;
|
||||||
|
private PeerUser user;
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void initialize(URL location, ResourceBundle resources) {
|
public void initialize(URL location, ResourceBundle resources) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void updateState(PeerUser user) {
|
private void updateState() {
|
||||||
|
if (user != null) {
|
||||||
circle.getStyleClass().clear();
|
circle.getStyleClass().clear();
|
||||||
if (user.isActive()) {
|
if (user.isActive()) {
|
||||||
circle.getStyleClass().add("active-user-dot");
|
circle.getStyleClass().add("active-user-dot");
|
||||||
|
@ -26,14 +29,22 @@ public class UserActiveIndicatorController implements Initializable {
|
||||||
circle.getStyleClass().add("inactive-user-dot");
|
circle.getStyleClass().add("inactive-user-dot");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
private void onStateChange(PropertyChangeEvent propertyChangeEvent) {
|
||||||
|
if (propertyChangeEvent.getPropertyName().equals("state")) {
|
||||||
|
updateState();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public void setUser(PeerUser user) {
|
public void setUser(PeerUser user) {
|
||||||
user.addObserver(propertyChangeEvent -> {
|
if (this.user != null) {
|
||||||
if (propertyChangeEvent.getPropertyName().equals("state")) {
|
// remove old observer before setting new user
|
||||||
updateState(user);
|
this.user.removeObserver(this::onStateChange);
|
||||||
}
|
}
|
||||||
});
|
this.user = user;
|
||||||
updateState(user);
|
user.addObserver(this::onStateChange);
|
||||||
|
updateState();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setSize(double value) {
|
public void setSize(double value) {
|
||||||
|
|
Loading…
Reference in a new issue