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

All Methods Instance Methods Abstract Methods
`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