47 lines
1.5 KiB
Java
47 lines
1.5 KiB
Java
|
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<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;
|
||
|
}
|
||
|
}
|