package envoy.client.ui.listcell; import javafx.scene.control.Label; import javafx.scene.layout.VBox; import envoy.data.Contact; import envoy.data.Group; import envoy.data.User; /** * This class formats a single {@link Contact} into a UI component. *
* Project: envoy-client
* File: ContactControl.java
* Created: 01.07.2020
*
* @author Leon Hofmeister
* @since Envoy Client v0.1-beta
*/
public class ContactControl extends VBox {
/**
* @param contact the contact that should be formatted
* @since Envoy Client v0.1-beta
*/
public ContactControl(Contact contact) {
// Container with contact name
final var nameLabel = new Label(contact.getName());
nameLabel.setWrapText(true);
getChildren().add(nameLabel);
if (contact instanceof User) {
// Online status
final var user = (User) contact;
final var statusLabel = new Label(user.getStatus().toString());
statusLabel.getStyleClass().add(user.getStatus().toString().toLowerCase());
getChildren().add(statusLabel);
} else // Member count
getChildren().add(new Label(((Group) contact).getContacts().size() + " members"));
final var unreadMessagesLabel = new Label("5");
getChildren().add(unreadMessagesLabel);
}
}