Java EclipseRCP和遍历透视图和视图

Java EclipseRCP和遍历透视图和视图,java,eclipse-rcp,Java,Eclipse Rcp,我有一个带有许多插件的EclipseRCP应用程序。每个插件都有自己的透视图和新视图或共享视图。 我需要在原始应用程序的基础上创建一个带有插件的独立应用程序。 此应用程序将充当每个插件/透视图的权限配置程序 为此,我需要执行以下操作: 在启动时强制初始化所有插件 获取应用程序中的所有透视对象并显示ID 对于每个透视图,获取与透视图关联的所有视图并显示其ID 对于每个视图对象,获取所有属性(实际上每个视图都将继承一个特殊的基本视图:例如SpecialView) 基于此,一个特殊角色(管理员)将

我有一个带有许多插件的EclipseRCP应用程序。每个插件都有自己的透视图和新视图或共享视图。 我需要在原始应用程序的基础上创建一个带有插件的独立应用程序。 此应用程序将充当每个插件/透视图的权限配置程序

为此,我需要执行以下操作:

  • 在启动时强制初始化所有插件
  • 获取应用程序中的所有透视对象并显示ID
  • 对于每个透视图,获取与透视图关联的所有视图并显示其ID
  • 对于每个视图对象,获取所有属性(实际上每个视图都将继承一个特殊的基本视图:例如SpecialView)
基于此,一个特殊角色(管理员)将为所有其他角色配置权限(应显示哪个透视图、在每个透视图中显示哪些视图、在每个视图上激活哪些命令等)

我必须回答有关上述要求的问题:

  • 如何在启动时强制所有插件初始化(Eclipse使用延迟激活)
  • 如何获取透视对象(不是
    IPerspectiveDescriptor
    )和视图对象

要强制激活,您可以在
plugin.xml
编辑器中设置一个标志,前提是该插件为单例

要查找视图和透视图,可以循环扩展注册表,提供插件的正确id以及视图和透视图扩展点:

IExtensionRegistry er = Platform.getExtensionRegistry();
IExtensionPoint ep = er.getExtensionPoint(plug-in_id, extensionId);
IExtensions[] ext = ep.getExtensions();

一旦有了扩展,您还可以让类实现它,依此类推。

Hi。谢谢你的回答。我已经尝试过了,但您的示例中的ep(IExtensionPoint)似乎只包含Eclipse扩展。在激活所有插件之后,我使用了调试器。如果你想找到视图,你必须遍历“org.eclipse.ui.view”扩展点的扩展,即IExtensionPoint ep=er.getExtensionPoint(“org.eclipse.ui.views”);ep.getExtensions();在这个数组中,您可以找到RCP中所有视图的配置参数。在我的调查中,我发现:com.collabnet.subversion.merge[15]com.instantiations.designer.core[29]org.deved.antlride.debug.ui[121]org.deved.antlride.ui[129],而不仅仅是org.eclipse.*viewsHi。再次感谢你。我会试试你的解决办法。我首先需要获取透视对象,我可以访问视图对象的表单(我已经这样做了)。问题是我有扩展(视图)ID,而不是视图的实际对象。我错过了什么?这是:PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findVie w(视图ID);我忘了发:)