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

◇◆丶佛笑我妖孽 提交于 2019-12-02 04:13:38

The IResourceChangeListener does fire for rename/move events using a combination of the REMOVED kind and a MOVED_TO flag). You can test for that in the IResourceDelta with

@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
      }
   }
}

The code to handle the new path might be something like:

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

   setPartName(newPath.lastSegment());

   ... anything else required 
 }
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!