在 Eclipse 的选项卡式属性视图中添加动态选项卡

V_M*_*V_M 5 eclipse-plugin jface eclipse-rcp

我正在尝试按照给定的文章创建选项卡式属性视图:Eclipse 选项卡式属性视图

根据文章,org.eclipse.ui.views.properties.tabbed.propertyTabs扩展点可用于添加新选项卡。

<extension point="org.eclipse.ui.views.properties.tabbed.propertyTabs">
      <propertyTabs contributorId="mview.views.SampleView">
         <propertyTab
            category="sample"
               id="mview.ButtonTab"
            label="Button"/>
         <propertyTab
            afterTab="mview.ButtonTab"
            category="sample"
               id="mview.AdvancedTab"
            label="Advanced"/>
      </propertyTabs>
   </extension>
Run Code Online (Sandbox Code Playgroud)

但是,在我的情况下,属性视图的选项卡因视图中选择的项目而异。所以我必须根据所选项目动态地将选项卡添加到扩展中。

请建议如何这样做。

更新:这样做的方法之一(我不确定是否建议)是使用 IExtensionRegistry.addContribution() 方法。在这里,我提供了一个包含所需扩展详细信息的 inputstream 对象。这在运行时向属性视图添加了选项卡。但是,随着列表查看器中项目选择的更改,属性视图不会更新。请建议这是否是这样做的正确方法。

V_M*_*V_M 4

好的,我得到了解决方案,它是一个两步过程。使用这个可以动态添加选项卡(及其部分):

第 1 步:将选项卡描述符提供程序与视图相关联。

添加扩展点 -org.eclipse.ui.views.properties.tabbed.propertyContributor到视图(如果尚未添加)。在 propertyContributor 部分中,为 tabDescriptorProvider 项添加一个类。该类将实现 ITabDescriptorProvider 接口。

第 2 步:提供选项卡和部分:

TabDescriptor 提供程序在调用其 getTabDescriptor() 方法时将返回 TabDescriptors 数组。每个 TabDescriptor 返回一个SectionDescriptor 列表,每个SectionDescriptor 都链接到一个Section。最后是包含要在屏幕上显示的小部件的Section 类。Section 类中的每个小部件都有一个修改列表器,用于更新所选项目的属性。