package com.vaadin.tests.components.table;
import com.vaadin.tests.components.TestBase;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.Label;
import com.vaadin.v7.data.Item;
import com.vaadin.v7.data.util.IndexedContainer;
import com.vaadin.v7.ui.Table;
import com.vaadin.v7.ui.Table.ColumnResizeListener;
@SuppressWarnings("serial")
public class ColumnResizeEvent extends TestBase {
private Label column1Width = new Label("Undefined");
private Label column2Width = new Label("Undefined");
private Label column3Width = new Label("Undefined");
@Override
protected void setup() {
HorizontalLayout widths = new HorizontalLayout();
widths.setSpacing(true);
widths.setWidth("50%");
column1Width.setCaption("Column 1 width");
widths.addComponent(column1Width);
column2Width.setCaption("Column 2 width");
widths.addComponent(column2Width);
column3Width.setCaption("Column 3 width");
widths.addComponent(column3Width);
addComponent(widths);
Table table1 = initTable();
addComponent(table1);
}
@Override
protected String getDescription() {
return "Table should update column size back to server";
}
@Override
protected Integer getTicketNumber() {
return 2807;
}
private static final int ROWS = 100;
private Table initTable() {
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("150pxfixedCol", String.class, "foobar");
table.setContainerDataSource(idx);
table.setColumnHeader("firstname", "FirstName");
table.setColumnHeader("lastname", "LastName with long header");
table.setColumnWidth("150pxfixedCol", 150);
column3Width.setValue(table.getColumnWidth("150pxfixedCol") + "px");
table.addListener(new ColumnResizeListener() {
@Override
public void columnResize(
com.vaadin.v7.ui.Table.ColumnResizeEvent event) {
if (event.getPropertyId().equals("firstname")) {
column1Width.setValue(
event.getCurrentWidth() + "px (previously "
+ event.getPreviousWidth() + "px)");
} else if (event.getPropertyId().equals("lastname")) {
column2Width.setValue(
event.getCurrentWidth() + "px (previously "
+ event.getPreviousWidth() + "px)");
} else if (event.getPropertyId().equals("150pxfixedCol")) {
column3Width.setValue(
event.getCurrentWidth() + "px (previously "
+ event.getPreviousWidth() + "px)");
}
}
});
return table;
}
}