IDocumentListenerインタフェース
テキストエディタで文字入力などによりドキュメントに変更が生じたとき,もちろんアウトラインの変更が生じる可能性がある。つまり,IDocumentオブジェクトの内容の変更の通知をアウトラインビューが受け取れるようにすれば,エディタとアウトラインビューの同期が取れるはず,である。
ドキュメントの変更通知を受け取るために,IDocumentListenerインタフェースを用いる。例えば,こんな感じ。
IDocument document = ...;
document.addDocumentListener(new IDocumentListener() {
public void documentAboutToBeChanged(DocumentEvent event) {
...
}
public void documentChanged(DocumentEvent event) {
...
}
}
各メソッドにMessageDialogでダイアログ表示を埋め込んで処理をブロックしたときに見た動作では,documentAboutToBeChangedメソッドはドキュメントの変更が発生した直後,つまり画面まだ変更が反映される前に呼び出されている。それに比べてdocumentChangedメソッドはドキュメントの変更が画面に反映された後に呼び出されている。もしかしたら,documentAboutToBeChanegdメソッド内で,ドキュメントへの変更を取り消したりできるのかな?わからないけど。。。ちなみに,イベントの内容はどっちのメソッドでも同じでした。
ここで解せない点が一つ。エディタで2行分を選択し,削除を行ってみると,documentAboutToBeChangedメソッドの呼び出し時には変更が反映されていないかと思いきや,2行目だけが削除された状態になってしまう。いまいち2つのメソッドの違いがわからないけど,基本的にはdocumentChangedメソッドを使用することが多いと思う。
| 固定リンク
この記事へのコメントは終了しました。
コメント