package com.vaadin.tests.components.table;
import java.text.DecimalFormat;
import com.vaadin.tests.components.AbstractTestCase;
import com.vaadin.ui.Button;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.HorizontalSplitPanel;
import com.vaadin.ui.Label;
import com.vaadin.ui.LegacyWindow;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.v7.ui.Table;
public class TableToggleVisibility extends AbstractTestCase {
private static final int[] LENGTHS = new int[] { 20, 22, 10 };
@Override
public void init() {
DecimalFormat format = new DecimalFormat("000");
Table[] tables = new Table[3];
Button[] buttons = new Button[3];
VerticalLayout leftComponent = new VerticalLayout();
leftComponent.setMargin(true);
leftComponent.setSpacing(true);
// Toolbar with buttons to hide or show lists
HorizontalLayout toolBar = new HorizontalLayout();
toolBar.setSpacing(true);
toolBar.setMargin(true);
leftComponent.addComponent(toolBar);
leftComponent.setExpandRatio(toolBar, 0.0f);
// List of trucks -----------------------
tables[0] = new Table("Trucks");
tables[0].addContainerProperty("Brand", String.class, null);
tables[0].addContainerProperty("Model", String.class, null);
tables[0].addContainerProperty("License Plate", String.class, null);
for (int i = 1; i < LENGTHS[0]; i++) {
tables[0].addItem(
new Object[] { "MAN", "XYZ", "1-ABC-" + format.format(i) },
Integer.valueOf(i));
}
tables[0].setPageLength(LENGTHS[0]);
tables[0].setWidth("100%");
tables[0].setHeight("100%");
tables[0].setSelectable(true);
leftComponent.addComponent(tables[0]);
leftComponent.setExpandRatio(tables[0], 1.0f);
// List of trailers ----------------------
tables[1] = new Table("Trailers");
tables[1].addContainerProperty("Type", String.class, null);
tables[1].addContainerProperty("License Plate", String.class, null);
for (int i = 1; i < LENGTHS[1]; i++) {
tables[1].addItem(
new Object[] { "Cooler", "1-QQQ-" + format.format(i) },
Integer.valueOf(i));
}
tables[1].setPageLength(LENGTHS[1]);
tables[1].setWidth("100%");
tables[1].setHeight("100%");
tables[1].setSelectable(true);
leftComponent.addComponent(tables[1]);
leftComponent.setExpandRatio(tables[1], 1.0f);
// List of drivers ------------------------
tables[2] = new Table("Drivers");
tables[2].addContainerProperty("First Name", String.class, null);
tables[2].addContainerProperty("Last Name", String.class, null);
tables[2].addContainerProperty("HR ID", String.class, null);
for (int i = 1; i < LENGTHS[2]; i++) {
tables[2].addItem(
new Object[] { "King", "Vabis", "HR-" + format.format(i) },
Integer.valueOf(i));
}
tables[2].setPageLength(LENGTHS[2]);
tables[2].setWidth("100%");
tables[2].setHeight("100%");
tables[2].setSelectable(true);
leftComponent.addComponent(tables[2]);
leftComponent.setExpandRatio(tables[2], 1.0f);
leftComponent.setWidth("100%");
HorizontalSplitPanel split = new HorizontalSplitPanel();
split.setFirstComponent(leftComponent);
VerticalLayout rightComponent = new VerticalLayout();
rightComponent.setMargin(true);
rightComponent.addComponent(new Label("Left blank!"));
split.setSecondComponent(rightComponent);
split.setSizeFull();
VerticalLayout mainLayout = new VerticalLayout();
mainLayout.setSizeFull();
mainLayout.addComponent(split);
mainLayout.setExpandRatio(split, 1.0f);
LegacyWindow mainWindow = new LegacyWindow("Visibilitybug Application",
mainLayout);
mainWindow.setSizeFull();
setMainWindow(mainWindow);
// complete toolbar
for (int i = 0; i < buttons.length; i++) {
buttons[i] = new ToggleButton(tables[i]);
toolBar.addComponent(buttons[i]);
}
}
// Button to switch the visibility of a table.
private static class ToggleButton extends Button {
private Table table;
private ToggleButton(Table table) {
this.table = table;
setCaption("- " + table.getCaption());
addClickListener(new ClickListener() {
@Override
public void buttonClick(ClickEvent event) {
boolean wasVisible = ToggleButton.this.table.isVisible();
ToggleButton.this.table.setVisible(!wasVisible);
setCaption((wasVisible ? "+ " : "- ")
+ ToggleButton.this.table.getCaption());
setDescription(
(wasVisible ? "Show " : "Hide ") + "the list with "
+ ToggleButton.this.table.getCaption());
}
});
}
}
@Override
protected String getDescription() {
return "Test for hiding and showing tables. Click a button to show/hide one of the tables. The tables are all 100% wide and should be rendered the same way after being hidden and shown again.";
}
@Override
protected Integer getTicketNumber() {
return 6494;
}
}