更新两个显示相同文件的编辑器实例

时间:2014-02-27 05:46:15

标签: java editor swt eclipse-rcp jface

我有eclipse rcp应用程序,在某些scenerio中有ctab文件夹的编辑器我正在编辑器实例进一步显示文件内容的ctab文件夹页面。我的问题是,如果我在第一个编辑器中打开相同的文件并且在文件中进行更改我在应用程序中打开另一个编辑器,现在它显示先前打开的文件而不是更新的文件,而我已经为所有进程打开另一个ediotr的可用更改文件

我使用它来创建编辑器输入,我认为这是罪魁祸首,因为它是单例模式并返回已经调用的ctab页面实例。

IFileStore fileStore = EFS.getLocalFileSystem().getStore("filepath");

如果是,请告诉我适当的替代品。

1 个答案:

答案 0 :(得分:0)

要让编辑知道其正在编辑的文件已被其他编辑器更改,您需要使用IResourceChangeListener使编辑器跟踪资源更改。设置如下:

IResourceChangeListener resourceChange = new ResourceChange();

ResourcesPlugin.getWorkspace().addResourceChangeListener(resourceChange, IResourceChangeEvent.POST_CHANGE);

ResourceChange类将是:

private class ResourceChange implements IResourceChangeListener
{
  @Override
  public void resourceChanged(final IResourceChangeEvent event)
  {
    final IResourceDelta eventDelta = event.getDelta();

    final IResourceDelta trackDelta = eventDelta.findMember(editFile);
    if (trackDelta != null)
     {
       if ((trackDelta.getKind() & IResourceDelta.CHANGED) != 0 &&
           (trackDelta.getFlags() & IResourceDelta.CONTENT) != 0)
        {
           // TODO handle change
        }
     }
   }
}

editFile是编辑正在使用的IFile

您需要小心如何处理更改,因为这将在编辑器的“保存”操作期间调用。