package org.vaadin.viritin.v7;
import java.util.List;
import org.vaadin.addonhelpers.AbstractTest;
import org.vaadin.viritin.v7.grid.GeneratedPropertyListContainer;
import org.vaadin.viritin.v7.grid.MGrid;
import org.vaadin.viritin.layouts.MVerticalLayout;
import org.vaadin.viritin.testdomain.Address;
import org.vaadin.viritin.testdomain.Person;
import org.vaadin.viritin.testdomain.Service;
import com.vaadin.annotations.Theme;
import com.vaadin.v7.data.Item;
import com.vaadin.v7.data.util.PropertyValueGenerator;
import com.vaadin.ui.Component;
/**
*
* @author Matti Tahvonen
*/
@Theme("valo")
public class GeneratedPropertyListContainerExample extends AbstractTest {
private static final long serialVersionUID = -902463931733502192L;
private final MGrid<Person> fashionableApiGrid = new MGrid<>(Person.class)
.setRows(Service.getListOfPersons(100))
.withGeneratedColumn("fullname", p -> p.getFirstName() + " " + p.getLastName())
.withGeneratedColumn("groupnumber", Integer.class, p -> p.getGroups() != null ? p.getGroups().size() : 0)
.withGeneratedColumn("details", new DetailsGenerator())
.withProperties("id", "fullname", "groupnumber", "details")
.withFullWidth()
.withColumnHeaders("person id", "full name", "group number", "details");
private final MGrid<Person> legacyApiGrid = new MGrid<>();
@Override
public Component getTestComponent() {
GeneratedPropertyListContainer<Person> container = new
GeneratedPropertyListContainer(Person.class,
"id", "fullname", "groupnumber", "details");
container.addGeneratedProperty("fullname", p -> p.getFirstName() + " " + p.getLastName());
container.addGeneratedProperty("groupnumber", Integer.class, p -> p.getGroups() != null ? p.getGroups().size() : 0);
container.addGeneratedProperty("details", new DetailsGenerator());
container.addAll(Service.getListOfPersons(100));
legacyApiGrid.setContainerDataSource(container);
legacyApiGrid.getColumn("details").setHeaderCaption("Details");
legacyApiGrid.setSizeFull();
return new MVerticalLayout(fashionableApiGrid, legacyApiGrid);
}
public class DetailsGenerator extends PropertyValueGenerator<String> {
private static final long serialVersionUID = 8617881785960630559L;
@Override
public String getValue(Item item, Object itemId, Object propertyId) {
Person p = (Person)itemId;
StringBuilder displayValue = new StringBuilder();
List<Address> addresses = p.getAddresses();
if (addresses != null && !addresses.isEmpty()) {
displayValue.append("Addresses: ");
for (Address address : addresses) {
if (address == null) {
continue;
}
displayValue.append(address.getZipCode());
displayValue.append("; ");
displayValue.append(address.getCity());
displayValue.append("; ");
displayValue.append(address.getStreet());
}
}
return displayValue.toString();
}
@Override
public Class<String> getType() {
return String.class;
}
}
}