Hi, I'm not sure where to post for incubator -- it doesn't have its
own mailing list.
I'm trying to use the PagingScrollTable widget from incubator. It
seems to work just great except I cannot get the columns to sort.
>From my understanding, there is a built-in quicksort implementation
that you can override if you wish. QS should work fine for me. I
have a simple table model here with two columns (firstName, lastName)
and the datatype is a string.
A sample onModuleLoad app using the PagingScrollTable is pasted below
that sets up some mock data. I may just be using the API incorrectly,
but I can't see it. Documentation is sparse.
Anyone have any insight on this??
Thanks in advance,
Davis
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.gen2.table.client.AbstractColumnDefinition;
import com.google.gwt.gen2.table.client.CachedTableModel;
import com.google.gwt.gen2.table.client.DefaultRowRenderer;
import com.google.gwt.gen2.table.client.DefaultTableDefinition;
import com.google.gwt.gen2.table.client.FixedWidthGridBulkRenderer;
import com.google.gwt.gen2.table.client.MutableTableModel;
import com.google.gwt.gen2.table.client.PagingOptions;
import com.google.gwt.gen2.table.client.PagingScrollTable;
import com.google.gwt.gen2.table.client.ScrollTable;
import com.google.gwt.gen2.table.client.TableDefinition;
import com.google.gwt.gen2.table.client.TableModel;
import
com.google.gwt.gen2.table.client.AbstractScrollTable.SortPolicy;
import com.google.gwt.gen2.table.client.SelectionGrid.SelectionPolicy;
import com.google.gwt.gen2.table.client.TableModelHelper.Request;
import com.google.gwt.gen2.table.client.TableModelHelper.Response;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.RootPanel;
/**
* Entry point class for the Client application.
*/
public class Client implements EntryPoint {
private CachedTableModel<ModelObject> cachedTableModel;
private PagingScrollTable<ModelObject> pagingScrollTable;
private DataSourceTableModel tableModel;
/**
* @see com.google.gwt.core.client.EntryPoint#onModuleLoad()
*/
@Override
public void onModuleLoad() {
// add the scroll table
pagingScrollTable = createScrollTable();
pagingScrollTable.setHeight("200px");
RootPanel.get().add(pagingScrollTable);
// add the paging options
PagingOptions pagingOptions = new
PagingOptions(pagingScrollTable);
RootPanel.get().add(pagingOptions);
// get some mock data
List<ModelObject> list = getMockData();
// add it to the table
showData(list);
}
private List<ModelObject> getMockData() {
return Arrays.asList(
new ModelObject("first", "last"),
new ModelObject("bob", "jones"),
new ModelObject("harry", "smith"),
new ModelObject("nancy", "zen"));
}
private void showData(List<ModelObject> list) {
tableModel.setData(list);
tableModel.setRowCount(list.size());
cachedTableModel.clearCache();
cachedTableModel.setRowCount(list.size());
pagingScrollTable.gotoPage(0, true);
pagingScrollTable.getDataTable().sortColumn(0);
pagingScrollTable.redraw();
}
private PagingScrollTable<ModelObject> createScrollTable() {
tableModel = new DataSourceTableModel();
cachedTableModel = createCachedTableModel(tableModel);
TableDefinition<ModelObject> tableDef = createTableDefinition();
PagingScrollTable<ModelObject> scrollTable = new
PagingScrollTable<ModelObject>(cachedTableModel, tableDef);
scrollTable.setPageSize(200);
scrollTable.setEmptyTableWidget(new HTML("There is no data to
display"));
scrollTable.getDataTable().setSelectionPolicy
(SelectionPolicy.ONE_ROW);
FixedWidthGridBulkRenderer<ModelObject> bulkRenderer =
new
FixedWidthGridBulkRenderer<ModelObject>(scrollTable.getDataTable
(), scrollTable);
scrollTable.setBulkRenderer(bulkRenderer);
scrollTable.setCellPadding(3);
scrollTable.setCellSpacing(0);
scrollTable.setResizePolicy(ScrollTable.ResizePolicy.FILL_WIDTH);
scrollTable.setSortPolicy(SortPolicy.SINGLE_CELL);
return scrollTable;
}
private CachedTableModel<ModelObject> createCachedTableModel
(DataSourceTableModel tableModel) {
CachedTableModel<ModelObject> tm = new
CachedTableModel<ModelObject>
(tableModel);
tm.setPreCachedRowCount(200);
tm.setPostCachedRowCount(200);
tm.setRowCount(1000);
return tm;
}
private DefaultTableDefinition<ModelObject> createTableDefinition() {
DefaultTableDefinition<ModelObject> td = new
DefaultTableDefinition<ModelObject>();
String[] rowColors = new String[] { "#FFFFDD", "#EEEEEE" };
td.setRowRenderer(new
DefaultRowRenderer<ModelObject>(rowColors));
// firstname
{
FirstNameColumnDefinition colDef = new
FirstNameColumnDefinition();
colDef.setColumnSortable(true);
colDef.setColumnTruncatable(false);
colDef.setHeader(0, new HTML("First Name"));
colDef.setHeaderCount(1);
colDef.setHeaderTruncatable(false);
td.addColumnDefinition(colDef);
}
// lastname
{
LastNameColumnDefinition colDef = new
LastNameColumnDefinition();
colDef.setColumnSortable(true);
colDef.setColumnTruncatable(false);
colDef.setHeader(0, new HTML("Last Name"));
colDef.setHeaderCount(1);
colDef.setHeaderTruncatable(false);
td.addColumnDefinition(colDef);
}
return td;
}
private final class FirstNameColumnDefinition extends
AbstractColumnDefinition<ModelObject, String> {
@Override
public String getCellValue(ModelObject rowValue) {
return rowValue.firstName;
}
@Override
public void setCellValue(ModelObject rowValue, String
cellValue) {
rowValue.firstName = cellValue;
}
}
private final class LastNameColumnDefinition extends
AbstractColumnDefinition<ModelObject, String> {
@Override
public String getCellValue(ModelObject rowValue) {
return rowValue.lastName;
}
@Override
public void setCellValue(ModelObject rowValue, String
cellValue) {
rowValue.lastName = cellValue;
}
}
public class ModelObject {
String firstName;
String lastName;
public ModelObject(String first, String last) {
this.firstName = first;
this.lastName = last;
}
}
public class DataSourceTableModel extends
MutableTableModel<ModelObject> {
private List<ModelObject> list = new ArrayList<ModelObject>();
public void setData(List<ModelObject> list) {
this.list = list;
}
@Override
protected boolean onRowInserted(int beforeRow) {
return true;
}
@Override
protected boolean onRowRemoved(int row) {
return true;
}
@Override
protected boolean onSetRowValue(int row, ModelObject rowValue) {
return true;
}
@Override
public void requestRows(Request request,
TableModel.Callback<ModelObject> callback) {
callback.onRowsReady(request, new
Response<ModelObject>(){
@Override
public Iterator<ModelObject> getRowValues() {
return list.iterator();
}});
}
}
}
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Google Web Toolkit" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/google-web-toolkit?hl=en
-~----------~----~----~----~------~----~------~--~---