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
-~----------~----~----~----~------~----~------~--~---

Reply via email to