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.