package com.vaadin.tests.components.table; import java.io.Serializable; import com.vaadin.event.dd.DragAndDropEvent; import com.vaadin.event.dd.DropHandler; import com.vaadin.event.dd.acceptcriteria.AcceptAll; import com.vaadin.event.dd.acceptcriteria.AcceptCriterion; import com.vaadin.server.VaadinRequest; import com.vaadin.tests.components.AbstractTestUI; import com.vaadin.ui.VerticalLayout; import com.vaadin.v7.data.util.BeanItemContainer; import com.vaadin.v7.ui.Table; import com.vaadin.v7.ui.Table.ColumnReorderEvent; import com.vaadin.v7.ui.Table.ColumnReorderListener; import com.vaadin.v7.ui.Table.HeaderClickEvent; import com.vaadin.v7.ui.Table.HeaderClickListener; @SuppressWarnings("serial") public class TableSortingStopsWorkingOnChrome extends AbstractTestUI { protected static final int ROW_COUNT = 100; @Override protected void setup(VaadinRequest request) { VerticalLayout layout = new VerticalLayout(); layout.setSizeFull(); final Table table = new Table(); table.setColumnReorderingAllowed(true); table.setSizeFull(); BeanItemContainer<TestItem> cont = new BeanItemContainer<>( TestItem.class); for (int i = 0; i < ROW_COUNT; i++) { TestItem ti = new TestItem(); ti.setValue1("Value1_" + i); ti.setValue2("Value2_" + (ROW_COUNT - i)); ti.setValue3("Value3_" + i); ti.setValue4("Value4_" + (ROW_COUNT - i)); ti.setValue5("Value5_" + i); cont.addBean(ti); } table.setContainerDataSource(cont); table.setImmediate(true); table.setSelectable(true); table.setMultiSelect(false); table.setPageLength(10); table.setDragMode(Table.TableDragMode.ROW); table.setDropHandler(new DropHandler() { @Override public void drop(DragAndDropEvent dragAndDropEvent) { } @Override public AcceptCriterion getAcceptCriterion() { return AcceptAll.get(); } }); table.addColumnReorderListener(new ColumnReorderListener() { @Override public void columnReorder(ColumnReorderEvent event) { System.out.println("columnReorder"); } }); table.addHeaderClickListener(new HeaderClickListener() { @Override public void headerClick(HeaderClickEvent event) { System.out.println("Header was clicked"); } }); layout.addComponent(table); addComponent(layout); } public class TestItem implements Serializable { private static final long serialVersionUID = -745849615488792221L; private String value1; private String value2; private String value3; private String value4; private String value5; public String getValue1() { return value1; } public void setValue1(String value1) { this.value1 = value1; } public String getValue2() { return value2; } public void setValue2(String value2) { this.value2 = value2; } public String getValue3() { return value3; } public void setValue3(String value3) { this.value3 = value3; } public String getValue4() { return value4; } public void setValue4(String value4) { this.value4 = value4; } public String getValue5() { return value5; } public void setValue5(String value5) { this.value5 = value5; } } @Override protected String getTestDescription() { return "After an indeterminate period of time sorting tables via clicking on the column header should not stop working on Chrome"; } @Override protected Integer getTicketNumber() { return 14796; } }