【问题标题】: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 方法。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-08
      • 2012-03-22
      • 1970-01-01
      • 1970-01-01
      • 2011-01-23
      • 1970-01-01
      相关资源
      最近更新 更多