package com.vaadin.tests.components.uitest.components;
import java.util.HashSet;
import com.vaadin.event.Action;
import com.vaadin.server.ThemeResource;
import com.vaadin.tests.components.uitest.TestSampler;
import com.vaadin.tests.util.TestUtils;
import com.vaadin.ui.GridLayout;
import com.vaadin.v7.ui.Table;
import com.vaadin.v7.ui.themes.ChameleonTheme;
import com.vaadin.v7.ui.themes.Reindeer;
public class TablesCssTest extends GridLayout {
private TestSampler parent;
private int debugIdCounter = 0;
private final Action ACTION_MARK = new Action("Mark");
private final Action ACTION_UNMARK = new Action("Unmark");
private final Action ACTION_LOG = new Action("Save");
private final Action[] ACTIONS_UNMARKED = new Action[] { ACTION_MARK,
ACTION_LOG };
private final Action[] ACTIONS_MARKED = new Action[] { ACTION_UNMARK,
ACTION_LOG };
public TablesCssTest(TestSampler parent) {
super();
setSpacing(true);
setColumns(2);
setWidth("100%");
this.parent = parent;
createTableWith("CC & flags, default table", null);
createTableWith("Borderless", ChameleonTheme.TABLE_BORDERLESS);
createTableWith("Big", ChameleonTheme.TABLE_BIG);
createTableWith("Small", ChameleonTheme.TABLE_SMALL);
createTableWith("Striped", ChameleonTheme.TABLE_STRIPED);
createTableWith("Strong", Reindeer.TABLE_STRONG);
}
private void createTableWith(String caption, String primaryStyleName) {
final HashSet<Object> markedRows = new HashSet<>();
final Table t;
if (caption != null) {
t = new Table(caption);
} else {
t = new Table();
}
t.setId("table" + debugIdCounter++);
if (primaryStyleName != null) {
t.addStyleName(primaryStyleName);
}
t.setWidth("100%");
t.setHeight("100px");
t.setSelectable(true);
t.setMultiSelect(true);
t.setImmediate(true);
t.setContainerDataSource(TestUtils.getISO3166Container());
t.setColumnReorderingAllowed(true);
t.setColumnCollapsingAllowed(true);
// t.setColumnHeaders(new String[] { "Country", "Code", "Icon file" });
t.setColumnIcon(TestUtils.iso3166_PROPERTY_NAME,
new ThemeResource(parent.ICON_URL));
// Actions (a.k.a context menu)
t.addActionHandler(new Action.Handler() {
@Override
public Action[] getActions(Object target, Object sender) {
if (markedRows.contains(target)) {
return ACTIONS_MARKED;
} else {
return ACTIONS_UNMARKED;
}
}
@Override
public void handleAction(Action action, Object sender,
Object target) {
// We just want the actions UI.. don't care about the logic...
if (ACTION_MARK == action) {
markedRows.add(target);
t.refreshRowCache();
} else if (ACTION_UNMARK == action) {
markedRows.remove(target);
t.refreshRowCache();
}
}
});
addComponent(t);
parent.registerComponent(t);
}
}