我编写了一个eclipse osgi插件,它对eclipse项目中存在的java文件运行清理和格式化操作。有点像:
现在我的问题是我需要跟踪此操作已更改的文件。我正在使用cleanUpsAction
执行清理更改,该更改作为线程运行在多个文件和进一步分叉上。它返回void。
我尝试了IResourceChangeListener
,但我无法获得更改的资源名称。我得到了IResourceChangeEvent
的对象,但是资源的细节并没有出现,它在我打印IResourceChangeEvent.getSource()
时总是返回项目名称。
答案 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
告诉您更改的类型(添加,删除,更改)。