package com.vaadin.tests.components.table;
import com.vaadin.data.Container;
import com.vaadin.data.Item;
import com.vaadin.data.Property.ValueChangeEvent;
import com.vaadin.data.Property.ValueChangeListener;
import com.vaadin.data.util.IndexedContainer;
import com.vaadin.tests.components.TestBase;
import com.vaadin.tests.util.Log;
import com.vaadin.ui.CheckBox;
import com.vaadin.ui.Table;
import com.vaadin.ui.Table.FooterClickEvent;
import com.vaadin.ui.Table.FooterClickListener;
import com.vaadin.ui.Table.HeaderClickEvent;
import com.vaadin.ui.Table.HeaderClickListener;
public class HeaderFooterClickLeftRightMiddle extends TestBase {
private Log log = new Log(10);
@Override
protected void setup() {
final Table table = new Table();
table.setColumnReorderingAllowed(true);
table.setContainerDataSource(createContainer());
table.setWidth("400px");
table.setHeight("400px");
table.setImmediate(true);
table.setFooterVisible(true);
CheckBox immediateCheckbox = new CheckBox("Immediate");
immediateCheckbox.setImmediate(true);
immediateCheckbox.setValue(table.isImmediate());
immediateCheckbox.addListener(new ValueChangeListener() {
@Override
public void valueChange(ValueChangeEvent event) {
table.setImmediate((Boolean) event.getProperty().getValue());
}
});
CheckBox headerClickListenerCheckbox = new CheckBox(
"Header click listener");
headerClickListenerCheckbox.setImmediate(true);
headerClickListenerCheckbox.addListener(new ValueChangeListener() {
private HeaderClickListener headerClickListener = new HeaderClickListener() {
@Override
public void headerClick(HeaderClickEvent event) {
String type = event.isDoubleClick() ? "Double click"
: "Click";
log.log(type + " on header "
+ event.getPropertyId().toString() + " using "
+ event.getButtonName());
}
};
@Override
public void valueChange(ValueChangeEvent event) {
if (table.getListeners(HeaderClickEvent.class).isEmpty()) {
table.addListener(headerClickListener);
} else {
table.removeListener(headerClickListener);
}
}
});
headerClickListenerCheckbox.setValue(true);
CheckBox footerClickListenerCheckbox = new CheckBox(
"Footer click listener");
footerClickListenerCheckbox.setImmediate(true);
footerClickListenerCheckbox.addListener(new ValueChangeListener() {
private FooterClickListener footerClickListener = new FooterClickListener() {
@Override
public void footerClick(FooterClickEvent event) {
String type = event.isDoubleClick() ? "Double click"
: "Click";
log.log(type + " on footer "
+ event.getPropertyId().toString() + " using "
+ event.getButtonName());
}
};
@Override
public void valueChange(ValueChangeEvent event) {
if (table.getListeners(FooterClickEvent.class).isEmpty()) {
table.addListener(footerClickListener);
} else {
table.removeListener(footerClickListener);
}
}
});
footerClickListenerCheckbox.setValue(true);
CheckBox sortEnabledCheckbox = new CheckBox("Sortable");
sortEnabledCheckbox.setImmediate(true);
sortEnabledCheckbox.setValue(table.isSortEnabled());
sortEnabledCheckbox.addListener(new ValueChangeListener() {
@Override
public void valueChange(ValueChangeEvent event) {
table.setSortEnabled((Boolean) event.getProperty().getValue());
}
});
CheckBox columnReorderingCheckbox = new CheckBox(
"Column reordering allowed");
columnReorderingCheckbox.setImmediate(true);
columnReorderingCheckbox.setValue(table.isColumnReorderingAllowed());
columnReorderingCheckbox.addListener(new ValueChangeListener() {
@Override
public void valueChange(ValueChangeEvent event) {
table.setColumnReorderingAllowed((Boolean) event.getProperty()
.getValue());
}
});
addComponent(immediateCheckbox);
addComponent(headerClickListenerCheckbox);
addComponent(footerClickListenerCheckbox);
addComponent(sortEnabledCheckbox);
addComponent(columnReorderingCheckbox);
addComponent(table);
addComponent(log);
}
@Override
protected String getDescription() {
return "Tests the header click listener";
}
@Override
protected Integer getTicketNumber() {
return 4515;
}
private Container createContainer() {
IndexedContainer container = new IndexedContainer();
container.addContainerProperty("col1", String.class, "");
container.addContainerProperty("col2", String.class, "");
container.addContainerProperty("col3", String.class, "");
for (int i = 0; i < 100; i++) {
Item item = container.addItem("item " + i);
item.getItemProperty("col1").setValue("first" + i);
item.getItemProperty("col2").setValue("middle" + i);
item.getItemProperty("col3").setValue("last" + i);
}
return container;
}
}