in tobago-core/src/main/java/org/apache/myfaces/tobago/internal/renderkit/renderer/SheetRenderer.java [358:436]
public void encodeEndInternal(final FacesContext facesContext, final T component) throws IOException {
final TobagoResponseWriter writer = getResponseWriter(facesContext);
final String sheetId = component.getClientId(facesContext);
final Selectable selectable = component.getSelectable();
final SheetState state = component.getSheetState(facesContext);
final List<Integer> columnWidths = component.getState().getColumnWidths();
final boolean definedColumnWidths = component.getState().isDefinedColumnWidths();
final List<Integer> selectedRows = getSelectedRows(component, state);
final List<AbstractUIColumnBase> columns = component.getAllColumns();
final boolean autoLayout = component.isAutoLayout();
ensureColumnWidthsSize(columnWidths, columns, Collections.emptyList());
if (!autoLayout) {
encodeHiddenInput(writer,
JsonUtils.encode(definedColumnWidths ? columnWidths : Collections.emptyList()),
sheetId + SUFFIX_WIDTHS);
final ArrayList<Boolean> encodedRendered = new ArrayList<>();
for (final AbstractUIColumnBase column : columns) {
if (!(column instanceof AbstractUIRow) && !(column instanceof AbstractUIColumnPanel)) {
encodedRendered.add(column.isRendered());
}
}
encodeHiddenInput(writer,
JsonUtils.encode(encodedRendered.toArray(new Boolean[0])),
sheetId + SUFFIX_COLUMN_RENDERED);
}
encodeHiddenInput(writer,
component.getState().getScrollPosition().encode(),
component.getClientId(facesContext) + SUFFIX_SCROLL_POSITION);
encodeHiddenInput(writer,
JsonUtils.encode(selectedRows),
sheetId + SUFFIX_SELECTED);
if (component.isLazy()) {
encodeHiddenInput(writer, null, sheetId + SUFFIX_LAZY);
encodeHiddenInput(writer, state.getLazyScrollPosition().encode(), sheetId + SUFFIX_LAZY_SCROLL_POSITION);
}
final List<Integer> expandedValue = component.isTreeModel() ? new ArrayList<>() : null;
encodeTableBody(
facesContext, component, writer, sheetId, selectable, columnWidths, selectedRows, columns, autoLayout,
expandedValue);
if (component.isPagingVisible()) {
writer.startElement(HtmlElements.FOOTER);
writer.endElement(HtmlElements.FOOTER);
}
final UIComponent after = component.getFacet(Facets.AFTER);
if (after != null) {
after.encodeAll(facesContext);
}
if (component.isTreeModel()) {
writer.startElement(HtmlElements.INPUT);
writer.writeAttribute(HtmlAttributes.TYPE, HtmlInputTypes.HIDDEN);
final String expandedId = sheetId + ComponentUtils.SUB_SEPARATOR + AbstractUIData.SUFFIX_EXPANDED;
writer.writeNameAttribute(expandedId);
writer.writeIdAttribute(expandedId);
writer.writeClassAttribute(TobagoClass.EXPANDED);
writer.writeAttribute(HtmlAttributes.VALUE, JsonUtils.encode(expandedValue), false);
writer.endElement(HtmlElements.INPUT);
}
writer.endElement(HtmlElements.TOBAGO_SHEET);
UIComponent header = component.getHeader();
if (header.isTransient()) {
component.getFacets().remove("header");
}
insideEnd(facesContext, HtmlElements.TOBAGO_SHEET);
}