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 ofAbstractDataProvider
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
Constructors Modifier Constructor Description protected
AsyncDataProvider()
Constructs an AsyncDataProvider without a key provider.protected
AsyncDataProvider(ProvidesKey<T> keyProvider)
Constructs an AsyncDataProvider with the given key provider.
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description 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
-
-
-
-
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 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:AbstractDataProvider
Inform the displays of the new data.- Overrides:
updateRowData
in classAbstractDataProvider<T>
- Parameters:
start
- the start indexvalues
- the data values
-
-