package com.vaadin.tests.components.table; import com.vaadin.data.Item; import com.vaadin.data.util.IndexedContainer; import com.vaadin.tests.components.TestBase; import com.vaadin.ui.HorizontalLayout; import com.vaadin.ui.Label; import com.vaadin.ui.Table; @SuppressWarnings("serial") public class ColumnReorderEvent extends TestBase { private Label order = new Label("Column order"); @Override protected void setup() { HorizontalLayout widths = new HorizontalLayout(); widths.setSpacing(true); widths.setWidth("50%"); order.setCaption("Column 1 width"); widths.addComponent(order); addComponent(widths); Table table1 = initTable(); addComponent(table1); order.setValue(aToString(table1.getVisibleColumns())); } private String aToString(Object[] visibleColumns) { StringBuilder sb = new StringBuilder(); for (Object object : visibleColumns) { sb.append(object.toString()); sb.append(" | "); } return sb.toString(); } @Override protected String getDescription() { return "Test ColumnReorderEvents"; } @Override protected Integer getTicketNumber() { return 6283; } private static final int ROWS = 100; private Table initTable() { final Table table = new Table(); table.setWidth("100%"); table.setImmediate(true); IndexedContainer idx = new IndexedContainer(); idx.addContainerProperty("firstname", String.class, null); idx.addContainerProperty("lastname", String.class, null); Item i = idx.addItem(1); i.getItemProperty("firstname").setValue("John"); i.getItemProperty("lastname").setValue("Johnson"); i = idx.addItem(2); i.getItemProperty("firstname").setValue("Jane"); i.getItemProperty("lastname").setValue("Janeine"); for (int index = 3; index < ROWS; index++) { i = idx.addItem(index); i.getItemProperty("firstname").setValue("Jane"); i.getItemProperty("lastname").setValue("Janeine"); } idx.addContainerProperty("property", String.class, "foobar"); table.setContainerDataSource(idx); table.setColumnHeader("firstname", "FirstName"); table.setColumnHeader("lastname", "LastName"); table.addListener(new Table.ColumnReorderListener() { @Override public void columnReorder( com.vaadin.ui.Table.ColumnReorderEvent event) { order.setValue(aToString(table.getVisibleColumns())); } }); table.setColumnReorderingAllowed(true); return table; } }