package org.ovirt.engine.ui.webadmin.widget.autocomplete;
import java.util.ArrayList;
import java.util.List;
import org.ovirt.engine.ui.uicommonweb.models.autocomplete.SearchSuggestModel;
import org.ovirt.engine.ui.uicommonweb.models.autocomplete.SuggestItemPartModel;
import com.google.gwt.user.client.ui.MultiWordSuggestOracle;
import com.google.gwt.user.client.ui.SuggestOracle;
public class SearchSuggestOracle extends MultiWordSuggestOracle {
private final SearchSuggestModel searchSuggestModel;
private String searchStringPrefix;
public SearchSuggestOracle() {
searchSuggestModel = new SearchSuggestModel();
searchStringPrefix = "";
}
@SuppressWarnings({ "rawtypes", "unchecked" })
@Override
public void requestSuggestions(SuggestOracle.Request request, SuggestOracle.Callback callback) {
// Search string
String search = request.getQuery();
// Create suggestions list
List<SearchSuggestion> suggestions = new ArrayList<SearchSuggestion>();
// Invoke model update options by search string method
searchSuggestModel.UpdateOptionsAsync(searchStringPrefix + search);
// Get options list
List options = searchSuggestModel.getItems();
for (Object option : options) {
List<SuggestItemPartModel> suggestItemPartModelList = (List<SuggestItemPartModel>) option;
if (suggestItemPartModelList != null) {
// Add the suggestion list
suggestions.add(new SearchSuggestion(suggestItemPartModelList, searchStringPrefix));
}
}
// Raise SuggestionsReady event for the specified request
callback.onSuggestionsReady(request, new Response(suggestions));
}
public void setSearchPrefix(String searchStringPrefix) {
this.searchStringPrefix = searchStringPrefix;
}
}