final ResourceManager resourceManager,
final String contextPath, final String sheetId, final List<AbstractUIColumn> renderedColumnList,
final Measure headerWidth)
throws IOException {
final Grid grid = sheet.getHeaderGrid();
if (grid == null) {
LOG.warn("Can't render column headers, because grid == null. One reason can be, the you use nested sheets. "
+ "The inner sheet ensureHeader() will be called outside the iterating over the rows. "
+ "Nesting sheet is currently not supported.");
return;
}
final List<Integer> columnWidths = sheet.getWidthList();
if (LOG.isDebugEnabled()) {
LOG.debug("*****************************************************");
LOG.debug("" + grid);
LOG.debug("*****************************************************");
}
final boolean needVerticalScrollbar = needVerticalScrollbar(facesContext, sheet);
int verticalScrollbarWidth = 0;
writer.startElement(HtmlElements.DIV, sheet);
writer.writeClassAttribute(Classes.create(sheet, "headerDiv"));
writer.startElement(HtmlElements.TABLE, sheet);
writer.writeAttribute(HtmlAttributes.CELLSPACING, "0", false);
writer.writeAttribute(HtmlAttributes.CELLPADDING, "0", false);
writer.writeAttribute(HtmlAttributes.SUMMARY, "", false);
writer.writeClassAttribute(Classes.create(sheet, "headerTable"));
if (needVerticalScrollbar) {
verticalScrollbarWidth = getVerticalScrollbarWeight(facesContext, sheet).getPixel();
writer.writeAttribute("data-tobago-sheet-verticalscrollbarwidth", String.valueOf(verticalScrollbarWidth), false);
}
if (columnWidths != null) {
writer.startElement(HtmlElements.COLGROUP, null);
for (int i = 0; i < columnWidths.size(); i++) {
writer.startElement(HtmlElements.COL, null);
if (i == columnWidths.size() - 2 && needVerticalScrollbar) {
// if scrollbar is needed the coll for column in header must have own width + scrollbarWidth
writer.writeAttribute(
HtmlAttributes.WIDTH, columnWidths.get(i) + verticalScrollbarWidth);
} else {
writer.writeAttribute(HtmlAttributes.WIDTH, columnWidths.get(i));
}
writer.endElement(HtmlElements.COL);
}
writer.endElement(HtmlElements.COLGROUP);
}
writer.startElement(HtmlElements.TBODY, sheet);
for (int i = 0; i < grid.getRowCount(); i++) {
writer.startElement(HtmlElements.TR, null);
for (int j = 0; j < grid.getColumnCount(); j++) {
final Cell cell = grid.getCell(j, i);
if (cell instanceof OriginCell) {
writer.startElement(HtmlElements.TD, null);
if (cell.getColumnSpan() > 1) {
writer.writeAttribute(HtmlAttributes.COLSPAN, cell.getColumnSpan());
}