以编程方式跟踪eclipse清理所做的文件更改
我编写了一个eclipse osgi插件,它对eclipse项目中存在的java文件运行清理和格式化操作。 就像是:
- 运行具有eclipse命令的批处理文件
- 它打开了eclipse编辑器
- 加载在批处理命令中作为参数传递的eclipse项目
- 运行清理和格式化操作
- 关闭日食
现在我的问题是我需要跟踪此操作已更改的文件。 我正在使用cleanUpsAction
执行清理更改, cleanUpsAction
作为多个文件和进一步分叉的线程运行。 它返回void。
我也尝试过IResourceChangeListener
,但是我无法获得更改的资源名称。 我得到了IResourceChangeEvent
对象,但资源的细节并没有出来,它在我打印IResourceChangeEvent.getSource()
时总是返回项目名称。
在顶部的IResourceChangeEvent
中有多个级别的对象通常是项目或工作空间,下面是文件夹和文件。 这些由IResourceDelta
对象表示。
要查看所有这些,请先从事件中获取顶级IResourceDelta
:
IResourceChangeEvent event = ... the event IResourceDelta delta = event.getDelta();
然后使用IResourceDeltaVisitor
访问增量中的每个资源:
delta.accept(visitor);
其中visitor
是一个实现IResourceDeltaVisitor
的类。
访问者只有一种方法:
public boolean visit(IResourceDelta delta) throws CoreException
每个资源都有一个delta。
IResourceDelta.getResource
为您提供更改的资源。 IResourceDelta.getKind
告诉您更改的类型(添加,删除,更改)。