package org.vaadin.jefferson.demo.simpleaddressbook.content; import java.util.Random; import org.vaadin.jefferson.content.ButtonControl; import org.vaadin.jefferson.content.SimpleComposite; import org.vaadin.jefferson.demo.simpleaddressbook.domain.Contact; import com.vaadin.data.Property; import com.vaadin.data.Property.ValueChangeEvent; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; public class SimpleAddressBookView extends SimpleComposite { private static final int NR_OF_CONTACTS = 1000; public static final String ADD_CONTACT = "Add contact"; public static final String REMOVE_CONTACT = "Remove contact"; public static final String NAVIGATION = "Navigation"; public static final String TOOLBAR = "Toolbar"; private ContactEditor contactEditor = new ContactEditor(); private ContactList contactList = new ContactList(); private ButtonControl contactAdd = new ButtonControl( ADD_CONTACT, new ContactAddHandler()); private ContactRemoveControl contactRemoveControl = new ContactRemoveControl( contactList); private SimpleComposite nav = new SimpleComposite(NAVIGATION); private SimpleComposite toolbar = new SimpleComposite(TOOLBAR); public SimpleAddressBookView() { super("Content root"); setChildren( nav.setChildren( contactList, toolbar.setChildren( contactAdd, contactRemoveControl, new FilterControl( Contact.LAST_NAME, contactList), new FilterControl( Contact.FIRST_NAME, contactList), new FilterControl( Contact.COMPANY, contactList))), contactEditor); // Create dummy data by randomly combining first and last names String[] firstNames = { "Peter", "Alice", "Joshua", "Mike", "Olivia", "Nina", "Alex", "Rita", "Dan", "Umberto", "Henrik", "Rene", "Lisa", "Marge", }; String[] lastNames = { "Smith", "Gordon", "Simpson", "Brown", "Clavel", "Simons", "Verne", "Scott", "Allison", "Gates", "Rowling", "Barks", "Ross", "Schneider", "Tate", }; Random random = new Random(); Contact[] contacts = new Contact[NR_OF_CONTACTS]; for (int i = 0; i < NR_OF_CONTACTS; i++) { contacts[i] = new Contact(); contacts[i].setFirstName(firstNames[random .nextInt(firstNames.length)]); contacts[i] .setLastName(lastNames[random.nextInt(lastNames.length)]); } contactList.setChoices(contacts); contactList.setListener(new ContactListHandler()); } private class ContactListHandler implements Property.ValueChangeListener { public void valueChange(ValueChangeEvent event) { Contact contact = contactList.getSelection()[0]; contactEditor.setContact(contactList.getModel().getItem(contact)); contactRemoveControl.setContact(contact); } } private final class ContactAddHandler implements Button.ClickListener { public void buttonClick(ClickEvent event) { contactList.addNewContact(); } } }