我创建了一个自定义eclipse编辑器(AbstractDecoratedTextEditor),我需要知道另一个编辑器何时修改并保存在编辑器中打开的文件。
例如,我在自定义eclipse编辑器中打开了文档A,并在另一个编辑器中修改并保存了该文档,我需要在发生这种情况时执行一些任务。
我尝试使用侦听器IDocumentListener:
final IEditorInput input = editor.getEditorInput();
IDocumentProvider documentProvider = editor.getDocumentProvider();
IDocument document = documentProvider.getDocument(input);
document.addDocumentListener(new IDocumentListener() {
@Override
public void documentAboutToBeChanged(DocumentEvent arg0) {
//Empty
}
@Override
public void documentChanged(DocumentEvent arg0) {
// Do something HERE
doTask();
}
});
但是documentChanged方法执行了2次:
1)当编辑器超出eclipse编辑并保存文件时。 (那是我需要的)
2)当我使用自定义编辑器编辑文档而不需要保存时。 (那是我不需要的)
问题是数字2执行每个打字的字母。我需要documentChanged方法只对数字1执行。