Package com.google.gwt.view.client
Class AsyncDataProvider<T>
- java.lang.Object
-
- com.google.gwt.view.client.AbstractDataProvider<T>
-
- 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 ofAbstractDataProviderthat 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
Constructors Modifier Constructor Description protectedAsyncDataProvider()Constructs an AsyncDataProvider without a key provider.protectedAsyncDataProvider(ProvidesKey<T> keyProvider)Constructs an AsyncDataProvider with the given key provider.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description voidupdateRowCount(int size, boolean exact)Inform the displays of the total number of items that are available.voidupdateRowData(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
-
-
-
-
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:AbstractDataProviderInform the displays of the total number of items that are available.- Overrides:
updateRowCountin classAbstractDataProvider<T>- Parameters:
size- the new total row countexact- 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:AbstractDataProviderInform the displays of the new data.- Overrides:
updateRowDatain classAbstractDataProvider<T>- Parameters:
start- the start indexvalues- the data values
-
-