【问题标题】:Add dynamic tabs in tabbed property view of eclipse在 Eclipse 的选项卡式属性视图中添加动态选项卡
【发布时间】:2012-03-06 08:06:14
【问题描述】:

我正在尝试根据给定的文章创建一个选项卡式属性视图:The Eclipse Tabbed Properties View

根据文章,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>

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

请提出建议。

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

【问题讨论】:

    标签: eclipse-plugin eclipse-rcp jface


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      【解决方案2】:

      虽然来自 Viral 的答案可能不符合 OP 的具体需求,但提供的答案可能会为许多人所接受。

      如果选项卡没有要显示的任何部分,默认的TabbedPropertySheetPage 将不会显示该选项卡。因此,如果根据IFilter 实现类指定问题域,则可以实现“动态”选项卡。

      选项卡将随着选择的变化而添加或删除,具体取决于是否存在任何部分。可见选项卡上可能有一个或多个部分,可见选项卡上的部分数量可能会因选择而异。

      当我遇到此页面时遇到相同的基本问题时,我有点失望,因为我需要按照 OP 建议的方式进行干预。经过一些实验,我能够完全通过 Viral 建议的 IFilter 方法实现我所需要的。

      【讨论】:

        【解决方案3】:

        教程在http://www.eclipse.org/articles/Article-Tabbed-Properties/tabbed_properties_view.html提供

        您需要定义一个派生自Abstract PropertySection 的新YourPropertySection。还定义一个从IFilter 派生的过滤器并覆盖select 方法以仅对所需的选择类型返回true。然后在 plugin.xml 中编写一个扩展点,它将您的 PropertySection 映射到所需的 PropertyTab 并关联您的过滤器。因此,此部分和选项卡仅在您的过滤器返回 true 时显示。

        【讨论】:

        • 感谢 Viral 的回答。您的解决方案指导如何使部分动态,但是,我必须制作标签。显示选项卡后,它将自动具有预定义的部分。目前,我正在尝试提供一个自定义 tabDescriptorProvider,它将(基于选择)将所需的选项卡添加到列表中。我认为我在这种方法上遗漏了一些东西,因为仍然没有显示属性。
        猜你喜欢
        • 2012-04-16
        • 2023-03-23
        • 1970-01-01
        • 2017-09-12
        • 2015-04-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-12-18
        相关资源
        最近更新 更多