【发布时间】:2017-01-23 18:04:01
【问题描述】:
我正在为 Eclipse IDE 开发一个 CDT 插件。我想在创建项目时写入项目范围的首选项文件,或者只是存储信息以稍后识别该项目并写入文件。当 Eclipse 正在创建一个新项目并存储有关它的一些信息时,我如何才能抓住这一时刻?
【问题讨论】:
标签: eclipse plugins eclipse-plugin eclipse-cdt
我正在为 Eclipse IDE 开发一个 CDT 插件。我想在创建项目时写入项目范围的首选项文件,或者只是存储信息以稍后识别该项目并写入文件。当 Eclipse 正在创建一个新项目并存储有关它的一些信息时,我如何才能抓住这一时刻?
【问题讨论】:
标签: eclipse plugins eclipse-plugin eclipse-cdt
您可以使用IResourceChangeListener 侦听器来侦听所有资源更改:
ResourcesPlugin.getWorkspace().addResourceChangeListener(listener);
监听器实现单一方法:
public void resourceChanged(IResourceChangeEvent event)
从您获得资源增量的事件中:
IResourceDelta delta = event.getDelta();
对于新资源,delta getKind() 方法将是 IResourceData.ADDED。
delta 有一个 getResource 方法,可以为您获取资源 - 您对 IProject 感兴趣。
注意:增量可以包含嵌套条目。您可能需要使用delta的getAffectedChildren()方法来查找项目,或者使用accept方法访问delta中的所有节点。
【讨论】:
ResourcesPlugin.getWorkspace().addResourceChangeListener(new ResourceChangeListener());
accept 方法访问 delta 中的所有资源。在答案中添加了注释。
WorkspaceJob 的东西在当前更新完成并再次解锁后运行您的代码。