【问题标题】:Eclipse RCP and Iterate through Perspectives and ViewsEclipse RCP 和遍历透视图和视图
【发布时间】:2018-02-01 20:54:59
【问题描述】:

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

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

  • 启动时强制初始化所有插件
  • 获取应用程序中的所有透视对象并显示 ID
  • 为每个透视图获取与透视图关联的所有视图并显示其 ID
  • 为每个视图对象获取所有属性(实际上每个视图都将继承一个特殊的基础属性:例如 SpecialView)

基于一个特殊角色(管理员)将为所有其他角色配置权限(应显示哪个透视图、在每个透视图中将显示哪些视图、在每个视图上哪些命令将处于活动状态等)。

我对上述要求有疑问:

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

【问题讨论】:

    标签: java eclipse-rcp


    【解决方案1】:

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

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

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

    一旦你有了扩展,你也可以拥有实现它的类等等。

    【讨论】:

    • 嗨。谢谢你的回答。我已经尝试过了,但您的示例中的 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.* 视图
    • 嗨。再次感谢你。我会尝试你的解决方案。我首先需要获取透视对象,我可以访问视图对象的形式(我已经这样做了)。
    • 好的,我已经运行了您的示例。问题是我有扩展(视图)ID,而不是视图的实际对象。我错过了什么?
    • 这个:PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage().findVie w(viewID);我忘了发帖:)
    猜你喜欢
    • 2014-01-05
    • 2014-11-25
    • 1970-01-01
    • 2014-07-30
    • 1970-01-01
    • 1970-01-01
    • 2015-07-15
    • 2012-04-28
    • 2014-12-10
    相关资源
    最近更新 更多