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

时间:2012-03-06 08:06:14

标签: eclipse-plugin eclipse-rcp jface

我正在尝试根据给定文章创建标签属性视图: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()方法。这里我提供了一个包含所需扩展细节的输入流对象。这会在运行时向属性视图添加选项卡。但是,如果更改列表查看器中的项目选择,则不会更新属性视图。如果这是正确的方法,请建议。

3 个答案:

答案 0 :(得分:4)

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

步骤1:将标签描述符提供者与视图相关联。

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

第2步:提供标签和部分:

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

答案 1 :(得分:1)

虽然 Viral 的答案可能与OP的具体需求不符,但许多人都可以接受所提供的答案。

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

选项会根据是否存在任何部分而添加或删除选项卡。可见选项卡上可能包含一个或多个部分,可见选项卡上的部分数量可能会从选择更改为选择。

当我遇到同样基本问题的这个页面时,我有点失望,我需要干预OP建议的方式。经过一些实验,我能够通过病毒建议的IFilter方法纯粹实现我所需要的。

答案 2 :(得分:0)

http://www.eclipse.org/articles/Article-Tabbed-Properties/tabbed_properties_view.html

提供了一个教程

您需要定义从抽象PropertySection派生的新的YourPropertySection。还要定义从IFilter派生的过滤器,并覆盖select方法,仅对所需的选择类型返回true。然后在plugin.xml中编写一个扩展点,它将PropertySection映射到所需的PropertyTab,并且还会关联您的过滤器。所以本节&amp;选项卡仅在过滤器返回true时显示。