Eclipse项目创建检测

时间:2013-05-30 19:39:15

标签: eclipse eclipse-pde

在Eclipse PDE中,在查找资源更改时(使用IResourceChangeEvent),如何确定项目的确切创建时间?在此上下文中,我是否可以访问项目(作为IProject)?

2 个答案:

答案 0 :(得分:1)

这个答案的几个部分:

当资源发生变化时,您的监听器会获得一个事件。从该事件中,您可以获得描述更改资源的增量。您实现了一个访问者(使用accept()方法传递给delta),该访问者实际上实现了对更改的响应,并通过从其visit()方法回答布尔值来控制您想要遍历的delta的距离。你可能不会过多地遍历,因为任何新项目都将位于三角洲的顶端。一旦你认识到你正在访问代表一个新项目的delta节点(你使用flags()和getKind()来查看它是否是一个新项目)你可以采取任何你想要的行动。

此答案的另一部分是警告您,通常出于性能原因,通常会对资源更改进行批处理,因此在将许多文件创建到该项目后,您可能会收到有关正在创建的新项目的通知。

答案 1 :(得分:0)

增加引用资源更改侦听器的其他答案......

可靠地检测项目创建实际上相当困难。问题是您定义为项目创建的问题。对于Eclipse资源层,项目创建是在创建空白项目时(没有任何元数据或任何类型的文件),但在典型情况下,您想知道何时创建特定类型的项目。

这意味着您无法假设当您的代码收到项目创建活动时,您将能够提出有关该项目的问题。项目创建事件可以与单个批次中的后续文件事件一起提供,或者事件可以单独进行。

另一个考虑因素是Eclipse项目创建是一些不同的场景。它可以是用户运行项目创建向导,或从磁盘导入现有项目,或从Git导入,或者第三方插件可能导致项目添加到工作区的任何其他方式。这些场景中的每一个都将采用略有不同的方式进行批处理或涓流处理。

唯一的解决方案是查看文件事件而不是项目事件。找出您的听众需要询问项目的问题,然后找出哪些文件包含答案并跟踪这些文件。例如,如果需要检查性质和类路径条目,请监视.project和.classpath文件。不要假设项目始终处于一致状态。如果你通过Git导入部分地查看它可能不是。