package com.vaadin.tests.components.table;

import com.vaadin.data.Property.ValueChangeEvent;
import com.vaadin.data.Property.ValueChangeListener;
import com.vaadin.tests.components.TestBase;
import com.vaadin.ui.CheckBox;
import com.vaadin.ui.Table;

public class TableScrollOnFocus extends TestBase {
    @Override
    protected void setup() {
        final Table table = new Table();
        final CheckBox chkSelectable = new CheckBox("selectable");

        chkSelectable.setImmediate(true);
        chkSelectable.addListener(new ValueChangeListener() {
            @Override
            public void valueChange(ValueChangeEvent event) {
                table.setSelectable(chkSelectable.getValue());
            }
        });

        table.addContainerProperty("row #", String.class, "-");
        table.setColumnWidth("row #", 150);
        for (int i = 1; i < 200; i++) {
            table.addItem(new String[] { "" + i }, null);
        }
        table.setSortDisabled(true);

        chkSelectable.setValue(true);

        addComponent(chkSelectable);
        addComponent(table);
    }

    @Override
    protected String getDescription() {
        return "The table scrolls up 2 pages after loosing and regaining the focus!</b><p>"
                + "Drag scrollbar to top then to the bottom of the table.<br>"
                + "Click somewhere beside the table to take away the focus,<br>"
                + "then click back on the table (header or scrollbar) to give back the focus<br>"
                + "(Pressing Tab and Shift-Tab does the same job).<p>"
                + "If the table is set to non-selectable-mode, no self-scrolling occurs.";
    }

    @Override
    protected Integer getTicketNumber() {
        return 6774;
    }
}