private void encodeSubTableDomElement(
     ResponseWriter writer, FacesContext facesContext, AbstractCollapsibleSubTable subTable)
     throws IOException {
   writer.startElement(HtmlConstants.TR_ELEMENT, subTable);
   writer.writeAttribute(HtmlConstants.STYLE_ATTRIBUTE, DISPLAY_NONE, null);
   writer.writeAttribute(
       HtmlConstants.ID_ATTRIBUTE, subTable.getContainerClientId(facesContext), null);
   writer.startElement(HtmlConstants.TD_ELEM, subTable);
   writer.endElement(HtmlConstants.TD_ELEM);
   writer.endElement(HtmlConstants.TR_ELEMENT);
 }
 public void begin(
     ResponseWriter writer, FacesContext context, UIComponent component, Object[] params)
     throws IOException {
   AbstractCollapsibleSubTable subTable = (AbstractCollapsibleSubTable) component;
   writer.startElement(HtmlConstants.TR_ELEMENT, subTable);
   writer.writeAttribute(
       HtmlConstants.ID_ATTRIBUTE,
       subTable.getContainerClientId(context) + HIDDEN_CONTAINER_ID,
       null);
   writer.writeAttribute(HtmlConstants.STYLE_ATTRIBUTE, DISPLAY_NONE, null);
   writer.startElement(HtmlConstants.TD_ELEM, subTable);
 }
  public void encodeTableFacets(
      ResponseWriter writer, FacesContext context, UIDataTableBase dataTable) throws IOException {
    AbstractCollapsibleSubTable subTable = (AbstractCollapsibleSubTable) dataTable;

    encodeStyle(writer, context, subTable, null);

    encodeHeaderFacet(writer, context, subTable, false);

    String rowClass = getRowSkinClass();
    String cellClass = getCellSkinClass();
    String firstClass = getFirstRowSkinClass();

    rowClass = mergeStyleClasses("rowClass", rowClass, subTable);
    cellClass = mergeStyleClasses("cellClass", cellClass, subTable);
    firstClass = mergeStyleClasses("firstRowClass", firstClass, subTable);

    saveRowStyles(context, subTable.getContainerClientId(context), firstClass, rowClass, cellClass);
  }