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);
}
}