以前の記事では、テーブルの絞り込み条件を入力する項目として 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