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
    Modifier | Constructor and Description
    --- | ---
    `protected` | `AbstractDataProvider()` Construct an AbstractDataProvider without a key provider.
    `protected` | `AbstractDataProvider(ProvidesKey<T> keyProvider)` Construct an AbstractDataProvider with a given key provider.

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `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