package envoy.client.ui.listcell; import javafx.geometry.Pos; import javafx.scene.control.Label; import javafx.scene.layout.*; import envoy.client.data.Chat; 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 ChatControl extends HBox { /** * @param chat the chat to display * @since Envoy Client v0.1-beta */ public ChatControl(Chat chat) { // Container with contact name final var vBox = new VBox(); final var nameLabel = new Label(chat.getRecipient().getName()); nameLabel.setWrapText(true); vBox.getChildren().add(nameLabel); if (chat.getRecipient() instanceof User) { // Online status final var user = (User) chat.getRecipient(); final var statusLabel = new Label(user.getStatus().toString()); statusLabel.getStyleClass().add(user.getStatus().toString().toLowerCase()); vBox.getChildren().add(statusLabel); } else // Member count vBox.getChildren().add(new Label(((Group) chat.getRecipient()).getContacts().size() + " members")); getChildren().add(vBox); if (chat.getUnreadAmount() != 0) { Region spacing = new Region(); setHgrow(spacing, Priority.ALWAYS); getChildren().add(spacing); final var unreadMessagesLabel = new Label(Integer.toString(chat.getUnreadAmount())); unreadMessagesLabel.setMinSize(15, 15); var vBox2 = new VBox(); vBox2.setAlignment(Pos.CENTER_RIGHT); unreadMessagesLabel.setAlignment(Pos.CENTER); unreadMessagesLabel.getStyleClass().add("unreadMessagesAmount"); vBox2.getChildren().add(unreadMessagesLabel); getChildren().add(vBox2); } } }