56 lines
1.5 KiB
Java
56 lines
1.5 KiB
Java
package envoy.client.ui.listcell;
|
|
|
|
import javafx.scene.control.*;
|
|
|
|
import envoy.data.User;
|
|
|
|
import envoy.client.data.*;
|
|
import envoy.client.net.Client;
|
|
import envoy.client.ui.control.ChatControl;
|
|
import envoy.client.util.UserUtil;
|
|
|
|
/**
|
|
* A list cell containing chats represented as chat controls.
|
|
*
|
|
* @author Leon Hofmeister
|
|
* @since Envoy Client v0.3-beta
|
|
*/
|
|
public class ChatListCell extends AbstractListCell<Chat, ChatControl> {
|
|
|
|
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<? extends Chat> 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;
|
|
}
|
|
}
|