|
オートコンプリートとGoogle Suggestion APIを組合わせる |
|
オープンソース - Curl External Library
|
|
作者 岡田 一志
|
|
2011年5月31日(火曜日) 00:39 |
|
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 {inherits AutocompleteProvider}
{method public open {refresh acf:AutocompleteMixin}:void def word = acf.text-field.value {if word.size > 0 then {acf.populate-from-strings {find-google-suggestions word} } } }
{constructor public {default max-results:int = 10} {construct-super max-results} } }
|
最後にAutocompleteTextFieldを利用して、データを表示させます。
{AutocompleteTextField {GoogleSuggestionProvider}, {on FocusIn at acf:AutocompleteTextField do {acf.provider.refresh acf} } } |
|
|
最終更新 ( 2011年5月31日(火曜日) 08:25 )
|