我开发了从org.eclipse.ui.editors.text.TextEditor扩展的编辑器。 我使用FileDocumentProvider
setDocumentProvider(new FileDocumentProvider());
问题是,当我进行一些更改并将其全部撤消时,我的编辑器仍然标记为脏。 怎么预防呢?
即。当我撤消所有更改时,我想将脏标志设置为false。 看起来我需要以某种方式覆盖isDirty方法,但是怎么做呢?
此致 弗拉基米尔
答案 0 :(得分:0)
在AbstractTextEditor
中包含以下代码:
@Override
public boolean isDirty() {
IDocumentProvider p= getDocumentProvider();
return p == null ? false : p.canSaveDocument(getEditorInput());
}
,并在AbstractDocumentProvider
中(由您的文档提供者继承):
@Override
public boolean canSaveDocument(Object element) {
if (element == null)
return false;
ElementInfo info= fElementInfoMap.get(element);
return (info != null ? info.fCanBeSaved : false);
}
resetDocument
内有一种方法AbstractDocumentProvider
确实会重置脏状态-或者您可以使用fireElementDirtyStateChanged
方法。
在两种方法中,您都必须使用编辑器输入作为参数。