com.google.gwt.user.cellview.client

## Interface HeaderBuilder<T>

- Type Parameters:
    `T` - the row data type
  All Known Implementing Classes:
    AbstractHeaderOrFooterBuilder, DefaultHeaderOrFooterBuilder

      public interface HeaderBuilder<T>

  Builds the DOM elements for the header section of a CellTable. It also provides queries on elements in the last DOM subtree that it created.

  `HeaderBuilder` provides two optional ways to handle events, via a `Column`, a `Header`, or both. If `getColumn(Element)` returns a `Column` given the target `Element` of an event, cell table will use it to enable features such as sorting. If `getHeader(Element)` returns a `Header`, cell table will forward the event to the `Header`. You can specify both a `Column` and `Header`.

  The default implementation used by cell widgets is `DefaultHeaderOrFooterBuilder`.

- - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `TableSectionBuilder` | `buildHeader()` Builds the DOM subtree for this header.
    `Column<T,?>` | `getColumn(Element elem)` Given an element in the DOM subtree returned by the most recent call to `buildHeader()`, returns the Column that should be the target of any button clicks or other events on that element, or null if the events should be discarded.
    `Header<?>` | `getHeader(Element elem)` If you want to handle browser events using a subclass of `Header`, implement this method to return the appropriate instance and cell table will forward events originating in the element to the `Header`.
    `int` | `getRowIndex(TableRowElement row)` Get the row index from the associated `TableRowElement` (an TR element).
    `boolean` | `isColumn(Element elem)` Check if an element contains a `Column`.
    `boolean` | `isHeader(Element elem)` Check if an element contains a `Header`.

- - ### Method Detail

    - #### buildHeader

          TableSectionBuilder buildHeader()

      Builds the DOM subtree for this header. The root of the subtree must be a THEAD element, as appropriate. This method may be called multiple times and should return a new DOM subtree each time.

      If the header is empty, return null.

      Returns:
        a `TableSectionBuilder` representing the new header, or null if the header is empty

    - #### getColumn

          Column<T,?> getColumn(Element elem)

      Given an element in the DOM subtree returned by the most recent call to `buildHeader()`, returns the Column that should be the target of any button clicks or other events on that element, or null if the events should be discarded. The column is used to support features such as column sorting.
      Parameters:
        `elem` - the element that the contains column
      Returns:
        the immediate column contained by the element

    - #### getHeader

          Header<?> getHeader(Element elem)

      If you want to handle browser events using a subclass of `Header`, implement this method to return the appropriate instance and cell table will forward events originating in the element to the `Header`. Return null if events from the element should be discarded.
      Parameters:
        `elem` - the element that the contains header
      Returns:
        the immediate `Header` contained by the element

    - #### getRowIndex

          int getRowIndex(TableRowElement row)

      Get the row index from the associated `TableRowElement` (an TR element).
      Parameters:
        `row` - the row element
      Returns:
        the row value index

    - #### isColumn

          boolean isColumn(Element elem)

      Check if an element contains a `Column`. This method should return false if and only if `getColumn(Element)` would return null.
      Parameters:
        `elem` - the element of interest

    - #### isHeader

          boolean isHeader(Element elem)

      Check if an element contains a `Header`. This method should return false if and only if `getHeader(Element)` would return null.
      Parameters:
        `elem` - the element of interest