矩形選択領域を表現できるか?

JDeveloperのExtention SDKでホントに矩形選択領域を表現できるか調査。
これを実現するためには、

  • エディタ上で領域を選択したときにその選択領域を矩形部分だけハイライトする
    これをもう少し噛み砕くと、
    • エディタで領域が選択されたことを検知するリスナー
    • そのときの選択領域の両端の位置を取得
    • 両端位置から割り出された矩形領域だけをハイライト

ということができれば、とりあえず何とかなりそう。


この観点で、調査した結果、次のインターフェースとメソッドでどうにかなりそうでした。

  • javax.swing.event.CaretListener

このインターフェースを実装したオブジェクトをエディタにaddしておけば、キャレット位置の変更によって、領域が選択されたかどうかを検知できる。このリスナーで検知するイベントから、選択領域の開始位置と終了位置も把握可能。

  • oracle.javatools.editor.BasicEditorPane#createHighlightLayer()

これで新しいハイライト領域を作成可能。このハイライト領域(oracle.javatools.editor.highlight.HighlightLayerのインスタンス)に対して、addHighlight メソッドをコールして、ハイライト部分を構成可能。


...ということで、矩形選択領域を表現することは何とかできそうです。