package com.vaadin.tests.components.table;
import com.vaadin.tests.components.TestBase;
import com.vaadin.ui.Component;
import com.vaadin.ui.GridLayout;
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.ColumnGenerator;
public class TableRowHeight extends TestBase {
@Override
protected String getDescription() {
return "This test case contains 5 tables in various configurations. All tables have a pageLength of "
+ PAGELENGTH
+ " and thus should show as many rows without any scrollbars (height is undefined for all tables).";
}
@Override
protected Integer getTicketNumber() {
return 2691;
}
private static final int PAGELENGTH = 2;
@Override
public void setup() {
Table table1 = initTable(PAGELENGTH, false, false, false);
addComponent(new Label("Plain table"));
addComponent(table1);
Table table2 = initTable(PAGELENGTH, true, false, false);
addComponent(
new Label("Table with label component in generated column"));
addComponent(table2);
Table table3 = initTable(PAGELENGTH, false, true, false);
addComponent(
new Label("Table with layout component in generated column"));
addComponent(table3);
Table table4 = initTable(PAGELENGTH, true, true, false);
addComponent(new Label(
"Table with both label and layout component in generated column"));
addComponent(table4);
Table table5 = initTable(PAGELENGTH, false, false, true);
addComponent(new Label("Table with label horizontal scrollbar"));
addComponent(table5);
}
private Table initTable(int pageLength, boolean addLabelColGen,
boolean addLayoutColGen, boolean fixedColWidths) {
Table table = new Table();
table.setWidth("100%");
table.setPageLength(pageLength);
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");
table.setContainerDataSource(idx);
table.setColumnHeader("firstname", "FirstName");
table.setColumnHeader("lastname", "LastName");
if (addLabelColGen) {
table.addGeneratedColumn("name1", new LabelColumnGenerator());
}
if (addLayoutColGen) {
table.addGeneratedColumn("name2", new LayoutColumnGenerator());
}
if (fixedColWidths) {
table.setWidth("400px");
table.setColumnWidth("firstname", 200);
table.setColumnWidth("lastname", 300);
}
return table;
}
public class LabelColumnGenerator implements ColumnGenerator {
@Override
public Component generateCell(Table source, Object itemId,
Object columnId) {
Item item = source.getItem(itemId);
String firstname = (String) item.getItemProperty("firstname")
.getValue();
String lastname = (String) item.getItemProperty("lastname")
.getValue();
Label label = new Label(firstname + " " + lastname);
return label;
}
}
public class LayoutColumnGenerator implements ColumnGenerator {
@Override
public Component generateCell(Table source, Object itemId,
Object columnId) {
Item item = source.getItem(itemId);
GridLayout layout = new GridLayout(1, 2);
String firstname = (String) item.getItemProperty("firstname")
.getValue();
String lastname = (String) item.getItemProperty("lastname")
.getValue();
layout.addComponent(new Label(firstname), 0, 0);
layout.addComponent(new Label(lastname), 0, 1);
return layout;
}
}
}