package org.vaadin.jefferson.demo.addressbook.content; import org.vaadin.jefferson.Control; import org.vaadin.jefferson.Presentation; import org.vaadin.jefferson.View; import org.vaadin.jefferson.content.ButtonControl; import org.vaadin.jefferson.content.SelectionControl; import org.vaadin.jefferson.content.SimpleComposite; import org.vaadin.jefferson.content.TextControl; import org.vaadin.jefferson.demo.addressbook.domain.PersonContainer; import org.vaadin.jefferson.demo.addressbook.domain.SearchFilter; import com.vaadin.ui.AbstractSelect; import com.vaadin.ui.Button; import com.vaadin.ui.Button.ClickEvent; import com.vaadin.ui.Button.ClickListener; import com.vaadin.ui.CheckBox; @SuppressWarnings("serial") public class SearchView extends SimpleComposite { private TextControl searchTerm = new TextControl("Search term"); private FieldToSearch fieldToSearch = new FieldToSearch(); private SaveSearch saveSearch = new SaveSearch(); private SearchName searchName = new SearchName(); private View<Button> search = new ButtonControl( "Search", new SearchAction()); private AddressBookView root; public SearchView(AddressBookView root) { super("Search contacts"); this.root = root; setChildren(searchTerm, fieldToSearch, saveSearch, searchName, search); } private class SearchAction implements Button.ClickListener { public void buttonClick(ClickEvent event) { root.search(new SearchFilter( fieldToSearch.getSelection()[0], searchTerm.getText(), searchName.getText()), saveSearch.isChecked()); } } private class SaveSearch extends Control<CheckBox, ClickListener> { private SaveSearch() { super("Save search", CheckBox.class, ClickListener.class); setListener(new ClickListener() { public void buttonClick(ClickEvent event) { searchName.setVisible(getRendition().booleanValue()); } }); } @Override protected CheckBox accept(Presentation presentation) { CheckBox rendition = super.accept(presentation); rendition.setValue(Boolean.TRUE); return rendition; } @Override public CheckBox createFallback() { return new CheckBox(); } public boolean isChecked() { CheckBox rendition = getRendition(); if (rendition == null) { return false; } return Boolean.valueOf("" + rendition.getValue()).booleanValue(); } } private static class FieldToSearch extends SelectionControl<String> { private FieldToSearch() { super("Field to search", String.class); } @Override protected AbstractSelect accept(Presentation presentation) { AbstractSelect rendition = super.accept(presentation); for (int i = 0; i < PersonContainer.NATURAL_COL_ORDER.length; i++) { rendition.addItem(PersonContainer.NATURAL_COL_ORDER[i]); rendition.setItemCaption( PersonContainer.NATURAL_COL_ORDER[i], PersonContainer.COL_HEADERS_ENGLISH[i]); } rendition.setValue("lastName"); rendition.setNullSelectionAllowed(false); return rendition; } } }