com.google.gwt.view.client

## Class AbstractDataProvider<T>

- java.lang.Object
- - com.google.gwt.view.client.AbstractDataProvider<T>

Type Parameters:
  `T` - the data type of records in the list

All Implemented Interfaces:
  ProvidesKey<T>

Direct Known Subclasses:
  AsyncDataProvider, ListDataProvider

    public abstract class AbstractDataProvider<T>
    extends java.lang.Object
    implements ProvidesKey<T>

A base implementation of a data source for `HasData` implementations.

### Constructor Summary

Constructors
`protected` `AbstractDataProvider()` Construct an AbstractDataProvider without a key provider.
`protected` `AbstractDataProvider(ProvidesKey<T> keyProvider)` Construct an AbstractDataProvider with a given key provider.

### Method Summary

All Methods Instance Methods Abstract Methods Concrete Methods
`void` `addDataDisplay(HasData<T> display)` Adds a data display to this adapter.
`java.util.Set<HasData<T>>` `getDataDisplays()` Get the set of displays currently assigned to this adapter.
`java.lang.Object` `getKey(T item)` Get the key for a list item.
`ProvidesKey<T>` `getKeyProvider()` Get the `ProvidesKey` that provides keys for list items.
`Range[]` `getRanges()` Get the current ranges of all displays.
`protected abstract void` `onRangeChanged(HasData<T> display)` Called when a display changes its range of interest.
`void` `removeDataDisplay(HasData<T> display)` Remove the given data display.
`protected void` `updateRowCount(int count, boolean exact)` Inform the displays of the total number of items that are available.
`protected void` `updateRowData(HasData<T> display, int start, java.util.List<T> values)` Informs a single display of new data.
`protected void` `updateRowData(int start, java.util.List<T> values)` Inform the displays of the new data.

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

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

### Constructor Detail

#### AbstractDataProvider

    protected AbstractDataProvider()

Construct an AbstractDataProvider without a key provider.

#### AbstractDataProvider

    protected AbstractDataProvider(ProvidesKey<T> keyProvider)

Construct an AbstractDataProvider with a given key provider.

Parameters:
  `keyProvider` - a `ProvidesKey` object

### Method Detail

#### addDataDisplay

    public void addDataDisplay(HasData<T> display)

Adds a data display to this adapter. The current range of interest of the display will be populated with data.

Parameters:
  `display` - a `HasData`.

#### getDataDisplays

    public java.util.Set<HasData<T>> getDataDisplays()

Get the set of displays currently assigned to this adapter.

Returns:
  the set of `HasData`

#### getKey

    public java.lang.Object getKey(T item)

Get the key for a list item. The default implementation returns the item itself.

Specified by:
  `getKey` in interface `ProvidesKey<T>`
Parameters:
  `item` - the list item
Returns:
  the key that represents the item

#### getKeyProvider

    public ProvidesKey<T> getKeyProvider()

Get the `ProvidesKey` that provides keys for list items.

Returns:
  the `ProvidesKey`

#### getRanges

    public Range[] getRanges()

Get the current ranges of all displays.

Returns:
  the ranges

#### removeDataDisplay

    public void removeDataDisplay(HasData<T> display)

Remove the given data display.

Parameters:
  `display` - a `HasData` instance
Throws:
  `java.lang.IllegalStateException` - if the display is not present

#### onRangeChanged

    protected abstract void onRangeChanged(HasData<T> display)

Called when a display changes its range of interest.

Parameters:
  `display` - the display whose range has changed

#### updateRowCount

    protected void updateRowCount(int count,
                                  boolean exact)

Inform the displays of the total number of items that are available.

Parameters:
  `count` - the new total row count
  `exact` - true if the count is exact, false if it is an estimate

#### updateRowData

    protected void updateRowData(int start,
                                 java.util.List<T> values)

Inform the displays of the new data.

Parameters:
  `start` - the start index
  `values` - the data values

#### updateRowData

    protected void updateRowData(HasData<T> display,
                                 int start,
                                 java.util.List<T> values)

Informs a single display of new data.

Parameters:
  `display` - the display to be updated
  `start` - the start index
  `values` - the data values