Curl External Library のオートコンプリート機能にGoogle Suggestion APIを組み合わせたサンプルです。
まずは、Google Suggestionからデータを取得する方法です。以下はキーワードを入力すると候補文字のリストを返してくれます。
{define-proc {find-google-suggestions word:String, host-locale:Locale = {get-host-locale} }:{Array-of String} def query = “http://suggestqueries.google.com/complete/search?hl=%s&qu=%s&json=t“ def suggestions = {{Array-of String}} def qu = {url-encode-string word} {with-open-streams tis = {read-open {url {format query, host-locale.name, qu}}} do def results = {JsonValue-parse tis} asa JsonArray {for v in results[1] asa JsonArray do {suggestions.append v asa String} } } {return suggestions} } |
次にAutocompleteTextFieldで、データの候補を表示するためのAutocompleteProviderクラスを作成します。例えば以下のようにGoogleSuggestionProviderクラスをAutocompleteProviderを継承して作成します。
{define-class public open GoogleSuggestionProvider {method public open {refresh acf:AutocompleteMixin}:void {constructor public {default max-results:int = 10} |
最後にAutocompleteTextFieldを利用して、データを表示させます。
{AutocompleteTextField {GoogleSuggestionProvider}, {on FocusIn at acf:AutocompleteTextField do {acf.provider.refresh acf} } } |