如何使用 IResourceChangeListener 检测文件重命名并动态设置 EditorPart 名称?

How to use an IResourceChangeListener to detect a file rename and set the EditorPart name dynamically?

IResourceChangeListener 监听项目工作区的变化,例如编辑器零件文件名是否发生变化。

我想知道如何访问那个特定的 EditorPart 并相应地更改其标题名称(例如使用 .setPartName),或者刷新编辑器以便它自动显示新名称。

理想情况是 IResourceChangeListener 具有 重命名 事件类型但似乎不是 case

参考.

IResourceChangeListener 会使用 REMOVED 种类和 MOVED_TO 标志的组合为 rename/move 事件触发)。您可以在 IResourceDelta 中使用

进行测试
@Override
public void resourceChanged(final IResourceChangeEvent event)
{
  IResourceDelta delta = event.getDelta();

  // Look for change to our file

  delta = delta.findMember(IPath of file being edited);
  if (delta == null)
    return;

  if delta.getKind() == IResourceDelta.REMOVED
   {
     if ((delta.getFlags() & IResourceDelta.MOVED_TO) != 0)
      {
        IPath newPath = delta.getMovedToPath();

        ... handle new path
      }
   }
}

处理新路径的代码可能类似于:

IFile file = ResourcesPlugin.getWorkspace().getRoot().getFile(newPath);
if (file != null)
 {
   setInput(new FileEditorInput(file));

   setPartName(newPath.lastSegment());

   ... anything else required 
 }