How to use GWT 2.1 Data Presentation Widgets

后端 未结 6 1677
深忆病人
深忆病人 2020-11-30 19:05

At the 2010 Google IO it was announced that GWT 2.1 would include new Data Presentation Widgets. 2.1M is available for download, and presumably the widgets are included, but

6条回答
  •  醉梦人生
    2020-11-30 19:58

    The following code is what I'm woking on, hope it'll be helpful:

    protected void init() {
        VerticalPanel container = new VerticalPanel();
        initWidget(container);
    
        int pageSize = 10;
        CellTable cellTable = new CellTable(pageSize);
        setColumns(cellTable);
        setSelectionModel(cellTable);
    
        setDataSize(cellTable);
        int pageStart = 0;
        loadData(pageStart, pageSize, cellTable);
    
        SimplePager pager = createPager(cellTable);
    
        container.add(cellTable);
        container.add(pager);
    }
    
    private SimplePager createPager(final CellTable cellTable) {
        SimplePager pager = new SimplePager(cellTable,
                SimplePager.TextLocation.CENTER) {
            public void onRangeOrSizeChanged(PagingListView listView) {
                loadData(listView.getPageStart(), listView.getPageSize(),
                        listView);
                super.onRangeOrSizeChanged(listView);
            }
        };
        return pager;
    }
    
    private void setColumns(CellTable cellTable) {
        cellTable.addColumn(new TextColumn() {
            @Override
            public String getValue(User user) {
                return user.getName();
            }
        }, new TextHeader("Name"));
    
        cellTable.addColumn(new TextColumn() {
            @Override
            public String getValue(User user) {
                return user.getLocation();
            }
        }, new TextHeader("Location"));
    }
    
    private void setSelectionModel(CellTable cellTable) {
        final SingleSelectionModel selectionModel = new SingleSelectionModel();
        SelectionChangeHandler selectionHandler = new SelectionChangeHandler() {
            @Override
            public void onSelectionChange(SelectionChangeEvent event) {
                User user = selectionModel.getSelectedObject();
                Window.alert(user.getId() + ": " + user.getName());
            }
        };
        selectionModel.addSelectionChangeHandler(selectionHandler);
        cellTable.setSelectionEnabled(true);
        cellTable.setSelectionModel(selectionModel);
    }
    
    private void setDataSize(final PagingListView cellTable) {
        employeeRequest.countUsers(new AsyncCallback() {
            public void onFailure(Throwable caught) {
                Window.alert("Request failure: " + caught.getMessage());
            }
    
            public void onSuccess(Integer result) {
                cellTable.setDataSize(result, true);
            }
        });
    }
    
    private void loadData(int start, int size,
            final PagingListView cellTable) {
        employeeRequest.getUsers(start, size,
                new AsyncCallback>() {
                    public void onFailure(Throwable caught) {
                        Window.alert("Request failure: " + caught.getMessage());
                    }
    
                    public void onSuccess(PagingData result) {
                        cellTable.setData(result.getStart(),
                                result.getLength(), result.getValues());
                    }
                });
    }
    
    public class PagingData implements IsSerializable {
    
    private int start;
    
    private int length;
    
    private List values;
    
    public PagingData() {
    }
    
    public PagingData(int start, int length, List values) {
        super();
        this.start = start;
        this.length = length;
        this.values = values;
    }
    
    public int getStart() {
        return start;
    }
    
    public void setStart(int start) {
        this.start = start;
    }
    
    public int getLength() {
        return length;
    }
    
    public void setLength(int length) {
        this.length = length;
    }
    
    public List getValues() {
        return values;
    }
    
    public void setValues(List values) {
        this.values = values;
    }
    }
    

提交回复
热议问题