com.google.gwt.user.cellview.client

## Class AbstractCellTable<T>

- java.lang.Object
- - com.google.gwt.user.client.ui.UIObject
  - - com.google.gwt.user.client.ui.Widget
    - - com.google.gwt.user.client.ui.Composite
      - - com.google.gwt.user.cellview.client.AbstractHasData<T>
        - - com.google.gwt.user.cellview.client.AbstractCellTable<T>

Type Parameters:
  `T` - the data type of each row

All Implemented Interfaces:
  HasAttachHandlers, HasHandlers, HasKeyboardPagingPolicy, HasKeyboardSelectionPolicy, EventListener, Focusable, HasVisibility, IsRenderable, IsWidget, HasCellPreviewHandlers<T>, HasData<T>, HasKeyProvider<T>, HasRows

Direct Known Subclasses:
  CellTable, DataGrid

    public abstract class AbstractCellTable<T>
    extends AbstractHasData<T>

Abstract base class for tabular views that supports paging and columns.

### Columns

The `Column` class defines the `Cell` used to render a column. Implement `Column.getValue(Object)` to retrieve the field value from the row object that will be rendered in the `Cell`.

### Headers and Footers

A `Header` can be placed at the top (header) or bottom (footer) of the `AbstractCellTable`. You can specify a header as text using `addColumn(Column, String)`, or you can create a custom `Header` that can change with the value of the cells, such as a column total. The `Header` will be rendered every time the row data changes or the table is redrawn. If you pass the same header instance (==) into adjacent columns, the header will span the columns.

### Nested Class Summary

Nested Classes
`static class` `AbstractCellTable.CellTableKeyboardSelectionHandler<T>` Default implementation of a keyboard navigation handler for tables that supports navigation between cells.
`static interface` `AbstractCellTable.Resources` A ClientBundle that provides images for this widget.
`static interface` `AbstractCellTable.Style` Styles used by this widget.
`protected static interface` `AbstractCellTable.TableSectionChangeHandler` Interface that this class's subclass may implement to get notified with table section change event.
`(package private) static interface` `AbstractCellTable.Template`

### Nested classes/interfaces inherited from class com.google.gwt.user.cellview.client.AbstractHasData

`AbstractHasData.DefaultKeyboardSelectionHandler<T>, AbstractHasData.RedrawEvent`

### Nested classes/interfaces inherited from class com.google.gwt.user.client.ui.UIObject

`UIObject.DebugIdImpl, UIObject.DebugIdImplEnabled`

### Nested classes/interfaces inherited from interface com.google.gwt.user.cellview.client.HasKeyboardPagingPolicy

`HasKeyboardPagingPolicy.KeyboardPagingPolicy`

### Nested classes/interfaces inherited from interface com.google.gwt.user.cellview.client.HasKeyboardSelectionPolicy

`HasKeyboardSelectionPolicy.KeyboardSelectionPolicy`

### Field Summary

### Fields inherited from class com.google.gwt.user.cellview.client.AbstractHasData

`isFocused`

### Fields inherited from class com.google.gwt.user.client.ui.UIObject

`DEBUG_ID_PREFIX`

### Constructor Summary

Constructors
Constructor and Description
`AbstractCellTable(Element elem, int pageSize, AbstractCellTable.Resources resources, ProvidesKey<T> keyProvider)` Constructs a table with the given page size, the specified `AbstractCellTable.Style`, and the given key provider.
`AbstractCellTable(Widget widget, int pageSize, AbstractCellTable.Resources resources, ProvidesKey<T> keyProvider)` Constructs a table with the given page size, the specified `AbstractCellTable.Style`, and the given key provider.

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods Deprecated Methods
`void` `addColumn(Column<T,?> col)` Adds a column to the end of the table.
`void` `addColumn(Column<T,?> col, Header<?> header)` Adds a column to the end of the table with an associated header.
`void` `addColumn(Column<T,?> col, Header<?> header, Header<?> footer)` Adds a column to the end of the table with an associated header and footer.
`void` `addColumn(Column<T,?> col, SafeHtml headerHtml)` Adds a column to the end of the table with an associated `SafeHtml` header.
`void` `addColumn(Column<T,?> col, SafeHtml headerHtml, SafeHtml footerHtml)` Adds a column to the end of the table with an associated `SafeHtml` header and footer.
`void` `addColumn(Column<T,?> col, java.lang.String headerString)` Adds a column to the end of the table with an associated String header.
`void` `addColumn(Column<T,?> col, java.lang.String headerString, java.lang.String footerString)` Adds a column to the end of the table with an associated String header and footer.
`HandlerRegistration` `addColumnSortHandler(ColumnSortEvent.Handler handler)` Add a handler to handle `ColumnSortEvent`s.
`abstract void` `addColumnStyleName(int index, java.lang.String styleName)` Add a style name to the `col` element at the specified index, creating it if necessary.
`HandlerRegistration` `addRowHoverHandler(RowHoverEvent.Handler handler)` Add a handler to handle `RowHoverEvent`s.
`void` `clearColumnWidth(Column<T,?> column)` Clear the width of the specified `Column`.
`void` `clearColumnWidth(java.lang.Integer column)` Clear the width of the specified `Column`.
`protected Element` `convertToElements(SafeHtml html)` Convert the specified HTML into DOM elements and return the parent of the DOM elements.
`protected boolean` `dependsOnSelection()` Check whether or not the cells in the view depend on the selection state.
`protected abstract void` `doSetColumnWidth(int column, java.lang.String width)` Set the width of a column.
`protected abstract void` `doSetHeaderVisible(boolean isFooter, boolean isVisible)` Show or hide a header section.
`void` `flush()` Flush all pending changes to the table and render immediately.
`protected Element` `getChildContainer()` Return the element that holds the rendered cells.
`protected TableRowElement` `getChildElement(int row)` Get the element that represents the specified index.
`Column<T,?>` `getColumn(int col)` Get the column at the specified index.
`int` `getColumnCount()` Get the number of columns in the table.
`int` `getColumnIndex(Column<T,?> column)` Get the index of the specified column.
`ColumnSortList` `getColumnSortList()` Get the `ColumnSortList` that specifies which columns are sorted.
`java.lang.String` `getColumnWidth(Column<T,?> column)` Get the width of a `Column`.
`(package private) java.lang.String` `getColumnWidth(int columnIndex)` Get the column width.
`Widget` `getEmptyTableWidget()` Get the widget displayed when the table has no rows.
`Header<?>` `getFooter(int index)` Get the `Header` from the footer section that was added with a `Column`.
`FooterBuilder<T>` `getFooterBuilder()` Get the `HeaderBuilder` used to generate the footer section.
`Header<?>` `getHeader(int index)` Get the `Header` from the header section that was added with a `Column`.
`HeaderBuilder<T>` `getHeaderBuilder()` Get the `HeaderBuilder` used to generate the header section.
`int` `getKeyboardSelectedColumn()` Get the index of the column that is currently selected via the keyboard.
`protected Element` `getKeyboardSelectedElement()` Get the element that has keyboard selection.
`int` `getKeyboardSelectedSubRow()` Get the index of the sub row that is currently selected via the keyboard.
`Widget` `getLoadingIndicator()` Get the widget displayed when the data is loading.
`protected int` `getRealColumnCount()` Get the real column count, which is the greater of the number of Columns or the maximum index of a column with a defined column width.
`AbstractCellTable.Resources` `getResources()` Get the resources used by this table.
`TableRowElement` `getRowElement(int row)` Get the `TableRowElement` for the specified row.
`RowStyles<T>` `getRowStyles()` Gets the object used to determine how a row is styled.
`protected TableRowElement` `getSubRowElement(int absRow, int subrow)` Get a subrow element given the index of the row value and the sub row index.
`protected abstract TableSectionElement` `getTableBodyElement()` Get the tbody element that contains the render row values.
`protected abstract TableSectionElement` `getTableFootElement()` Get the tfoot element that contains the footers.
`protected abstract TableSectionElement` `getTableHeadElement()` Get the thead element that contains the headers.
`void` `insertColumn(int beforeIndex, Column<T,?> col)` Inserts a column into the table at the specified index.
`void` `insertColumn(int beforeIndex, Column<T,?> col, Header<?> header)` Inserts a column into the table at the specified index with an associated header.
`void` `insertColumn(int beforeIndex, Column<T,?> col, Header<?> header, Header<?> footer)` Inserts a column into the table at the specified index with an associated header and footer.
`void` `insertColumn(int beforeIndex, Column<T,?> col, SafeHtml headerHtml)` Inserts a column into the table at the specified index with an associated `SafeHtml` header.
`void` `insertColumn(int beforeIndex, Column<T,?> col, SafeHtml headerHtml, SafeHtml footerHtml)` Inserts a column into the table at the specified index with an associated `SafeHtml` header and footer.
`void` `insertColumn(int beforeIndex, Column<T,?> col, java.lang.String headerString)` Inserts a column into the table at the specified index with an associated String header.
`void` `insertColumn(int beforeIndex, Column<T,?> col, java.lang.String headerString, java.lang.String footerString)` Inserts a column into the table at the specified index with an associated String header and footer.
`boolean` `isAutoFooterRefreshDisabled()` Check if auto footer refresh is enabled or disabled.
`boolean` `isAutoHeaderRefreshDisabled()` Check if auto header refresh is enabled or disabled.
`protected boolean` `isKeyboardNavigationSuppressed()` Check if keyboard navigation is being suppressed, such as when the user is editing a cell.
`boolean` `isSkipRowHoverCheck()` Gets the skipRowHoverCheck flag.
`boolean` `isSkipRowHoverFloatElementCheck()` Gets the skipRowHoverFloatElementCheck flag.
`boolean` `isSkipRowHoverStyleUpdate()` Gets the skipRowHoverStyleUpdate flag.
`protected void` `onBlur()` Called when the widget is blurred.
`protected void` `onBrowserEvent2(Event event)` Called after `AbstractHasData.onBrowserEvent(Event)` completes.
`protected void` `onFocus()` Called when the widget is focused.
`void` `redrawFooters()` Redraw the table's footers.
`void` `redrawHeaders()` Redraw the table's headers.
`protected void` `refreshColumnWidths()`
`void` `removeColumn(Column<T,?> col)` Remove a column.
`void` `removeColumn(int index)` Remove a column.
`abstract void` `removeColumnStyleName(int index, java.lang.String styleName)` Remove a style from the `col` element at the specified index.
`protected void` `renderRowValues(SafeHtmlBuilder sb, java.util.List<T> values, int start, SelectionModel<? super T> selectionModel)` Deprecated. as of GWT 2.5, use a `CellTableBuilder` to customize the table structure instead
`protected void` `renderRowValuesLegacy(SafeHtmlBuilder sb, java.util.List<T> values, int start, SelectionModel<? super T> selectionModel)` Deprecated. as of GWT 2.5, use a `CellTableBuilder` to customize the table structure instead
`protected void` `replaceAllChildren(java.util.List<T> values, SafeHtml html)` Replace all children with the specified html.
`protected void` `replaceChildren(java.util.List<T> values, int start, SafeHtml html)` Convert the specified HTML into DOM elements and replace the existing elements starting at the specified index.
`protected boolean` `resetFocusOnCell()` Reset focus on the currently focused cell.
`void` `setAutoFooterRefreshDisabled(boolean disabled)` Enable or disable auto footer refresh when row data is changed.
`void` `setAutoHeaderRefreshDisabled(boolean disabled)` Enable or disable auto header refresh when row data is changed.
`void` `setColumnWidth(Column<T,?> column, double width, Style.Unit unit)` Set the width of a `Column`.
`void` `setColumnWidth(Column<T,?> column, java.lang.String width)` Set the width of a `Column`.
`void` `setColumnWidth(int column, double width, Style.Unit unit)` Set the width of a `Column`.
`void` `setColumnWidth(int column, java.lang.String width)` Set the width of a `Column`.
`void` `setEmptyTableWidget(Widget widget)` Set the widget to display when the table has no rows.
`void` `setFooterBuilder(FooterBuilder<T> builder)` Set the `HeaderBuilder` used to build the footer section of the table.
`void` `setHeaderBuilder(HeaderBuilder<T> builder)` Set the `HeaderBuilder` used to build the header section of the table.
`protected void` `setKeyboardSelected(int index, boolean selected, boolean stealFocus)` Update an element to reflect its keyboard selected state.
`void` `setKeyboardSelectedColumn(int column)` Set the keyboard selected column index.
`void` `setKeyboardSelectedColumn(int column, boolean stealFocus)` Set the keyboard selected column index and optionally focus on the new cell.
`void` `setKeyboardSelectedRow(int row, boolean stealFocus)` Set the keyboard selected row and optionally focus on the new row.
`void` `setKeyboardSelectedRow(int row, int subrow, boolean stealFocus)` Set the keyboard selected row and subrow, optionally focus on the new row.
`void` `setLoadingIndicator(Widget widget)` Set the widget to display when the data is loading.
`void` `setRowStyles(RowStyles<T> rowStyles)` Sets the object used to determine how a row is styled; the change will take effect the next time that the table is rendered.
`void` `setSkipRowHoverCheck(boolean skipRowHoverCheck)` Sets the skipRowHoverCheck flag.
`void` `setSkipRowHoverFloatElementCheck(boolean skipRowHoverFloatElementCheck)` Sets the skipRowHoverFloatElementCheck flag.
`void` `setSkipRowHoverStyleUpdate(boolean skipRowHoverStyleUpdate)` Sets the skipRowHoverStyleUpdate flag.
`void` `setTableBuilder(CellTableBuilder<T> tableBuilder)` Specify the `CellTableBuilder` that will be used to render the row values into the table.

### Methods inherited from class com.google.gwt.user.cellview.client.AbstractHasData

`addCellPreviewHandler, addLoadingStateChangeHandler, addRangeChangeHandler, addRedrawHandler, addRowCountChangeHandler, addValueChangeHandler, adopt, cellConsumesEventType, checkRowBounds, convertToElements, doAttach, doDetach, getAccessKey, getDisplayedItem, getDisplayedItems, getKeyboardPagingPolicy, getKeyboardSelectedRow, getKeyboardSelectionPolicy, getKeyProvider, getPageSize, getPageStart, getPresenter, getRowContainer, getRowCount, getSelectionModel, getTabIndex, getValueKey, getVisibleItem, getVisibleItemCount, getVisibleItems, getVisibleRange, isRowCountExact, isRowWithinBounds, onBrowserEvent, onLoadingStateChanged, onUnload, redraw, redrawRow, replaceAllChildren, replaceChildren, setAccessKey, setFocus, setFocusable, setKeyboardPagingPolicy, setKeyboardSelectedRow, setKeyboardSelectionHandler, setKeyboardSelectionPolicy, setPageSize, setPageStart, setRowCount, setRowCount, setRowData, setRowData, setSelected, setSelectionModel, setSelectionModel, setTabIndex, setVisibleRange, setVisibleRange, setVisibleRangeAndClearData, showOrHide`

### Methods inherited from class com.google.gwt.user.client.ui.Composite

`claimElement, getWidget, initializeClaimedElement, initWidget, isAttached, onAttach, onDetach, render, render, resolvePotentialElement, setWidget`

### Methods inherited from class com.google.gwt.user.client.ui.Widget

`addAttachHandler, addBitlessDomHandler, addDomHandler, addHandler, asWidget, asWidgetOrNull, createHandlerManager, delegateEvent, doAttachChildren, doDetachChildren, fireEvent, getHandlerCount, getLayoutData, getParent, isOrWasAttached, onLoad, removeFromParent, setLayoutData, sinkEvents, unsinkEvents`

### Methods inherited from class com.google.gwt.user.client.ui.UIObject

`addStyleDependentName, addStyleName, ensureDebugId, ensureDebugId, ensureDebugId, getAbsoluteLeft, getAbsoluteTop, getElement, getOffsetHeight, getOffsetWidth, getStyleElement, getStyleName, getStyleName, getStylePrimaryName, getStylePrimaryName, getTitle, isVisible, isVisible, onEnsureDebugId, removeStyleDependentName, removeStyleName, setElement, setElement, setHeight, setPixelSize, setSize, setStyleDependentName, setStyleName, setStyleName, setStyleName, setStyleName, setStylePrimaryName, setStylePrimaryName, setTitle, setVisible, setVisible, setWidth, sinkBitlessEvent, toString`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait`

### Methods inherited from interface com.google.gwt.event.shared.HasHandlers

`fireEvent`

### Constructor Detail

#### AbstractCellTable

    public AbstractCellTable(Element elem,
                             int pageSize,
                             AbstractCellTable.Resources resources,
                             ProvidesKey<T> keyProvider)

Constructs a table with the given page size, the specified `AbstractCellTable.Style`, and the given key provider.

Parameters:
  `elem` - the parent `Element`
  `pageSize` - the page size
  `resources` - the resources to apply to the widget
  `keyProvider` - an instance of ProvidesKey<T>, or null if the record object should act as its own key

#### AbstractCellTable

    public AbstractCellTable(Widget widget,
                             int pageSize,
                             AbstractCellTable.Resources resources,
                             ProvidesKey<T> keyProvider)

Constructs a table with the given page size, the specified `AbstractCellTable.Style`, and the given key provider.

Parameters:
  `widget` - the parent widget
  `pageSize` - the page size
  `resources` - the resources to apply to the widget
  `keyProvider` - an instance of ProvidesKey<T>, or null if the record object should act as its own key

### Method Detail

#### addColumn

    public void addColumn(Column<T,?> col)

Adds a column to the end of the table.

Parameters:
  `col` - the column to be added

#### addColumn

    public void addColumn(Column<T,?> col,
                          Header<?> header)

Adds a column to the end of the table with an associated header.

Parameters:
  `col` - the column to be added
  `header` - the associated `Header`

#### addColumn

    public void addColumn(Column<T,?> col,
                          Header<?> header,
                          Header<?> footer)

Adds a column to the end of the table with an associated header and footer.

Parameters:
  `col` - the column to be added
  `header` - the associated `Header`
  `footer` - the associated footer (as a `Header` object)

#### addColumn

    public void addColumn(Column<T,?> col,
                          java.lang.String headerString)

Adds a column to the end of the table with an associated String header.

Parameters:
  `col` - the column to be added
  `headerString` - the associated header text, as a String

#### addColumn

    public void addColumn(Column<T,?> col,
                          SafeHtml headerHtml)

Adds a column to the end of the table with an associated `SafeHtml` header.

Parameters:
  `col` - the column to be added
  `headerHtml` - the associated header text, as safe HTML

#### addColumn

    public void addColumn(Column<T,?> col,
                          java.lang.String headerString,
                          java.lang.String footerString)

Adds a column to the end of the table with an associated String header and footer.

Parameters:
  `col` - the column to be added
  `headerString` - the associated header text, as a String
  `footerString` - the associated footer text, as a String

#### addColumn

    public void addColumn(Column<T,?> col,
                          SafeHtml headerHtml,
                          SafeHtml footerHtml)

Adds a column to the end of the table with an associated `SafeHtml` header and footer.

Parameters:
  `col` - the column to be added
  `headerHtml` - the associated header text, as safe HTML
  `footerHtml` - the associated footer text, as safe HTML

#### addColumnSortHandler

    public HandlerRegistration addColumnSortHandler(ColumnSortEvent.Handler handler)

Add a handler to handle `ColumnSortEvent`s.

Parameters:
  `handler` - the `ColumnSortEvent.Handler` to add
Returns:
  a `HandlerRegistration` to remove the handler

#### addColumnStyleName

    public abstract void addColumnStyleName(int index,
                                            java.lang.String styleName)

Add a style name to the `col` element at the specified index, creating it if necessary.

Parameters:
  `index` - the column index
  `styleName` - the style name to add

#### addRowHoverHandler

    public HandlerRegistration addRowHoverHandler(RowHoverEvent.Handler handler)

Add a handler to handle `RowHoverEvent`s.

Parameters:
  `handler` - the `RowHoverEvent.Handler` to add
Returns:
  a `HandlerRegistration` to remove the handler

#### clearColumnWidth

    public void clearColumnWidth(Column<T,?> column)

Clear the width of the specified `Column`.

Parameters:
  `column` - the column

#### clearColumnWidth

    public void clearColumnWidth(java.lang.Integer column)

Clear the width of the specified `Column`.

Parameters:
  `column` - the column index

#### flush

    public void flush()

Flush all pending changes to the table and render immediately.

Modifications to the table, such as adding columns or setting data, are not rendered immediately. Instead, changes are coalesced at the end of the current event loop to avoid rendering the table multiple times. Use this method to force the table to render all pending modifications immediately.

#### getColumn

    public Column<T,?> getColumn(int col)

Get the column at the specified index.

Parameters:
  `col` - the index of the column to retrieve
Returns:
  the `Column` at the index

#### getColumnCount

    public int getColumnCount()

Get the number of columns in the table.

Returns:
  the column count

#### getColumnIndex

    public int getColumnIndex(Column<T,?> column)

Get the index of the specified column.

Parameters:
  `column` - the column to search for
Returns:
  the index of the column, or -1 if not found

#### getColumnSortList

    public ColumnSortList getColumnSortList()

Get the `ColumnSortList` that specifies which columns are sorted. Modifications to the `ColumnSortList` will be reflected in the table header.

Note that the implementation may redraw the headers on every modification to the `ColumnSortList`.

Returns:
  the `ColumnSortList`

#### getColumnWidth

    public java.lang.String getColumnWidth(Column<T,?> column)

Get the width of a `Column`.

Parameters:
  `column` - the column
Returns:
  the width of the column, or null if not set
See Also:
  `#setColumnWidth(Column, double, Unit)`

#### getEmptyTableWidget

    public Widget getEmptyTableWidget()

Get the widget displayed when the table has no rows.

Returns:
  the empty table widget

#### getFooter

    public Header<?> getFooter(int index)

Get the `Header` from the footer section that was added with a `Column`.

#### getFooterBuilder

    public FooterBuilder<T> getFooterBuilder()

Get the `HeaderBuilder` used to generate the footer section.

#### getHeader

    public Header<?> getHeader(int index)

Get the `Header` from the header section that was added with a `Column`.

#### getHeaderBuilder

    public HeaderBuilder<T> getHeaderBuilder()

Get the `HeaderBuilder` used to generate the header section.

#### getKeyboardSelectedColumn

    public int getKeyboardSelectedColumn()

Get the index of the column that is currently selected via the keyboard.

Returns:
  the currently selected column, or -1 if none selected

#### getKeyboardSelectedSubRow

    public int getKeyboardSelectedSubRow()

Get the index of the sub row that is currently selected via the keyboard. If the row value maps to one rendered row element, the subrow is 0.

Returns:
  the currently selected subrow, or -1 if none selected

#### getLoadingIndicator

    public Widget getLoadingIndicator()

Get the widget displayed when the data is loading.

Returns:
  the loading indicator

#### getResources

    public AbstractCellTable.Resources getResources()

Get the resources used by this table.

#### getRowElement

    public TableRowElement getRowElement(int row)

Get the `TableRowElement` for the specified row. If the row element has not been created, null is returned.

Parameters:
  `row` - the row index
Returns:
  the row element, or null if it doesn't exists
Throws:
  `java.lang.IndexOutOfBoundsException` - if the row index is outside of the current page

#### getRowStyles

    public RowStyles<T> getRowStyles()

Gets the object used to determine how a row is styled.

Returns:
  the `RowStyles` object if set, null if not

#### insertColumn

    public void insertColumn(int beforeIndex,
                             Column<T,?> col)

Inserts a column into the table at the specified index.

Parameters:
  `beforeIndex` - the index to insert the column
  `col` - the column to be added

#### insertColumn

    public void insertColumn(int beforeIndex,
                             Column<T,?> col,
                             Header<?> header)

Inserts a column into the table at the specified index with an associated header.

Parameters:
  `beforeIndex` - the index to insert the column
  `col` - the column to be added
  `header` - the associated `Header`

#### insertColumn

    public void insertColumn(int beforeIndex,
                             Column<T,?> col,
                             Header<?> header,
                             Header<?> footer)

Inserts a column into the table at the specified index with an associated header and footer.

Parameters:
  `beforeIndex` - the index to insert the column
  `col` - the column to be added
  `header` - the associated `Header`
  `footer` - the associated footer (as a `Header` object)
Throws:
  `java.lang.IndexOutOfBoundsException` - if the index is out of range

#### insertColumn

    public void insertColumn(int beforeIndex,
                             Column<T,?> col,
                             java.lang.String headerString)

Inserts a column into the table at the specified index with an associated String header.

Parameters:
  `beforeIndex` - the index to insert the column
  `col` - the column to be added
  `headerString` - the associated header text, as a String

#### insertColumn

    public void insertColumn(int beforeIndex,
                             Column<T,?> col,
                             SafeHtml headerHtml)

Inserts a column into the table at the specified index with an associated `SafeHtml` header.

Parameters:
  `beforeIndex` - the index to insert the column
  `col` - the column to be added
  `headerHtml` - the associated header text, as safe HTML

#### insertColumn

    public void insertColumn(int beforeIndex,
                             Column<T,?> col,
                             java.lang.String headerString,
                             java.lang.String footerString)

Inserts a column into the table at the specified index with an associated String header and footer.

Parameters:
  `beforeIndex` - the index to insert the column
  `col` - the column to be added
  `headerString` - the associated header text, as a String
  `footerString` - the associated footer text, as a String

#### insertColumn

    public void insertColumn(int beforeIndex,
                             Column<T,?> col,
                             SafeHtml headerHtml,
                             SafeHtml footerHtml)

Inserts a column into the table at the specified index with an associated `SafeHtml` header and footer.

Parameters:
  `beforeIndex` - the index to insert the column
  `col` - the column to be added
  `headerHtml` - the associated header text, as safe HTML
  `footerHtml` - the associated footer text, as safe HTML

#### isAutoFooterRefreshDisabled

    public boolean isAutoFooterRefreshDisabled()

Check if auto footer refresh is enabled or disabled.

Returns:
  true if disabled, false if enabled
See Also:
  `setAutoFooterRefreshDisabled(boolean)`

#### isAutoHeaderRefreshDisabled

    public boolean isAutoHeaderRefreshDisabled()

Check if auto header refresh is enabled or disabled.

Returns:
  true if disabled, false if enabled
See Also:
  `setAutoHeaderRefreshDisabled(boolean)`

#### isSkipRowHoverCheck

    public boolean isSkipRowHoverCheck()

Gets the skipRowHoverCheck flag. If true, the CellTable will not check for row-level hover events (MOUSEOVER and MOUSEOUT).

Returns:
  the flag value

#### isSkipRowHoverFloatElementCheck

    public boolean isSkipRowHoverFloatElementCheck()

Gets the skipRowHoverFloatElementCheck flag. If true, the CellTable will not check for floating (fixed position) elements over the hovered row.

Returns:
  the flag value

#### isSkipRowHoverStyleUpdate

    public boolean isSkipRowHoverStyleUpdate()

Gets the skipRowHoverStyleUpdate flag. If true, the CellTable will not update the row's style on row-level hover events (MOUSEOVER and MOUSEOUT).

Returns:
  the flag value

#### redrawFooters

    public void redrawFooters()

Redraw the table's footers. The footers will be re-rendered synchronously.

#### redrawHeaders

    public void redrawHeaders()

Redraw the table's headers. The headers will be re-rendered synchronously.

#### removeColumn

    public void removeColumn(Column<T,?> col)

Remove a column.

Parameters:
  `col` - the column to remove

#### removeColumn

    public void removeColumn(int index)

Remove a column.

Parameters:
  `index` - the column index

#### removeColumnStyleName

    public abstract void removeColumnStyleName(int index,
                                               java.lang.String styleName)

Remove a style from the `col` element at the specified index.

Parameters:
  `index` - the column index
  `styleName` - the style name to remove

#### setAutoFooterRefreshDisabled

    public void setAutoFooterRefreshDisabled(boolean disabled)

Enable or disable auto footer refresh when row data is changed. By default, footers are refreshed every time the row data changes in case the headers depend on the current row data. If the headers do not depend on the current row data, you can disable this feature to improve performance.

Note that headers will still refresh when columns are added or removed, regardless of whether or not this feature is enabled.

#### setAutoHeaderRefreshDisabled

    public void setAutoHeaderRefreshDisabled(boolean disabled)

Enable or disable auto header refresh when row data is changed. By default, headers are refreshed every time the row data changes in case the footers depend on the current row data. If the footers do not depend on the current row data, you can disable this feature to improve performance.

Note that footers will still refresh when columns are added or removed, regardless of whether or not this feature is enabled.

#### setColumnWidth

    public void setColumnWidth(Column<T,?> column,
                               java.lang.String width)

Set the width of a `Column`. The width will persist with the column and takes precedence of any width set via `setColumnWidth(int, String)`.

Parameters:
  `column` - the column
  `width` - the width of the column

#### setColumnWidth

    public void setColumnWidth(Column<T,?> column,
                               double width,
                               Style.Unit unit)

Set the width of a `Column`. The width will persist with the column and takes precedence of any width set via `#setColumnWidth(int, double, Unit)`.

Parameters:
  `column` - the column
  `width` - the width of the column
  `unit` - the `Style.Unit` of measurement

#### setColumnWidth

    public void setColumnWidth(int column,
                               double width,
                               Style.Unit unit)

Set the width of a `Column`.

Parameters:
  `column` - the column
  `width` - the width of the column
  `unit` - the `Style.Unit` of measurement

#### setColumnWidth

    public void setColumnWidth(int column,
                               java.lang.String width)

Set the width of a `Column`.

Parameters:
  `column` - the column
  `width` - the width of the column

#### setEmptyTableWidget

    @UiChild(tagname="emptyTableWidget",
             limit=1)
    public void setEmptyTableWidget(Widget widget)

Set the widget to display when the table has no rows.

Parameters:
  `widget` - the empty table widget, or null to disable

#### setFooterBuilder

    public void setFooterBuilder(FooterBuilder<T> builder)

Set the `HeaderBuilder` used to build the footer section of the table.

#### setHeaderBuilder

    public void setHeaderBuilder(HeaderBuilder<T> builder)

Set the `HeaderBuilder` used to build the header section of the table.

#### setKeyboardSelectedColumn

    public final void setKeyboardSelectedColumn(int column)

Set the keyboard selected column index.

If keyboard selection is disabled, this method does nothing.

If the keyboard selected column is greater than the number of columns in the keyboard selected row, the last column in the row is selected, but the column index is remembered.

Parameters:
  `column` - the column index, greater than or equal to zero

#### setKeyboardSelectedColumn

    public void setKeyboardSelectedColumn(int column,
                                          boolean stealFocus)

Set the keyboard selected column index and optionally focus on the new cell.

Parameters:
  `column` - the column index, greater than or equal to zero
  `stealFocus` - true to focus on the new column
See Also:
  `setKeyboardSelectedColumn(int)`

#### setKeyboardSelectedRow

    public void setKeyboardSelectedRow(int row,
                                       boolean stealFocus)

Description copied from class: `AbstractHasData`
Set the keyboard selected row and optionally focus on the new row.

Overrides:
  `setKeyboardSelectedRow` in class `AbstractHasData<T>`
Parameters:
  `row` - the row index relative to the page start
  `stealFocus` - true to focus on the new row
See Also:
  `AbstractHasData.setKeyboardSelectedRow(int)`

#### setKeyboardSelectedRow

    public void setKeyboardSelectedRow(int row,
                                       int subrow,
                                       boolean stealFocus)

Set the keyboard selected row and subrow, optionally focus on the new row.

Parameters:
  `row` - the row index relative to the page start
  `subrow` - the row index of the child row
  `stealFocus` - true to focus on the new row
See Also:
  `AbstractHasData.setKeyboardSelectedRow(int)`

#### setLoadingIndicator

    @UiChild(tagname="loadingIndicator",
             limit=1)
    public void setLoadingIndicator(Widget widget)

Set the widget to display when the data is loading.

Parameters:
  `widget` - the loading indicator, or null to disable

#### setRowStyles

    public void setRowStyles(RowStyles<T> rowStyles)

Sets the object used to determine how a row is styled; the change will take effect the next time that the table is rendered.

Parameters:
  `rowStyles` - a `RowStyles` object

#### setSkipRowHoverCheck

    public void setSkipRowHoverCheck(boolean skipRowHoverCheck)

Sets the skipRowHoverCheck flag. If set, the CellTable will not check for row-level hover events (MOUSEOVER and MOUSEOUT).

Parameters:
  `skipRowHoverCheck` - the new flag value

#### setSkipRowHoverFloatElementCheck

    public void setSkipRowHoverFloatElementCheck(boolean skipRowHoverFloatElementCheck)

Sets the skipRowHoverFloatElementCheck flag. If set, the CellTable will not not check for floating (fixed position) elements over the hovered row.

Parameters:
  `skipRowHoverFloatElementCheck` - the new flag value

#### setSkipRowHoverStyleUpdate

    public void setSkipRowHoverStyleUpdate(boolean skipRowHoverStyleUpdate)

Sets the skipRowHoverStyleUpdate flag. If set, the CellTable will not update the row's style on row-level hover events (MOUSEOVER and MOUSEOUT).

Parameters:
  `skipRowHoverCheck` - the new flag value

#### setTableBuilder

    public void setTableBuilder(CellTableBuilder<T> tableBuilder)

Specify the `CellTableBuilder` that will be used to render the row values into the table.

#### convertToElements

    protected Element convertToElements(SafeHtml html)

Description copied from class: `AbstractHasData`
Convert the specified HTML into DOM elements and return the parent of the DOM elements.

Overrides:
  `convertToElements` in class `AbstractHasData<T>`
Parameters:
  `html` - the HTML to convert
Returns:
  the parent element

#### dependsOnSelection

    protected boolean dependsOnSelection()

Description copied from class: `AbstractHasData`
Check whether or not the cells in the view depend on the selection state.

Specified by:
  `dependsOnSelection` in class `AbstractHasData<T>`
Returns:
  true if cells depend on selection, false if not

#### doSetColumnWidth

    protected abstract void doSetColumnWidth(int column,
                                             java.lang.String width)

Set the width of a column.

Parameters:
  `column` - the column index
  `width` - the width, or null to clear the width

#### doSetHeaderVisible

    protected abstract void doSetHeaderVisible(boolean isFooter,
                                               boolean isVisible)

Show or hide a header section.

Parameters:
  `isFooter` - true for the footer, false for the header
  `isVisible` - true to show, false to hide

#### getChildContainer

    protected Element getChildContainer()

Description copied from class: `AbstractHasData`
Return the element that holds the rendered cells.

Specified by:
  `getChildContainer` in class `AbstractHasData<T>`
Returns:
  the container `Element`

#### getChildElement

    protected TableRowElement getChildElement(int row)

Get the element that represents the specified index.

The row element may not be the same as the TR element at the specified index if some row values are rendered with additional rows.

Overrides:
  `getChildElement` in class `AbstractHasData<T>`
Parameters:
  `row` - the row index, relative to the page start
Returns:
  the row element, or null if it doesn't exists
Throws:
  `java.lang.IndexOutOfBoundsException` - if the row index is outside of the current page

#### getKeyboardSelectedElement

    protected Element getKeyboardSelectedElement()

Description copied from class: `AbstractHasData`
Get the element that has keyboard selection.

Specified by:
  `getKeyboardSelectedElement` in class `AbstractHasData<T>`
Returns:
  the keyboard selected element

#### getRealColumnCount

    protected int getRealColumnCount()

Get the real column count, which is the greater of the number of Columns or the maximum index of a column with a defined column width.

#### getTableBodyElement

    protected abstract TableSectionElement getTableBodyElement()

Get the tbody element that contains the render row values.

#### getTableFootElement

    protected abstract TableSectionElement getTableFootElement()

Get the tfoot element that contains the footers.

#### getTableHeadElement

    protected abstract TableSectionElement getTableHeadElement()

Get the thead element that contains the headers.

#### isKeyboardNavigationSuppressed

    protected boolean isKeyboardNavigationSuppressed()

Description copied from class: `AbstractHasData`
Check if keyboard navigation is being suppressed, such as when the user is editing a cell.

Specified by:
  `isKeyboardNavigationSuppressed` in class `AbstractHasData<T>`
Returns:
  true if suppressed, false if not

#### onBlur

    protected void onBlur()

Description copied from class: `AbstractHasData`
Called when the widget is blurred.

Overrides:
  `onBlur` in class `AbstractHasData<T>`

#### onBrowserEvent2

    protected void onBrowserEvent2(Event event)

Description copied from class: `AbstractHasData`
Called after `AbstractHasData.onBrowserEvent(Event)` completes.

Overrides:
  `onBrowserEvent2` in class `AbstractHasData<T>`
Parameters:
  `event` - the event that was fired

#### onFocus

    protected void onFocus()

Description copied from class: `AbstractHasData`
Called when the widget is focused.

Overrides:
  `onFocus` in class `AbstractHasData<T>`

#### refreshColumnWidths

    protected void refreshColumnWidths()

#### renderRowValues

    @Deprecated
    protected void renderRowValues(SafeHtmlBuilder sb,
                                               java.util.List<T> values,
                                               int start,
                                               SelectionModel<? super T> selectionModel)

Deprecated. as of GWT 2.5, use a `CellTableBuilder` to customize the table structure instead
Description copied from class: `AbstractHasData`
Render all row values into the specified `SafeHtmlBuilder`.

Subclasses can optionally throw an `UnsupportedOperationException` if they prefer to render the rows in `AbstractHasData.replaceAllChildren(List, SafeHtml)` and `AbstractHasData.replaceChildren(List, int, SafeHtml)`. In this case, the `SafeHtml` argument will be null. Though a bit hacky, this is designed to supported legacy widgets that use `SafeHtmlBuilder`, and newer widgets that use other builders, such as the ElementBuilder API.

Specified by:
  `renderRowValues` in class `AbstractHasData<T>`
Parameters:
  `sb` - the `SafeHtmlBuilder` to render into
  `values` - the row values
  `start` - the absolute start index of the values
  `selectionModel` - the `SelectionModel`
See Also:
  `renderRowValuesLegacy(SafeHtmlBuilder, List, int, SelectionModel)`

#### renderRowValuesLegacy

    @Deprecated
    protected final void renderRowValuesLegacy(SafeHtmlBuilder sb,
                                                           java.util.List<T> values,
                                                           int start,
                                                           SelectionModel<? super T> selectionModel)

Deprecated. as of GWT 2.5, use a `CellTableBuilder` to customize the table structure instead
Render all row values into the specified `SafeHtmlBuilder`.

This method is here for legacy reasons, to support subclasses that call `renderRowValues(SafeHtmlBuilder, List, int, SelectionModel)`.

Parameters:
  `sb` - the `SafeHtmlBuilder` to render into
  `values` - the row values
  `start` - the absolute start index of the values
  `selectionModel` - the `SelectionModel`

#### replaceAllChildren

    protected void replaceAllChildren(java.util.List<T> values,
                                      SafeHtml html)

Description copied from class: `AbstractHasData`
Replace all children with the specified html.

Overrides:
  `replaceAllChildren` in class `AbstractHasData<T>`
Parameters:
  `values` - the values of the new children
  `html` - the html to render, or null if `AbstractHasData.renderRowValues(SafeHtmlBuilder, List, int, SelectionModel)` throws an `UnsupportedOperationException`

#### replaceChildren

    protected void replaceChildren(java.util.List<T> values,
                                   int start,
                                   SafeHtml html)

Description copied from class: `AbstractHasData`
Convert the specified HTML into DOM elements and replace the existing elements starting at the specified index. If the number of children specified exceeds the existing number of children, the remaining children should be appended.

Overrides:
  `replaceChildren` in class `AbstractHasData<T>`
Parameters:
  `values` - the values of the new children
  `start` - the start index to be replaced, relative to the page start
  `html` - the html to render, or null if `AbstractHasData.renderRowValues(SafeHtmlBuilder, List, int, SelectionModel)` throws an `UnsupportedOperationException`

#### resetFocusOnCell

    protected boolean resetFocusOnCell()

Description copied from class: `AbstractHasData`
Reset focus on the currently focused cell.

Specified by:
  `resetFocusOnCell` in class `AbstractHasData<T>`
Returns:
  true if focus is taken, false if not

#### setKeyboardSelected

    protected void setKeyboardSelected(int index,
                                       boolean selected,
                                       boolean stealFocus)

Description copied from class: `AbstractHasData`
Update an element to reflect its keyboard selected state.

Specified by:
  `setKeyboardSelected` in class `AbstractHasData<T>`
Parameters:
  `index` - the index of the element
  `selected` - true if selected, false if not
  `stealFocus` - true if the row should steal focus, false if not

#### getColumnWidth

    java.lang.String getColumnWidth(int columnIndex)

Get the column width. Associating a width with a `Column` takes precedence over setting the width of a column index.

Parameters:
  `columnIndex` - the column index
Returns:
  the column width, or null if none specified

#### getSubRowElement

    protected TableRowElement getSubRowElement(int absRow,
                                               int subrow)

Get a subrow element given the index of the row value and the sub row index.

Parameters:
  `absRow` - the absolute row value index
  `subrow` - the index of the subrow beneath the row.
Returns:
  the row element, or null if not found