テキストエディタ上である機能が呼び出された時点でのカーソル(キャレット)位置の取得を行いたいときがある。カーソル位置から現在行を取得したり,カーソル位置がメソッド内かどうかを調べたり,などが例として考えられる。カーソル位置の取得なんて簡単にできそうな気がするが,実はそこには高い壁が存在している。 AbstractTextEditorクラスを基底クラスとするテキストエディタは,ViewのコンポーネントとしてSWTのStyledTextクラスを利用している。このStyledTextクラスのgetCaretOffsetメソッドを呼び出すことで,カーソル位置を取得することができる。「なんだ,それならStyleTextオブジェクトを取得できればいいだけだから簡単じゃん」と思ってしまうが,ここで落とし穴が待っている。 StyledTextオブジェクトを取得するためには,ISourceViewerインタ