fi.evolver.ai.vaadin.component.ChatMessageList Maven / Gradle / Ivy
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();
}
}