package envoy.client.ui.listcell; import javafx.scene.control.*; import envoy.client.data.*; import envoy.client.net.Client; import envoy.client.ui.control.ChatControl; import envoy.client.util.UserUtil; import envoy.data.User; /** * A list cell containing chats represented as chat controls. * * @author Leon Hofmeister * @since Envoy Client v0.3-beta */ public class ChatListCell extends AbstractListCell { private static final Client client = Context.getInstance().getClient(); /** * @param listView the list view inside of which the cell will be displayed * @since Envoy Client v0.3-beta */ public ChatListCell(ListView listView) { super(listView); } @Override protected ChatControl renderItem(Chat chat) { if (client.isOnline()) { final var menu = new ContextMenu(); final var removeMI = new MenuItem(); removeMI.setText( chat.isDisabled() ? "Delete " : chat.getRecipient() instanceof User ? "Block " : "Leave group " + chat.getRecipient().getName()); removeMI.setOnAction( chat.isDisabled() ? e -> UserUtil.deleteContact(chat.getRecipient()) : e -> UserUtil.disableContact(chat.getRecipient())); menu.getItems().add(removeMI); setContextMenu(menu); } else setContextMenu(null); // TODO: replace with icon in ChatControl final var chatControl = new ChatControl(chat); if (chat.isDisabled()) chatControl.getStyleClass().add("disabled-chat"); else chatControl.getStyleClass().remove("disabled-chat"); return chatControl; } }