Compare commits

...

2 commits

Author SHA1 Message Date
Arnaud Vergnet
6f1bd41cc9 remove old observer before changing user 2020-12-16 11:13:04 +01:00
Arnaud Vergnet
f544711bfb update indicator on user state change 2020-12-16 11:08:43 +01:00

View file

@ -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,21 +13,40 @@ 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) {
} }
public void setUser(PeerUser user) { private void updateState() {
circle.getStyleClass().clear(); if (user != null) {
if (user.isActive()) { circle.getStyleClass().clear();
circle.getStyleClass().add("active-user-dot"); if (user.isActive()) {
} else { circle.getStyleClass().add("active-user-dot");
circle.getStyleClass().add("inactive-user-dot"); } else {
circle.getStyleClass().add("inactive-user-dot");
}
} }
} }
private void onStateChange(PropertyChangeEvent propertyChangeEvent) {
if (propertyChangeEvent.getPropertyName().equals("state")) {
updateState();
}
}
public void setUser(PeerUser user) {
if (this.user != null) {
// remove old observer before setting new user
this.user.removeObserver(this::onStateChange);
}
this.user = user;
user.addObserver(this::onStateChange);
updateState();
}
public void setSize(double value) { public void setSize(double value) {
circle.setRadius(value); circle.setRadius(value);
} }