gwtpaginationgwt-bootstrap

GWT/GWT Bootstrap - Pagination (SimplePager)


I have a celltable and I'm trying implement pagination, but it doesn't work. I looked for solutions but without any success. I click in next page, nothing happens. I forgot to implement something? Someone can help me? Thanks for attention! Below, my implementation:

Java:

        public class TaskPanel extends Composite {

            private static TaskPanelUiBinder uiBinder = GWT
                    .create(TaskPanelUiBinder.class);

            interface TaskPanelUiBinder extends UiBinder<Widget, TaskPanel> {

            }

            public TaskPanel() {
                this.tableTask = createTableTask();

                //Populate celltable
                preencheListaTask();

                initWidget(uiBinder.createAndBindUi(this));
            }

            @UiField(provided = true)
            CellTable<Task> tableTask;

            @UiField
            AccordionGroup accordionTable;

            @UiField Button btnRefresh;

            @UiField SimplePager pager;

            @UiField FormTaskPanel formTask;

            List<Task> listTasks = new ArrayList<Task>();

            ListDataProvider<Task> tableTaskProvider;

            public List<Task> getListTasks() {
                return this.listTasks;
            }

            public void setListTasks(List<Task> lista) {
                this.listTasks = lista;
            }

            public TaskPanel getTaskPanel() {
                return this;
            }

            //Create celltable
            public CellTable<Task> createTableTask() {
                tableTask = new CellTable<Task>();
                tableTask.setPageSize(2);

                TextColumn<Task> dataInicioColumn = new TextColumn<Task>() {
                    @Override
                    public String getValue(Task task) {
                        return task.getDataInicial();
                    }
                };
                tableTask.addColumn(dataInicioColumn, "Data Inicio");

                TextColumn<Task> dataFinalColumn = new TextColumn<Task>() {
                    @Override
                    public String getValue(Task task) {
                        return task.getDataFinal();
                    }
                };
                tableTask.addColumn(dataFinalColumn, "Data Final");

                TextColumn<Task> descricaoColumn = new TextColumn<Task>() {
                    @Override
                    public String getValue(Task task) {
                        return task.getDescricao();
                    }
                };
                tableTask.addColumn(descricaoColumn, "Descricao");

                TextColumn<Task> categoriaColumn = new TextColumn<Task>() {
                    @Override
                    public String getValue(Task task) {
                        return task.getCategoria();
                    }
                };
                tableTask.addColumn(categoriaColumn, "Categoria");

                TextColumn<Task> prioridadeColumn = new TextColumn<Task>() {
                    @Override
                    public String getValue(Task task) {
                        return task.getPrioridade();
                    }
                };
                tableTask.addColumn(prioridadeColumn, "Prioridade");

                return tableTask;
            }

            //Generate a JSON, and I parse for List<Task> to populate celltable
            public List<Task> preencheListaTask() {
                final List<Task> lista = new ArrayList<Task>();

                String url = "http://127.0.0.1:8888/financecontrol/jsonTableTasks.json";

                RequestBuilder builder = new RequestBuilder(RequestBuilder.GET, url);

                try {
                    Request request = builder.sendRequest(null, new RequestCallback() {

                        public void onError(Request request, Throwable exception) {
                            System.out.println("Error to retrieve JSON");
                        }

                        @Override
                        public void onResponseReceived(Request arg0, Response response) {
                            if (200 == response.getStatusCode()) {
                                JSONValue value = JSONParser.parse(response.getText());

                                com.google.gwt.json.client.JSONObject taskObjs = value
                                        .isObject();

                                JSONArray tasksArray = taskObjs.get("tasks").isArray();

                                if (tasksArray != null) {
                                    for (int i = 0; i < tasksArray.size(); i++) {

                                        com.google.gwt.json.client.JSONObject taskObj = tasksArray
                                                .get(i).isObject();

                                        String id = taskObj.get("ID").isNumber().toString();
                                        String dataInicial = taskObj
                                                .get("Data Inicial").isString()
                                                .stringValue();
                                        String dataFinal = taskObj.get("Data Final")
                                                .isString().stringValue();
                                        String descricao = taskObj.get("Descricao")
                                                .isString().stringValue();
                                        String categoria = taskObj.get("Categoria").isString().toString();
                                        String prioridade = taskObj.get("Prioridade").isString().toString();

                                        Task task = new Task(Integer.parseInt(id),
                                                dataInicial, dataFinal,
                                                descricao, categoria, prioridade);
                                        lista.add(task);
                                    }
                                    setListTasks(lista);
                                    System.out.println("JSON retrieve");
                                }
                                addLinhas();
                            } else {
                                System.out.println("Couldn't retrieve JSON ("
                                        + response.getStatusText() + ")");
                            }
                        }

                    });
                } catch (RequestException e) {
                    System.err.println("Erro cath - " + e.getMessage());
                }

                return lista;
            }
            //add rows to celltable
            public void addLinhas() {
                this.tableTask.setRowCount(getListTasks().size(), true);
                this.tableTask.setRowData(0, getListTasks());
                tableTask.redraw();
                tableTaskProvider = new ListDataProvider<Task>(getListTasks());
                tableTaskProvider.addDataDisplay(tableTask);

                //Pagination
                SimplePager.Resources pagerResources = GWT.create(SimplePager.Resources.class);
                pager = new SimplePager(TextLocation.CENTER, pagerResources, false, 0, true);
                pager.setDisplay(tableTask);

            }

            @UiHandler("btnRefresh")
            public void onClickRefresh(ClickEvent e) {
                preencheListaTask();
            }

        }

UiBinder:

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">

<ui:style>
    .formContent {
        height: 70%;
    }

</ui:style>

<b:Container addStyleNames="{style.formContent}">
    <r:FormTaskPanel ui:field="formTask"/>

    <b:AccordionGroup ui:field="accordionTable" defaultOpen="false" heading="Task List">
        <b:CellTable ui:field="tableTask" />
        <b:SimplePager ui:field="pager" location="CENTER"/>
        <b:Button ui:field="btnRefresh" text="Refresh" icon="REFRESH"/>
    </b:AccordionGroup>
</b:Container>


Solution

  • You have pager = new SimplePager(...), so you have to declare @uiField(provided = true) for pager, and move pager declaration/initialisation into your createTableTask function (pager must be set before initwidget).