// renders a whole bunch of <TR>...</TR> elements, one for each row in the
// table, and additional ones for any disclosed-details rows
//
// 1. Gather all the data we need to render
//
final RowData rowData = tContext.getRowData();
final UIComponent detail = tContext.getDetail();
final RenderStage renderStage = tContext.getRenderStage();
TableUtils.RowLoop loop = new TableUtils.RowLoop() {
@Override
protected void processRowImpl(FacesContext fc, CollectionComponent tableBase)
throws IOException
{
ResponseWriter writer = fc.getResponseWriter();
// compute all the rowSpans for the current row:
rowData.setCurrentRowSpan(-1);
//reset
renderStage.setStage(RenderStage.START_ROW_STAGE);
renderSingleRow(fc, arc, tContext, (UIComponent) tableBase);
renderStage.setStage(RenderStage.DATA_STAGE);
// render each of the individual rows in the rowSpan:
for (int i = 0, sz = rowData.getCurrentRowSpan(); i < sz; i++)
{
// start the row
writer.startElement(XhtmlConstants.TABLE_ROW_ELEMENT, null);
renderSingleRow(fc, arc, tContext, (UIComponent) tableBase);
rowData.incCurrentSubRow();
// end the row
writer.endElement(XhtmlConstants.TABLE_ROW_ELEMENT);
}
// if necessary, render a detail row
if ((detail != null)&&