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); } }