IntelliJ Platform Pluginの開発にて、ToolWindow上で、テーブルの絞り込み条件入力で使うコンポーネントを SearchTextField にしてみた

以前の記事では、テーブルの絞り込み条件を入力する項目として TextField を使っていました。
IntelliJ Platform Pluginの開発にて、ToolWindow上で、TextFieldの入力値に従って絞り込み可能なテーブル(JBTable)を表示してみた - メモ的な思考的な

そんな中、JetBrains の Platform UI Guidelines を見ていたところ、 SearchTextField という項目がありました。
Search field | IntelliJ Platform UI Guidelines

公式ドキュメント User Interfrace Components には記載がなかったものの、「ガイドラインに記載があるならライブラリとして用意されているかもしれない」と思い調べてみたところ、 com.intellij.ui パッケージに SearchTextField コンポーネントがありました。
https://github.com/JetBrains/intellij-community/blob/89df267e41664d91b114af8d1c57a78abe2c8456/platform/platform-api/src/com/intellij/ui/SearchTextField.java

 
そこで、今回 SearchTextField をためしてみたことから、メモを残します。

 
目次

 

環境

 
なお、前回の記事ソースコードをもとに、今回の実装を加えています。

 

TextField を SearchTextField に置き換える

Contentで定義していたTextFieldをSearchTextFieldに差し替えます。

もともとのTextField版はこちらです。

searchText = textField()
searchText.component.document.addDocumentListener(object: DocumentListener { /* 略 */ })

 
続いて、SearchTextFieldに差し替えた版はこちらです。

SearchTextFieldの場合、 component プロパティに対して addDocumentListener を設定できるようです。

searchText = cell(SearchTextField())
searchText.component.addDocumentListener(object: DocumentListener { /* 略 */ })

 
以上で実装は完了です。

   

動作確認

TextFieldのときはこのような表示でした。

 
SearchTextFieldに差し替えるとこのような感じになります。

入力欄の右側にある x をクリックすると、入力値をクリアできます。

 
また、何回かSearchTextFieldに入力後に虫めがねアイコンをクリックすると、入力履歴が表示されます。

 
その履歴の中で適用したい値をクリックすると、SearchTextField に値が入力されます。

 
これらの機能を自分で実装すると大変なので、検索用の入力項目を作るときは SearchTextField を使っていけばよさそうです。

 

ソースコード

Githubにあげました。
https://github.com/thinkAmi-sandbox/hello_jetbrains_plugin

今回のプルリクはこちら。
https://github.com/thinkAmi-sandbox/hello_jetbrains_plugin/pull/17