2012-03-06 53 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方法完成我所需要的工作。