Hi,

I implemented a PagingScrollTable in my project (I found a very good
example here http://zenoconsulting.wikidot.com/blog:17) but now I have
a problem which I do not know how to solve.

My table is working as expected, but I want to add a new column which
contains an delete icon, so that I can delete a table row. Does
somebody know how to do that?

Thanks for your help

Here the code of my Table:


public class ReceiverIfTrueTable extends Composite{
        private static final int DEFAULT_PAGE_SIZE = 10;
        private CachedTableModel<ReceiverIfTrueWrapper> cachedTableModel =
null;
        private DefaultTableDefinition<ReceiverIfTrueWrapper> tableDefinition
= null;
        private PagingScrollTable<ReceiverIfTrueWrapper> pagingScrollTable =
null;
        private Label countLabel = new Label("There are no messages to
display.");
        private DataSourceTableModel tableModel = null;

        private VerticalPanel vPanel = new VerticalPanel();
        private FlexTable flexTable = new FlexTable();
        private Button addNewButton = new Button("add new");


        public ReceiverIfTrueTable() {
                pagingScrollTable = createScrollTable();
                pagingScrollTable.setHeight("100%");
                PagingOptions pagingOptions = new 
PagingOptions(pagingScrollTable);

                flexTable.setWidget(0, 0, pagingScrollTable);
                flexTable.getFlexCellFormatter().setColSpan(0, 0, 2);
                flexTable.setWidget(1, 0, pagingOptions);
                flexTable.setWidget(2, 0, addNewButton);

        
countLabel.setHorizontalAlignment(HasHorizontalAlignment.ALIGN_CENTER);
                vPanel.add(countLabel);
                vPanel.add(flexTable);

                vPanel.setWidth("100%");
                flexTable.setWidth("100%");
                super.initWidget(vPanel);
        }

        private PagingScrollTable<ReceiverIfTrueWrapper> createScrollTable()
{
                tableModel = new DataSourceTableModel();
                cachedTableModel = createCachedTableModel(tableModel);
                TableDefinition<ReceiverIfTrueWrapper> tableDef =
createTableDefinition();

                PagingScrollTable<ReceiverIfTrueWrapper> pagingScrollTable = new
PagingScrollTable<ReceiverIfTrueWrapper>(cachedTableModel, tableDef);

                pagingScrollTable.setPageSize(DEFAULT_PAGE_SIZE);
                pagingScrollTable.setScrollPolicy(ScrollPolicy.DISABLED);
                pagingScrollTable.setEmptyTableWidget(new HTML("There is no 
data to
display"));
        
pagingScrollTable.getDataTable().setSelectionPolicy(SelectionPolicy.ONE_ROW);

                FixedWidthGridBulkRenderer<ReceiverIfTrueWrapper> bulkRenderer 
= new
FixedWidthGridBulkRenderer<ReceiverIfTrueWrapper>(pagingScrollTable.getDataTable(),
pagingScrollTable);
                pagingScrollTable.setBulkRenderer(bulkRenderer);

                // setup the formatting
                pagingScrollTable.setCellPadding(3);
                pagingScrollTable.setCellSpacing(0);
        
pagingScrollTable.setResizePolicy(ScrollTable.ResizePolicy.FILL_WIDTH);

                pagingScrollTable.setSortPolicy(SortPolicy.SINGLE_CELL);

                return pagingScrollTable;
        }

        private TableDefinition<ReceiverIfTrueWrapper>
createTableDefinition() {
                tableDefinition = new
DefaultTableDefinition<ReceiverIfTrueWrapper>();

                // set the row renderer
                final String[] rowColors = new String[] { "#FFFFDD", "EEEEEE" };
                tableDefinition.setRowRenderer(new
DefaultRowRenderer<ReceiverIfTrueWrapper>(rowColors));
                //NumberId
                {
                        NumberColumnDefinition columnDef = new 
NumberColumnDefinition();
                        columnDef.setColumnSortable(true);
                        columnDef.setColumnTruncatable(false);
                        columnDef.setPreferredColumnWidth(35);
                        columnDef.setHeader(0, new HTML("Number"));
                        columnDef.setHeaderCount(1);
                        columnDef.setHeaderTruncatable(false);
                        tableDefinition.addColumnDefinition(columnDef);
                }


                //Condition
                {
                        ConditionColumnDefinition columnDef = new
ConditionColumnDefinition();
                        columnDef.setColumnSortable(true);
                        columnDef.setColumnTruncatable(false);
                        columnDef.setPreferredColumnWidth(35);
                        columnDef.setHeader(0, new HTML("Condition"));
                        columnDef.setHeaderCount(1);
                        columnDef.setHeaderTruncatable(false);
                        tableDefinition.addColumnDefinition(columnDef);
                }

                //ReceiverId
                {
                        ReceiversColumnDefinition columnDef = new
ReceiversColumnDefinition();
                        columnDef.setColumnSortable(true);
                        columnDef.setColumnTruncatable(false);
                        columnDef.setPreferredColumnWidth(35);
                        columnDef.setHeader(0, new HTML("Receiver"));
                        columnDef.setHeaderCount(1);
                        columnDef.setHeaderTruncatable(false);
                        tableDefinition.addColumnDefinition(columnDef);
                }





                return tableDefinition;
        }


        public class ConditionColumnDefinition extends
AbstractColumnDefinition<ReceiverIfTrueWrapper, String>{

                @Override
                public String getCellValue(ReceiverIfTrueWrapper rowValue) {
                        return rowValue.getCondtion();
                }

                @Override
                public void setCellValue(ReceiverIfTrueWrapper rowValue,
                                String cellValue) {     }

        }

        public class ReceiversColumnDefinition extends
AbstractColumnDefinition<ReceiverIfTrueWrapper, String>{

                @Override
                public String getCellValue(ReceiverIfTrueWrapper rowValue) {
                        return rowValue.getReceivers();
                }

                @Override
                public void setCellValue(ReceiverIfTrueWrapper rowValue,
                                String cellValue) {}

        }

        public class NumberColumnDefinition extends
AbstractColumnDefinition<ReceiverIfTrueWrapper, Long>{

                @Override
                public Long getCellValue(ReceiverIfTrueWrapper rowValue) {
                        return rowValue.getId();
                }

                @Override
                public void setCellValue(ReceiverIfTrueWrapper rowValue,
                                Long cellValue) {}

        }



        private CachedTableModel<ReceiverIfTrueWrapper>
createCachedTableModel(
                        DataSourceTableModel tableModel2) {
                CachedTableModel<ReceiverIfTrueWrapper> tm = new
CachedTableModel<ReceiverIfTrueWrapper>(tableModel);
                tm.setPreCachedRowCount(50);
                tm.setPostCachedRowCount(50);
                tm.setRowCount(1000);
                return tm;
        }

        public class DataSourceTableModel extends
MutableTableModel<ReceiverIfTrueWrapper>{

                private ReceiverIfTrueTableSorter sorter = new
ReceiverIfTrueTableSorter();

                private Map<Long,ReceiverIfTrueWrapper> map;

                /**
                 * damit wird die Tabelle mit
                 * @param list
                 */
                public void setData(ArrayList<ReceiverIfTrueWrapper> list){
                        map = new HashMap<Long, 
ReceiverIfTrueWrapper>(list.size());
                        for (ReceiverIfTrueWrapper wrapper: list){
                                map.put(wrapper.getId(), wrapper);
                        }
                }

                @Override
                protected boolean onRowInserted(int beforeRow) {
                        return true;
                }

                @Override
                protected boolean onRowRemoved(int row) {
                        return false;
                }

                @Override
                protected boolean onSetRowValue(int row, ReceiverIfTrueWrapper
rowValue) {
                        return true;
                }

                @Override
                public void requestRows(final Request
request,com.google.gwt.gen2.table.client.TableModel.Callback<ReceiverIfTrueWrapper>
callback) {

                        callback.onRowsReady(request, new 
Response<ReceiverIfTrueWrapper>()
{

                                @Override
                                public Iterator<ReceiverIfTrueWrapper> 
getRowValues() {
                                        final int col = 
request.getColumnSortList().getPrimaryColumn();
                                        final boolean ascending =
request.getColumnSortList().isPrimaryAscending();


                                        if (col < 0){
                                                map = sorter.sort(map, new 
LongComparator(ascending));
                                        }
                                        else{
                                                switch(col)     {
                                                        case 0: map = 
sorter.sort(map, new LongComparator(ascending));
                                                                    break;
                                                        case 1: map = 
sorter.sort(map, new
ConditionComparator(ascending));
                                                                        break;
                                                        case 2: map = 
sorter.sort(map, new
ReceiversComparator(ascending));
                                                        break;
                                                }
                                        }

                                        return map.values().iterator();
                                }
                        });
                }
        }


        /**
         * Allows consumers of this class to stuff a new {...@link ArrayList} of
{...@link Message}
         * into the table -- overwriting whatever was previously there.
         *
         * @param list the list of messages to show
         * @return the number of milliseconds it took to refresh the table
         */
        public long showReceiversList(List<ReceiverIfTrueWrapper> list) {
                long start = System.currentTimeMillis();
                // update the count
                countLabel.setText("There are "+ list.size() + " messages.");
                // reset the table model data
                tableModel.setData((ArrayList<ReceiverIfTrueWrapper>) list);
                // reset the table model row count
                tableModel.setRowCount(list.size());
                // clear the cache
                cachedTableModel.clearCache();
                // reset the cached model row count
                cachedTableModel.setRowCount(list.size());
                // force to page zero with a reload
                pagingScrollTable.gotoPage(0, true);
                long end = System.currentTimeMillis();
                return end - start;
        }

        public HasClickHandlers getAddButton(){
                return this.addNewButton;
        }

        public HasRowSelectionHandlers getRowSelection(){
                return pagingScrollTable.getDataTable();
        }

        public String getSelectedId(int rowIdx) {
                return pagingScrollTable.getDataTable().getHTML(rowIdx, 0);
        }






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