package org.vaadin.jefferson.demo.addressbook.content; import org.vaadin.jefferson.content.SimpleComposite; import org.vaadin.jefferson.demo.addressbook.domain.PersonContainer; import org.vaadin.jefferson.demo.addressbook.domain.SearchFilter; import com.vaadin.ui.Window; import com.vaadin.ui.Window.Notification; public class AddressBookView extends SimpleComposite { private final SearchView search = new SearchView(this); private final TreeView tree; private final MainView main; private final ListView list; private PersonForm personForm; private PersonContainer dataSource; public AddressBookView(PersonContainer dataSource) { super("Address book"); this.dataSource = dataSource; setChildren( new Toolbar(this), main = new MainView( tree = new TreeView(this), list = new ListView( new PersonList(this), personForm = new PersonForm(this)))); } protected void showListView() { main.setContentView(list); } protected void showSearchView() { main.setContentView(search); } protected PersonContainer getDataSource() { return dataSource; } protected void addNewContact() { showListView(); personForm.addContact(); } protected void search(SearchFilter searchFilter, boolean save) { String term = searchFilter.getTerm(); Window window = getRendition().getWindow(); if (term == null || term.equals("")) { window.showNotification("Search term cannot be empty!", Notification.TYPE_WARNING_MESSAGE); return; } if (save) { saveSearch(searchFilter); } // clear previous filters dataSource.removeAllContainerFilters(); // filter contacts with given filter dataSource.addContainerFilter(searchFilter.getPropertyId(), searchFilter.getTerm(), true, false); showListView(); window.showNotification( "Searched for " + searchFilter.getPropertyId() + "=*" + searchFilter.getTerm() + "*, found " + dataSource.size() + " item(s).", Notification.TYPE_TRAY_NOTIFICATION); } private void saveSearch(SearchFilter searchFilter) { String searchName = searchFilter.getSearchName(); if (searchName == null || searchName.equals("")) { getRendition().getWindow().showNotification( "Please enter a name for your search!", Notification.TYPE_WARNING_MESSAGE); return; } tree.addSearch(searchFilter); } }