Eclipse插件 - 当文件从外部eclipse更改时,我们如何做一些自定义操作

时间:2014-10-01 13:29:58

标签: eclipse eclipse-plugin eclipse-rcp

我有一个自定义编辑器。当编辑器中当前打开的文件在编辑器外部更改时,我想执行一些操作。 我从编辑器中保存时却做了同样的动作,但不知道如何从编辑器外部实现它。

1 个答案:

答案 0 :(得分:0)

使用IResourceChangeListener在编辑器中侦听资源更改。

使用以下命令设置监听器:

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

并在编辑器dispose()中将其删除:

ResourcesPlugin.getWorkspace().removeResourceChangeListener(listener);

在听众中你可以这样做:

@Override
public void resourceChanged(final IResourceChangeEvent event)
{
  IResourceDelta eventDelta = event.getDelta();

  IResourceDelta trackDelta = eventDelta.findMember(IFile you want to check);
  if (trackDelta != null)
   {
     if ((trackDelta.getKind() & IResourceDelta.CHANGED) != 0 &&
         (trackDelta.getFlags() & IResourceDelta.CONTENT) != 0)
      {
        // TODO file contents have changed - add your processing
      }
   }
}

注意:这仅适用于Eclipse工作区中更改的文件。

您可以使用java.nio.file.WatchService跟踪Eclipse工作区外的文件。