如何检测项目何时移动到新位置

时间:2016-06-22 11:12:56

标签: eclipse eclipse-plugin

似乎无法使用IResourceChangeListener检测项目是否从一个位置移动到另一个位置。

例如,在使用/old/path/to/project将项目的位置从/new/path/to/project更改为MoveProjectOperation时,事件详细信息如下所示:

name = project-name
kind = CHANGE 
flags = DESCRIPTION  
movedFromPath = null 
movedToPath = null 
location = /new/path/to/project

但是,当项目描述由于其他原因而被更改时,会发送相同的事件详细信息。

IResourceDelta::getFlags()forum post的JavaDoc提示有一个MOVED_FROM标记,getMovedFromPath()将返回资源移动的路径。但我没有看到任何此类事件。

真的没有办法判断一个项目是否被移动,或者我是否遗漏了某些东西?如果有解决方法,我也很乐意去处理。

1 个答案:

答案 0 :(得分:0)

我想我找到了一个解决方法。修复是维护当前项目描述的快照(IProjectDescription)。项目描述还包含项目位置。

移动检测代码启动时以及每当创建新项目时,都需要更新快照。

每当问题中描述的DESCRIPTION更改事件发生时,我都可以将project.getLocationURI()与快照中项目描述的位置进行比较。如果他们不同,项目就会被移动。否则,发生了无趣的变化。