package org.richfaces.sandbox; import javax.faces.bean.ManagedBean; import javax.faces.bean.SessionScoped; import javax.faces.model.DataModel; import javax.faces.model.ListDataModel; import java.io.Serializable; import java.util.ArrayList; import java.util.Arrays; import java.util.Date; import java.util.List; @SessionScoped @ManagedBean public class DynamicTabPanelBean implements Serializable { // ------------------------------ FIELDS ------------------------------ private Object accordionValue; private DataModel<Person> dataModel; private List<Person> ladies; private Person newPerson = new Person(null, null); // --------------------------- CONSTRUCTORS --------------------------- public DynamicTabPanelBean() { ladies = new ArrayList<Person>(Arrays.asList(new Person(new Date(25, 9, 13), "Margaret Tatcher"), new Person(new Date(05, 1, 2), "Ayn Rand"), new Person(new Date(1852 - 1900, 5, 1), "Calamity Jane"), new Person(new Date(1819 - 1900, 4, 24), "Alexandrina Victoria"), new Person(new Date(1533 - 1900, 8, 7), "Elizabeth I"), new Person(new Date(1412 - 1900, 0, 1), "Joan of Arc"))); dataModel = new ListDataModel<Person>(ladies); } // --------------------- GETTER / SETTER METHODS --------------------- public Object getAccordionValue() { return accordionValue; } public void setAccordionValue(Object accordionValue) { this.accordionValue = accordionValue; } public DataModel<Person> getDataModel() { return dataModel; } public List<Person> getLadies() { return ladies; } public Person getNewPerson() { return newPerson; } // -------------------------- OTHER METHODS -------------------------- public void addPerson() { ladies.add(newPerson); newPerson = new Person(new Date(), ""); } public void removeFirstLady() { if (!ladies.isEmpty()) { ladies.remove(ladies.get(0)); } } // -------------------------- INNER CLASSES -------------------------- public class Person implements Serializable { // ------------------------------ FIELDS ------------------------------ private Date birthDate; private String name; // --------------------------- CONSTRUCTORS --------------------------- public Person(Date birthDate, String name) { this.birthDate = birthDate; this.name = name; } // --------------------- GETTER / SETTER METHODS --------------------- public Date getBirthDate() { return birthDate; } public void setBirthDate(Date birthDate) { this.birthDate = birthDate; } public String getName() { return name; } public void setName(String name) { this.name = name; } } }