アウトラインページの表示更新タイミング
EclipseでJavaのソースコードを記述しているとき,そのソースコードの構造がアウトラインページに自動的に表示される。エディタで次々とソースコードを入力すれば,保存することなくアウトラインページ内の情報は更新されていく。
でも,サンプルプログラムのインストール方法で手に入るプラグインの例のどれを見ても,リアルタイムに同期が取られるわけではなく,ファイルを保存したときにアウトラインページの内容が更新されるようになっている。
ReadmeEditorプラグインやExampleJavaEditorプラグインでは,アウトラインページのオブジェクトに対してTextEditorオブジェクトからgetEditorInputメソッドで取り出したIEditorInputオブジェクトを渡している。そしてDocumentProviderオブジェクトを使ってIEditorInputオブジェクトからIDocumentオブジェクトを取得している。
アウトラインページの表示内容の更新は,ReadmeEditorプラグインもExampleJavaEditorプラグインも,TextEditorクラスのサブクラス内でオーバーライドしたdoSaveメソッドで,
IContentOutlinePage page;
public void doSave(IProgressMonitor monitor) {
super.doSave(monitor);
if (page != null)
page.update();
}
}
っていようにアウトラインページに更新をかけにいっている。ただ,これだとあんまりよくない。だって,Ctrl+Sを頻繁に押さないと更新されないんじゃ。。。ね。
そこで,JDTに搭載されているJavaEditorはどうやってるんだろうと思い,pluginsディレクトリ内のjdt.uiの中にあるjdt.jarを展開し,せっせと逆コンパイル♪見てみると,IEditorInputオブジェクトをアウトラインページクラスにセットしているのは,Exampleプラグインと変わらないみたい。ただし,DocumentProviderのなかでファイル⇔エディタ⇔アウトライン間の同期を取る処理をやっているみたいなんだけど,ぱっと見じゃさっぱりわからない。。。
特にアウトラインページがIEditorInputオブジェクトの利用を規定しているわけでもないし,アウトラインページの更新タイミングは自前でガツガツ作りこんでもいい気がする。ただ,IEditorInputオブジェクトはちゃんと使えるようになっていないと後々まずそう。。。この辺はもうちょいで到着するであろう洋書に期待するとしよう。
| 固定リンク
この記事へのコメントは終了しました。
コメント