All Downloads are FREE. Search and download functionalities are using the official Maven repository.

fi.evolver.ai.vaadin.component.ChatMessageList Maven / Gradle / Ivy

The newest version!
package fi.evolver.ai.vaadin.component;

import java.io.Serial;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

import com.vaadin.flow.component.orderedlayout.VerticalLayout;
import com.vaadin.flow.dom.Style.BoxSizing;
import com.vaadin.flow.theme.lumo.LumoUtility;

public class ChatMessageList extends VerticalLayout {
	@Serial
	private static final long serialVersionUID = 1L;

	private List chatItems = new ArrayList<>();

	public ChatMessageList() {
		addClassNames(LumoUtility.Flex.AUTO);
		getStyle()  // hide scroll bar
			.set("overflow-x", "hidden")
			.set("overflow-y", "scroll")
			.setPaddingRight("17px")
			.setBoxSizing(BoxSizing.CONTENT_BOX);
	}

	public void addItem(ChatAvatarItem item, boolean isReplacement) {
		if (isReplacement) {
			ChatAvatarItem replacableItem = !chatItems.isEmpty() ? chatItems.remove(chatItems.size() - 1) : null;
			remove(replacableItem);
		}
		chatItems.add(item);
		add(item);
	}

	public void addItem(
			LocalDateTime sendTime,
			String message,
			String user,
			boolean isReplacement,
			boolean convertToHtml) {

		addItem(new ChatAvatarTextItem(sendTime, message, user, convertToHtml), isReplacement);
	}

	public void addItem(String message, String user, boolean isReplacement, boolean convertToHtml) {
		addItem(LocalDateTime.now(), message, user, isReplacement, convertToHtml);
	}

	public void addItem(String message, String user) {
		addItem(message, user, false, false);
	}

	public void reset() {
		chatItems.clear();
		removeAll();
	}

}




© 2015 - 2024 Weber Informatics LLC | Privacy Policy