将secondaryId从菜单贡献传递到Eclipse 4中的零件创建

时间:2016-04-07 17:55:29

标签: eclipse eclipse-rcp e4

我目前正在尝试修复我们的应用程序中的回归,这似乎是由我们从e3切换到使用e3与e3兼容层进行的。

我们有一些由secondaryId配置的观点。这些视图仅在用户选择菜单选项时创建,我们依靠菜单贡献来设置secondaryId,以便视图可以根据该信息进行自我配置。

使用e3,我们在视图插件view的{​​{1}}扩展点中定义了一个org.eclipse.ui.views

plugin.xml

然后在我们的应用程序<extension point="org.eclipse.ui.views"> <category id="my.view.category" name="My View Category Name"> </category> <view allowMultiple="true" category="my.view.category" class="my.views.View" id="my.views.view.multiple" name="My Views View" restorable="true"> </view> </extension> 中,我们定义了引用此视图的菜单贡献:

plugin.xml

这很好用。当用户选择“我的菜单”菜单上的“特定视图”项时,<extension point="org.eclipse.ui.menus"> <menuContribution allPopups="false" locationURI="menu:window?after=showView"> <menu label="My Menu"> <command commandId="org.eclipse.ui.views.showView" label="Specific View" style="push"> <parameter name="org.eclipse.ui.views.showView.viewId" value="my.views.view.multiple"> </parameter> <parameter name="org.eclipse.ui.views.showView.secondaryId" value="viewSpecificData"> </parameter> </command> </menu> </menuContribution> </extension> 已在课程createPartControl()上调用,my.views.View正确返回getViewSite().getSecondaryId(),可以使用配置视图。

然而,在e4中,这不起作用。跟踪代码,viewSpecificData类不再明确存储ViewReference,而secondaryIdViewPart只提取ViewReference中冒号后面的所有内容将 作为viewId返回。因此,对于我们现有的secondaryId,其中没有冒号,返回的secondaryId为viewId

我尝试删除null并将secondaryId添加到viewSpecificData

viewId

但这只是意味着当选择菜单项时,会弹出一个错误对话框,说“找不到视图:my.views.view:viewSpecificData”,所以我在我的应用程序中添加了一个新视图{{1} }

        <parameter name="org.eclipse.ui.views.showView.viewId"
                   value="my.views.view.multiple:viewSpecificData">
        </parameter>

这很有用,但是我有十几个菜单项需要转换我正在处理的应用程序,这意味着十几个新视图,以及需要在每个部分的两个不同部分之间保持一致的十几个应用程序plugin.xml文件。不仅如此,我们还在此框架上构建了24个应用程序,因此我们可以轻松地讨论需要在整个代码库中添加的数百个视图。

我不禁觉得必须有更好的方法。

所以,

  • 有没有办法将菜单贡献中的<extension point="org.eclipse.ui.views"> <view allowMultiple="true" category="my.view.category" class="my.views.View" id="my.views.view.multiple:viewSpecificData" name="My Views View" restorable="true"> </view> </extension> 信息添加到plugin.xml,而无需为每个人创建新的secondaryId
  • 或者,有没有办法创建单个viewId,在冒号之后的任何文本都会使用?
  • 最后,有没有更好的方法来解决获取菜单命令的问题,这些命令启动相同的View类但具有特定的视图配置?

†我尝试添加view的视图。

0 个答案:

没有答案