Eclipse:更新编辑器

Eclipse:更新编辑器,eclipse,editor,Eclipse,Editor,当底层模型发生更改时,刷新自定义编辑器内容的最佳方法是什么?如果您的问题确实与EMF有关(全部与“模型”有关),那么eclipse帮助页中的内容可能会很有用,特别是当底层模型中发生的更改与资源(如文件)有关时 这意味着使用EMF MT(),它提供: 通过多个读写线程管理对编辑域的访问的能力 在不同的客户端和侦听器之间注册和共享编辑域的工具。资源集侦听器是在事务层中定义的,并以批处理的方式提供通知 正如VonC所说,不清楚您所说的模型是什么意思。这里有几个选择 如果您谈论的是资源更改,那么Ecl

当底层模型发生更改时,刷新自定义编辑器内容的最佳方法是什么?

如果您的问题确实与EMF有关(全部与“模型”有关),那么eclipse帮助页中的内容可能会很有用,特别是当底层模型中发生的更改与资源(如文件)有关时

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

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

正如VonC所说,不清楚您所说的模型是什么意思。这里有几个选择

如果您谈论的是资源更改,那么Eclipse角上有一篇(虽然很旧,但仍然很有用)文章向您介绍了基础知识

如果您的意思是对工作区选择的更改(例如,在PackageExplorer中选择一个项目),请在上查看本文

通过调试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方法,还是只刷新编辑器。