public void onModuleLoad() {
//the panel that will hold the widgets that will look up by name.
VerticalPanel byNamePanel = new VerticalPanel();
//the Enunciate-generated client-side GWT address book service
final AddressBookAsync book = AddressBookAsync.Util.getInstance();
//the grid we will use to display the contacts that are found.
final Grid contactGrid = new Grid();
//the oracle that will make a remote call to populate the suggest box.
SuggestOracle oracle = new SuggestOracle() {
public void requestSuggestions(final Request request, final Callback callback) {
String query = request.getQuery();
//call the method to find contacts by name.
book.findContactsByName(query, new AsyncCallback<ContactList>() {
public void onSuccess(ContactList response) {
Iterator contactIt = response.getContacts().iterator();
Collection suggestions = new ArrayList();
while (contactIt.hasNext()) {
final Contact contact = (Contact) contactIt.next();
//add the suggestion.
suggestions.add(new Suggestion() {
public String getDisplayString() {
return contact.getName();
}
public String getReplacementString() {
return contact.getName();
}
});
}
contactGrid.clear(); //clear the grid.
callback.onSuggestionsReady(request, new Response(suggestions));
}
public void onFailure(Throwable throwable) {
//do nothing if an error occurs while asking for suggestions
}
});
}
};
//the suggest box (instantiated with our oracle).
final SuggestBox suggestBox = new SuggestBox(oracle);
//The panel that will hold the suggest box and the "find" button.
HorizontalPanel findForm = new HorizontalPanel();
findForm.add(suggestBox);
//the "find" button.
Button findButton = new Button("find");
findButton.addClickListener(new ClickListener() {
public void onClick(Widget widget) {
//when "find" is clicked, make the query and populate the grid.
String text = suggestBox.getText();
book.findContactsByName(text, new AsyncCallback<ContactList>() {
public void onSuccess(ContactList response) {
contactGrid.resize(6 * response.getContacts().size(), 2);
Iterator contactIt = response.getContacts().iterator();
int i = 0;
while (contactIt.hasNext()) {