如果没有任何变化,请将eclipse编辑器标记为不脏

时间:2017-03-09 20:11:48

标签: java eclipse eclipse-plugin jface

我开发了从org.eclipse.ui.editors.text.TextEditor扩展的编辑器。 我使用FileDocumentProvider

setDocumentProvider(new FileDocumentProvider());

问题是,当我进行一些更改并将其全部撤消时,我的编辑器仍然标记为脏。 怎么预防呢?

即。当我撤消所有更改时,我想将脏标志设置为false。 看起来我需要以某种方式覆盖isDirty方法,但是怎么做呢?

此致 弗拉基米尔

1 个答案:

答案 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方法。

在两种方法中,您都必须使用编辑器输入作为参数。