GWT 2.7.0

com.google.gwt.view.client
Class AsyncDataProvider<T>

java.lang.Object
  extended by com.google.gwt.view.client.AbstractDataProvider<T>
      extended by com.google.gwt.view.client.AsyncDataProvider<T>
Type Parameters:
T - the data type of records in the list
All Implemented Interfaces:
ProvidesKey<T>

public abstract class AsyncDataProvider<T>
extends AbstractDataProvider<T>

An implementation of AbstractDataProvider that allows the data to be modified.

Example

public class AsyncDataProviderExample implements EntryPoint {

  /**
   * A custom {@link AsyncDataProvider}.
   */
  private static class MyDataProvider extends AsyncDataProvider<String> {
    /**
     * {@link #onRangeChanged(HasData)} is called when the table requests a new
     * range of data. You can push data back to the displays using
     * {@link #updateRowData(int, List)}.
     */
    @Override
    protected void onRangeChanged(HasData<String> display) {
      // Get the new range.
      final Range range = display.getVisibleRange();

      /*
       * Query the data asynchronously. If you are using a database, you can
       * make an RPC call here. We'll use a Timer to simulate a delay.
       */
      new Timer() {
        @Override
        public void run() {
          // We are creating fake data. Normally, the data will come from a
          // server.
          int start = range.getStart();
          int length = range.getLength();
          List<String> newData = new ArrayList<String>();
          for (int i = start; i < start + length; i++) {
            newData.add("Item " + i);
          }

          // Push the data to the displays. AsyncDataProvider will only update
          // displays that are within range of the data.
          updateRowData(start, newData);
        }
      }.schedule(3000);
    }
  }

  public void onModuleLoad() {
    // Create a CellList.
    CellList<String> cellList = new CellList<String>(new TextCell());

    // Create a data provider.
    MyDataProvider dataProvider = new MyDataProvider();

    // Add the cellList to the dataProvider.
    dataProvider.addDataDisplay(cellList);

    // Create paging controls.
    SimplePager pager = new SimplePager();
    pager.setDisplay(cellList);

    // Add the widgets to the root panel.
    VerticalPanel vPanel = new VerticalPanel();
    vPanel.add(pager);
    vPanel.add(cellList);
    RootPanel.get().add(vPanel);
  }
}


Constructor Summary
protected AsyncDataProvider()
          Constructs an AsyncDataProvider without a key provider.
protected AsyncDataProvider(ProvidesKey<T> keyProvider)
          Constructs an AsyncDataProvider with the given key provider.
 
Method Summary
 void updateRowCount(int size, boolean exact)
          Inform the displays of the total number of items that are available.
 void updateRowData(int start, java.util.List<T> values)
          Inform the displays of the new data.
 
Methods inherited from class com.google.gwt.view.client.AbstractDataProvider
addDataDisplay, getDataDisplays, getKey, getKeyProvider, getRanges, onRangeChanged, removeDataDisplay, updateRowData
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

AsyncDataProvider

protected AsyncDataProvider()
Constructs an AsyncDataProvider without a key provider.


AsyncDataProvider

protected AsyncDataProvider(ProvidesKey<T> keyProvider)
Constructs an AsyncDataProvider with the given key provider.

Parameters:
keyProvider - an instance of ProvidesKey, or null if the record object should act as its own key
Method Detail

updateRowCount

public void updateRowCount(int size,
                           boolean exact)
Description copied from class: AbstractDataProvider
Inform the displays of the total number of items that are available.

Overrides:
updateRowCount in class AbstractDataProvider<T>
Parameters:
size - the new total row count
exact - true if the count is exact, false if it is an estimate

updateRowData

public void updateRowData(int start,
                          java.util.List<T> values)
Description copied from class: AbstractDataProvider
Inform the displays of the new data.

Overrides:
updateRowData in class AbstractDataProvider<T>
Parameters:
start - the start index
values - the data values

GWT 2.7.0