public void encodeEndMessageField()

in tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/DecorationPositionRendererBase.java [135:201]


  public void encodeEndMessageField(final FacesContext facesContext, final T component) throws IOException {
    final TobagoResponseWriter writer = getResponseWriter(facesContext);
    final Integer tabIndex = component instanceof AbstractUIInput ? ((AbstractUIInput) component).getTabIndex() : null;
    final SupportsDecorationPosition supportsDecorationPosition = component instanceof SupportsDecorationPosition
        ? ((SupportsDecorationPosition) component) : null;

    encodeEndField(facesContext, component);

    final DecorationPosition messagePosition = supportsDecorationPosition != null
        ? supportsDecorationPosition.getMessagePosition() : DecorationPosition.none;
    final String clientId = component.getClientId();
    final List<FacesMessage> messages = facesContext.getMessageList(clientId);
    final String message = getMessage(messages);
    final FacesMessage.Severity severity = ComponentUtils.getMaximumSeverity(messages);

    if (!StringUtils.isEmpty(message)) {
      switch (messagePosition) {
        case buttonRight:
          final CssItem buttonColor = BootstrapClass.buttonColor(severity);
          encodePopover(writer, buttonColor, Icons.EXCLAMATION_LG, getTitle(messages), message, tabIndex);
          break;
        case tooltip:
          final CssItem tooltip = BootstrapClass.tooltipColor(severity);
          writer.startElement(HtmlElements.DIV);
          writer.writeClassAttribute(tooltip);
          writer.writeText(message);
          writer.endElement(HtmlElements.DIV);
          break;
        case textBottom:
          final CssItem feedback = BootstrapClass.feedbackColor(severity);
          writer.startElement(HtmlElements.DIV);
          writer.writeClassAttribute(feedback);
          writer.writeText(message);
          writer.endElement(HtmlElements.DIV);
        default:
      }

      writer.endElement(HtmlElements.DIV);
    }

    final DecorationPosition helpPosition = supportsDecorationPosition != null
        ? supportsDecorationPosition.getHelpPosition() : DecorationPosition.none;
    final String title = ResourceUtils.getString(facesContext, "help.title");
    final String help = component instanceof SupportsHelp ? ((SupportsHelp) component).getHelp() : null;

    if (!StringUtils.isEmpty(help)) {
      switch (helpPosition) {
        case buttonRight:
          encodePopover(writer, BootstrapClass.BTN_OUTLINE_INFO, Icons.QUESTION_LG, title, help, tabIndex);
          break;
        case tooltip:
          writer.startElement(HtmlElements.DIV);
          writer.writeClassAttribute(BootstrapClass.HELP_TOOLTIP);
          writer.writeText(help);
          writer.endElement(HtmlElements.DIV);
          break;
        case textBottom:
          writer.startElement(HtmlElements.DIV);
          writer.writeClassAttribute(BootstrapClass.HELP_FEEDBACK);
          writer.writeText(help);
          writer.endElement(HtmlElements.DIV);
        default:
      }

      writer.endElement(HtmlElements.DIV);
    }
  }