package org.vaadin.viritinv7;

import com.vaadin.annotations.Theme;
import com.vaadin.v7.data.util.filter.SimpleStringFilter;
import com.vaadin.v7.event.FieldEvents;
import com.vaadin.ui.Component;
import org.apache.commons.lang3.StringUtils;
import org.vaadin.addonhelpers.AbstractTest;
import org.vaadin.viritinv7.fields.FilterableTable;
import org.vaadin.viritinv7.fields.MTextField;
import org.vaadin.viritin.layouts.MVerticalLayout;
import org.vaadin.viritin.testdomain.Person;
import org.vaadin.viritin.testdomain.Service;


@Theme("valo")
public class FilterTablePerson extends AbstractTest {

    @Override
    public Component getTestComponent() {
        final FilterableTable<Person> table = new FilterableTable<>();
        table.withProperties("firstName", "lastName", "age");
        table.setBeans(Service.getListOfPersons(200));

        final MTextField search = new MTextField();
        search.setInputPrompt("Filter on last name...");
        search.addTextChangeListener(new FieldEvents.TextChangeListener() {
            @Override
            public void textChange(FieldEvents.TextChangeEvent event) {
                table.removeAllFilters();
                if(StringUtils.isNotEmpty(event.getText()))  {
                    table.addFilter(new SimpleStringFilter("lastName",
                            event.getText(), true, true));
                }
            }
        });

        return new MVerticalLayout()
                        .withFullWidth()
                .add(search)
                        .expand(table);
    }

}