Eclipse plugin 如何获取通用导航器内容?

Eclipse plugin 如何获取通用导航器内容?,eclipse-plugin,eclipse-pde,cnf,Eclipse Plugin,Eclipse Pde,Cnf,听起来好像PackageExplorer视图的全部内容都是通过CommonNavigator框架公开的 但我如何访问这些数据?我想查看其中所有项目、文件和方法的名称。我得到的最接近的结果是: INavigatorContentService n = NavigatorContentServiceFactory.INSTANCE.createContentService(SampleView.ID); ITreeContentProvider tcp = n.createCommonContent

听起来好像PackageExplorer视图的全部内容都是通过CommonNavigator框架公开的

但我如何访问这些数据?我想查看其中所有项目、文件和方法的名称。我得到的最接近的结果是:

INavigatorContentService n = NavigatorContentServiceFactory.INSTANCE.createContentService(SampleView.ID);
ITreeContentProvider tcp = n.createCommonContentProvider();
Object[] els = tcp.getElements(new Object());
但是els是空的,可能是因为我不知道将什么传递到getElements中

一些有趣的调试:当我使用调试器深入到getElements调用时,FinDrootContentTextensions似乎找到了一堆看起来很有希望的NavigatorContentDescriptor,但是它们没有返回,因为它们没有通过isActive和IsRootTextension检查。然后,它继续尝试寻找其他要返回的对象,但它考虑了我传入的对象,并继续不工作。我一点也不知道发生了什么事


我发现的所有文档都集中于使用CNF添加新视图,而不是查看工作区的现有内容。这方面有什么好的文档吗?谢谢

包资源管理器不使用公共导航器(项目资源管理器使用)。您可以使用资源API查看项目、文件夹和文件。对于Java文件的内容,您使用JDT抽象语法树API。感谢您的回复!我想象JDT以某种通用格式公开其java结构,以便Project Explorer可以显示它;我假设项目浏览器不能用JDT来思考。JDT没有给CNF一个自定义的ITreeContentProvider/ILabelProvider,我可以用类似于Project Explorer视图的方式访问它吗?我不知道Project Explorer使用什么,但尝试从视图中获取信息是错误的方法-如果视图未打开会发生什么?提供了广泛的API,您可以直接使用。很抱歉,我明显不愿意使用JDT AST,我只是想确定在我走这条路之前,没有语言不可知的方法。我在这个问题上的想法是,也许我不能从观点中阅读,而是从观点所阅读的任何东西中阅读。我想象有一种方式,JDT、CDT等都以项目浏览器和其他语言无关组件可以读取的方式注册它们的内容。如果有办法的话,那将是获得我想要的信息的首选方式。