以编程方式跟踪eclipse清理所做的文件更改

时间:2017-03-02 17:42:59

标签: java eclipse-plugin osgi eclipse-jdt code-cleanup

我编写了一个eclipse osgi插件,它对eclipse项目中存在的java文件运行清理和格式化操作。有点像:

  • 运行具有eclipse命令的批处理文件
  • 打开eclipse编辑器
  • 在批处理命令
  • 中加载作为参数传递的eclipse项目
  • 运行清理和格式化操作
  • 关闭eclipse

现在我的问题是我需要跟踪此操作已更改的文件。我正在使用cleanUpsAction执行清理更改,该更改作为线程运行在多个文件和进一步分叉上。它返回void。

我尝试了IResourceChangeListener,但我无法获得更改的资源名称。我得到了IResourceChangeEvent的对象,但是资源的细节并没有出现,它在我打印IResourceChangeEvent.getSource()时总是返回项目名称。

1 个答案:

答案 0 :(得分:1)

顶部的IResourceChangeEvent中有多个级别的对象通常是项目或工作区,下面是文件夹和文件。这些由IResourceDelta个对象表示。

要查看所有这些内容,请先从事件中获取顶级IResourceDelta

IResourceChangeEvent event = ... the event

IResourceDelta delta = event.getDelta();

然后使用IResourceDeltaVisitor访问delta中的每个资源:

delta.accept(visitor);

其中visitor是实现IResourceDeltaVisitor的类。

访问者只有一种方法:

public boolean visit(IResourceDelta delta) throws CoreException

为每个资源提供增量。

IResourceDelta.getResource为您提供更改的资源。 IResourceDelta.getKind告诉您更改的类型(添加,删除,更改)。