【问题标题】:Mark eclipse editor as not dirty if there aren't any changes如果没有任何更改,则将 Eclipse 编辑器标记为不脏
【发布时间】:2017-07-30 23:34:34
【问题描述】:
我开发了从 org.eclipse.ui.editors.text.TextEditor 扩展的编辑器。
我为此使用 FileDocumentProvider
setDocumentProvider(new FileDocumentProvider());
问题是当我进行一些更改并全部撤消时,我的编辑器仍然被标记为脏。
如何预防?
即当我撤消所有更改时,我想将脏标志设置为 false。
看起来我需要以某种方式覆盖 isDirty 方法,但该怎么做呢?
问候,
弗拉基米尔
【问题讨论】:
标签:
java
eclipse
eclipse-plugin
jface
【解决方案1】:
在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);
}
在AbstractDocumentProvider 中存在一个方法resetDocument 可以重置脏状态 - 或者您可以使用fireElementDirtyStateChanged 方法。
在这两种方法中,您都必须使用编辑器输入作为参数。