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