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

de.lessvoid.nifty.controls.chatcontrol.ChatBoxViewConverter Maven / Gradle / Ivy

There is a newer version: 1.4.3
Show newest version
package de.lessvoid.nifty.controls.chatcontrol;

import java.util.logging.Logger;

import javax.annotation.Nonnull;

import de.lessvoid.nifty.controls.ListBox.ListBoxViewConverter;
import de.lessvoid.nifty.elements.Element;
import de.lessvoid.nifty.elements.render.ImageRenderer;
import de.lessvoid.nifty.elements.render.TextRenderer;

/**
 * Handles the displaying of the items in the ChatBox.
 *
 * @author Mark
 * @version 0.1
 */
public class ChatBoxViewConverter implements ListBoxViewConverter {
  @Nonnull
  private static final Logger log = Logger.getLogger(ChatBoxViewConverter.class.getName());
  @Nonnull
  private static final String CHAT_LINE_ICON = "#chat-line-icon";
  @Nonnull
  private static final String CHAT_LINE_TEXT = "#chat-line-text";

  /**
   * Default constructor.
   */
  public ChatBoxViewConverter() {
  }

  @Override
  public final void display(@Nonnull final Element listBoxItem, @Nonnull final ChatEntryModelClass item) {
    final Element text = listBoxItem.findElementById(CHAT_LINE_TEXT);
    if (text == null) {
      log.severe("Failed to locate text part of chat line! Can't display entry.");
      return;
    }
    final Element icon = listBoxItem.findElementById(CHAT_LINE_ICON);
    if (icon == null) {
      log.severe("Failed to locate icon part of chat line! Can't display entry.");
      return;
    }
    final TextRenderer textRenderer = text.getRenderer(TextRenderer.class);
    if (textRenderer == null) {
      log.severe("Text entry of the chat line does not contain the required text renderer.");
      return;
    }
    final ImageRenderer iconRenderer = icon.getRenderer(ImageRenderer.class);
    if (iconRenderer == null) {
      log.severe("Icon entry of the chat line does not contain the required image renderer.");
      return;
    }
    if (item.getStyle() != null && !item.getStyle().equals("")) {
      text.setStyle(item.getStyle());
    } else {
      text.setStyle("default");
    }
    // setStyle will reset the text to initial value (null), so setText/setImage should be called after it
    textRenderer.setText(item.toString());
    iconRenderer.setImage(item.getIcon());
  }

  @Override
  public final int getWidth(@Nonnull final Element listBoxItem, @Nonnull final ChatEntryModelClass item) {
    final Element text = listBoxItem.findElementById(CHAT_LINE_TEXT);
    if (text == null) {
      log.severe("Failed to locate text part of chat line! Can't display entry.");
      return 0;
    }
    final TextRenderer textRenderer = text.getRenderer(TextRenderer.class);
    if (textRenderer == null) {
      log.severe("Text entry of the chat line does not contain the required text renderer.");
      return 0;
    }
    return ((textRenderer.getFont() == null) ? 0 : textRenderer.getFont().getWidth(item.getLabel()))
        + ((item.getIcon() == null) ? 0 : item.getIcon().getWidth());
  }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy