2012-03-06 48 views
4

我想创建一个标签属性视图按给定的文章的标签属性查看动态标签:The Eclipse Tabbed Properties View添加在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> 

但在我的情况下,属性视图的选项卡因所选项目而异。所以我必须动态地将选项卡添加到扩展中,具体取决于所选的项目。

请建议如何操作。

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

回答

4

好吧,我得到了解决它的两个步骤。使用这种人能dyanamically添加选项卡(和其部分):

步骤1:关联与所述视图中的标签描述符提供商。

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

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

TabDescriptor提供商将返回TabDescriptors的阵列时,其getTabDescriptor()方法被调用。每个TabDescriptor返回一个SectionDecriptors列表,每个SectionDescriptor都链接到一个Section。最后,它是包含窗口小部件的Section类。 Section类中的每个小部件都有一个修改列表器,用于更新所选项目的属性。

+0

非常感谢! – DrKaoliN 2013-09-10 08:45:58

0

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

提供您需要定义一个新的YourPropertySection衍生fromAbstract PropertySection。还限定从IFilter导出的过滤器,并重写select方法只为选择的所需类型的返回true。然后在plugin.xml中编写一个扩展点,它将您的PropertySection映射到所需的PropertyTab,并且还将关联您的过滤器。所以,当你的过滤器返回true,这部分&标签才会显示。

+0

感谢病毒为您的答案。您的解决方案指导如何使部分动态,但是,我必须制作标签。一旦显示选项卡,它将自动具有预定义部分。目前我正在尝试提供一个自定义tabDescriptorProvider,它将(根据选择)添加所需的选项卡列表。我认为我错过了这个方法,因为属性还没有被显示。 – 2012-03-12 05:15:55

1

尽管从病毒的答案可能不符合OP的具体需求,但提供的答案很可能被许多人接受。

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

根据是否存在任何部分,选项卡将随着选择的变化而添加或删除。可见选项卡上可能有一个或多个部分,可见选项卡上的部分数量可能会从选择变为选择。

当我在同一个基本问题中遇到这个页面时,我有点失望,我需要介入OP的建议。经过一些实验后,我完全可以通过病毒建议的IFilter方法完成我所需要的工作。