我已经为我的eclipse插件集成了一个propertytester。
每当我从上下文菜单中选择一个项目时,属性测试器都会被激活并检查所选元素是什么数据类型,例如IProject或IFolder。
识别效果非常好,直到我确实将CDT插件安装到eclipse为止。
现在,该文件夹似乎被表示为org.eclipse.cdt.internal.core.model.CContainer类型,这似乎是该文件夹的CDT表示形式。
有没有办法避免这种转换机制,或者将CDT文件夹类型org.eclipse.cdt.internal.core.model.CContainer以编程方式转换为已知的IFolder?

最佳答案

用户界面对象通常“适合”资源对象。

所以尝试

IFolder folder = (IFolder)Platform.getAdapterManager().getAdapter(object, IFolder.class);


其中object是所选对象。

可能没有提供直接连接到IFolder的适配器,因此也请尝试适应IResource

在较新版本的Eclipse中,适配器管理器是通用的,因此您不需要强制转换。

在Eclipse 4.6(Neon)中,可以使用:

IFolder folder = Adapters.adapt(object, IFolder.class);


这还将检查该类是否实现IAdaptable还是IFolder的实例。仅在仅希望代码在Eclipse 4.6(及更高版本)中运行时才使用此选项。

07-24 15:38