Package com.github.nyao.bootstrap4gwt.client.celltable

Source Code of com.github.nyao.bootstrap4gwt.client.celltable.MyCellTable$CellTableSampleUiBinder

package com.github.nyao.bootstrap4gwt.client.celltable;

import java.util.ArrayList;
import java.util.List;

import com.github.nyao.bootstrap4gwt.client.ui.Pagination;
import com.github.nyao.bootstrap4gwt.client.ui.PaginationNext;
import com.github.nyao.bootstrap4gwt.client.ui.PaginationPrev;
import com.google.gwt.core.client.GWT;
import com.google.gwt.dom.client.Element;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.event.dom.client.KeyPressEvent;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.uibinder.client.UiHandler;
import com.google.gwt.user.client.ui.Button;
import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.FormPanel;
import com.google.gwt.user.client.ui.TextBox;
import com.google.gwt.user.client.ui.Widget;
import com.google.gwt.user.cellview.client.CellTable;
import com.google.gwt.user.cellview.client.SimplePager;
import com.google.gwt.user.cellview.client.TextColumn;
import com.google.gwt.user.client.ui.ListBox;
import com.google.gwt.user.client.ui.Anchor;

public class MyCellTable extends Composite {

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

    interface CellTableSampleUiBinder extends UiBinder<Widget, MyCellTable> {
    }

    @UiField
    Button button;

    @UiField(provided = true)
    CellTable<Person> cellTable = new CellTable<Person>();

    SimplePager pager = new SimplePager();

    @UiField
    Pagination pagingPanel;

    List<Person> values = new ArrayList<Person>();

    @UiField
    FormPanel form;

    @UiField
    TextBox age;

    @UiField
    TextBox name;

    @UiField
    TextBox address;

    @UiField
    Button cancel;

    @UiField
    ListBox sex;

    public MyCellTable() {
        initWidget(uiBinder.createAndBindUi(this));

        TextColumn<Person> ageClm = new TextColumn<Person>() {
            @Override
            public String getValue(Person object) {
                return object.getAge().toString();
            }
        };
        cellTable.addColumn(ageClm, "Age");

        TextColumn<Person> nameClm = new TextColumn<Person>() {
            @Override
            public String getValue(Person object) {
                return object.getName();
            }
        };
        cellTable.addColumn(nameClm, "Name");

        TextColumn<Person> addressClm = new TextColumn<Person>() {
            @Override
            public String getValue(Person object) {
                return object.getAddress();
            }
        };
        cellTable.addColumn(addressClm, "Address");

        TextColumn<Person> sexClm = new TextColumn<Person>() {
            @Override
            public String getValue(Person object) {
                return object.getSex();
            }
        };
        cellTable.addColumn(sexClm, "Sex");

        for (int i = 0; i < 30; i ++) {
            Person p = new Person(10L + i, "Hoge" + i, "Foo" + i, "Bar" + i);
            values.add(p);
        }
       
        view();
    }

    @UiHandler("age")
    void onKeyPress(KeyPressEvent event) {
        if (event.getCharCode() < '0' || event.getCharCode() > '9') {
            Element elm = age.getElement().getParentElement().getParentElement();
            elm.addClassName("error");
            event.preventDefault();
        }
    }

    @UiHandler("button")
    void onClick(ClickEvent e) {
        final Person person = new Person(
                Long.valueOf(age.getValue()), name.getValue(), address.getValue(), sex.getValue(sex.getSelectedIndex()));

        values.add(person);
        view();
        form.reset();
    }

    @UiHandler("cancel")
    void onCancelClick(ClickEvent event) {
        form.reset();
        age.setFocus(true);
    }

    private void view() {
        cellTable.setRowCount(values.size(), true);
        cellTable.setRowData(0, values);
        cellTable.redraw();

        pager.setDisplay(cellTable);
        pagingPanel.clear();
        final PaginationPrev prev = new PaginationPrev("prev");
        prev.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                setPageAndRedraw(pager.getPage() - 1);
            }
        });
        pagingPanel.add(prev);
        for (int i = 0; i < pager.getPageCount(); i++) {
            final int index = i;
            final Anchor pageAnchor = new Anchor(String.valueOf(index));
            pageAnchor.addClickHandler(new ClickHandler() {
                @Override
                public void onClick(ClickEvent event) {
                  pager.setPage(index);
                  cellTable.setRowCount(values.size(), true);
                  cellTable.setRowData(0, values);
                  cellTable.redraw();
                }
            });
            pagingPanel.add(pageAnchor);
        }
        final PaginationNext next = new PaginationNext("next");
        next.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
                setPageAndRedraw(pager.getPage() + 1);
            }
        });
        pagingPanel.add(next);
    }

    void setPageAndRedraw(int page) {
        if (page < 0) {
            return;
        }
        pager.setPage(page);
        cellTable.setRowCount(values.size(), true);
        cellTable.setRowData(0, values);
        cellTable.redraw();
    }
}
TOP

Related Classes of com.github.nyao.bootstrap4gwt.client.celltable.MyCellTable$CellTableSampleUiBinder

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.