package com.itmill.dev.addressbooktutorial.ui; import com.itmill.dev.addressbooktutorial.AddressBookApplication; import com.itmill.dev.addressbooktutorial.data.PersonContainer; import com.itmill.dev.addressbooktutorial.data.SearchFilter; import com.itmill.toolkit.ui.Button; import com.itmill.toolkit.ui.CheckBox; import com.itmill.toolkit.ui.FormLayout; import com.itmill.toolkit.ui.NativeSelect; import com.itmill.toolkit.ui.Panel; import com.itmill.toolkit.ui.TextField; import com.itmill.toolkit.ui.Button.ClickEvent; import com.itmill.toolkit.ui.Button.ClickListener; public class SearchView extends Panel { private TextField tf; private NativeSelect fieldToSearch; private CheckBox saveSearch; private TextField searchName; private AddressBookApplication app; public SearchView(final AddressBookApplication app) { this.app = app; setCaption("Search contacts"); setSizeFull(); /* Use a FormLayout as main layout for this Panel */ FormLayout formLayout = new FormLayout(); setLayout(formLayout); /* Create UI components */ tf = new TextField("Search term"); fieldToSearch = new NativeSelect("Field to search"); saveSearch = new CheckBox("Save search"); searchName = new TextField("Search name"); Button search = new Button("Search"); /* Initialize fieldToSearch */ for (int i = 0; i < PersonContainer.NATURAL_COL_ORDER.length; i++) { fieldToSearch.addItem(PersonContainer.NATURAL_COL_ORDER[i]); fieldToSearch.setItemCaption(PersonContainer.NATURAL_COL_ORDER[i], PersonContainer.COL_HEADERS_ENGLISH[i]); } fieldToSearch.setValue("lastName"); fieldToSearch.setNullSelectionAllowed(false); /* Initialize save checkbox */ saveSearch.setValue(true); saveSearch.setImmediate(true); saveSearch.addListener(new ClickListener() { public void buttonClick(ClickEvent event) { searchName.setVisible(event.getButton().booleanValue()); } }); search.addListener(new Button.ClickListener() { public void buttonClick(ClickEvent event) { performSearch(); } }); /* Add all the created components to the form */ addComponent(tf); addComponent(fieldToSearch); addComponent(saveSearch); addComponent(searchName); addComponent(search); } private void performSearch() { String searchTerm = (String) tf.getValue(); SearchFilter searchFilter = new SearchFilter(fieldToSearch.getValue(), searchTerm, (String) searchName.getValue()); if (saveSearch.booleanValue()) { app.saveSearch(searchFilter); } app.search(searchFilter); } }