Eclipse: 更新编辑器

4
什么是在基础模型发生更改时刷新自定义编辑器内容的最佳方法?
2个回答

2
正如VonC所说,您的“model”是什么意思并不清楚。以下是一些可能的选项。
如果您指的是资源更改,则Eclipse Corner上有一篇(虽然有点老但仍有用的)关于资源增量的文章,它展示了基础知识。
如果您指的是更改工作区选择(例如在包资源管理器中选择项目),则请查看这篇关于选择服务的文章。
从对org.eclipse.ui.texteditor.AbstractTextEditor进行调试来看,更新处理如下:
protected void handleEditorInputChanged() {
    ...
    final IDocumentProvider provider= getDocumentProvider();
    ...
    if (provider instanceof IDocumentProviderExtension) {
        IDocumentProviderExtension extension= (IDocumentProviderExtension) provider;
        extension.synchronize(input);

请注意,这段代码周围有很多处理其他事件处理程序停用和重新启用的代码。如果您能够扩展自AbstractTextEditor,您可能希望这样做,以避免自己实现此功能。

场景是:编辑器正在显示一个文本文件,该文本文件被其他对象修改。通过propertyChange事件通知编辑器发生了更改。问题是编辑器现在应该做什么。我是否需要再次调用编辑器的setInput方法,或者我们只需刷新编辑器即可。 - Duleb

0

如果您的问题涉及 EMF(Eclipse Modeling Framework,它是关于“模型”的),那么来自 Eclipse 帮助页面的this section可能会很有用,特别是当底层模型中发生资源(如文件)变化时。

这意味着使用 EMF MT(EMF Model Transaction),它提供了:

  • 管理多个读写线程对编辑域的访问能力。
  • 在事务层中定义资源集监听器,并以批处理方式向其提供通知,从而实现在不同客户端和监听器之间注册和共享编辑域的功能。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接