1. 程式人生 > >Eclipse選項卡式的屬性檢視(The Eclipse Tabbed Properties View)

Eclipse選項卡式的屬性檢視(The Eclipse Tabbed Properties View)

Eclipse工作臺提供了一個性能檢視用於檢視(和/或編輯)選定專案的屬性。在本文中,您將學習如何使用選項卡式的屬性檢視建立一個性能增強的使用者介面檢視。

1.引言

Eclipse工作臺提供了一個屬性檢視,即在文章中詳細描述你的效能控制。預設的使用者介面是屬性和值對錶,並且值使用一個標準的對話方塊單元格編輯器。

工作臺使用擴充套件(extensions)為屬性檢視定義了一個自定義的使用者介面。利用這個擴充套件,Properties檢視已建立。

屬性檢視允許您建立任何使用者介面的屬性。此外,您可以為元素建立使用者介面而不用實現IPropertySource。事實上,屬性檢視可以被擴充套件到檢視在工作臺中被選擇的任何資料。

2.例項解析


依賴 org.eclipse.ui.views.properties.tabbed 外掛

需要實現三個擴充套件點:
org.eclipse.ui.views.properties.tabbed.PropertyContributor
Tabbed View 由一個 PropertyContributor 構成,其中包含多個 PropertyTab。

<extension point="org.eclipse.ui.views.properties.tabbed.propertyContributor">
      <propertyContributor contributorId="mview.views.SampleView">
         <propertyCategory category="sample"/>
      </propertyContributor>
</extension>
org.eclipse.ui.views.properties.tabbed.PropertyTabs
每個 PropertyTab 由多個 PropertySection 構成。
<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>
org.eclipse.ui.views.properties.tabbed.PropertySections
每個 PropertySection 實現為一個或一組 widget,對應著一個 property。

<extension point="org.eclipse.ui.views.properties.tabbed.propertySections">
      <propertySections contributorId="mview.views.SampleView">
         <propertySection
               class="mview.views.LabelSection"
               id="mview.LabelSection"
               tab="mview.ButtonTab">
            <input type="mview.views.ButtonElement"/>
         </propertySection>
         <propertySection
               afterSection="mview.LabelSection"
               class="mview.views.SizeSection"
               id="mview.SizeSection"
               tab="mview.ButtonTab">
            <input type="mview.views.ButtonElement"/>
         </propertySection>
         <propertySection
               afterSection="mview.SizeSection"
               class="mview.views.FontSection"
               id="mview.FontSection"
               tab="mview.ButtonTab">
            <input type="mview.views.ButtonElement"/>
         </propertySection>
         <propertySection
               class="org.eclipse.ui.views.properties.tabbed.AdvancedPropertySection"
               id="mview.AdvancedSection"
               tab="mview.AdvancedTab">
            <input type="mview.views.ButtonElement"/>
         </propertySection>
      </propertySections>
</extension>

Tabbed Property是eclipse3.2中新加入一個view,可以使屬性編輯器的功能近乎無限的擴大。這裡說明一些Tabbed Property的使用方法。Tabbed Property中分成三個部分,Contributer,Tabs,Sections,一個Contributor包含若干個Tabs,一個Tabs又可以包含若干個sections。下面我們來分別進行描述。
      1.Contributor 這需要擴充套件org.eclipse.ui.views.properties.tabbed.PropertyContributor擴充套件點,定義時,最重要的是定義contributId,這個id必須是全域性唯一的,這樣在載入屬性頁時,才能找到這個我們定義的屬性頁,一般地,我們都將對應於這個屬性頁的workbenchpart的id作為本contributor的id,這樣我們在程式碼中可以不硬編碼本id字串,而使用getSite().getId()就可以得到這個id了(當然,這樣定義id不是必須的)。一個property view可以被多個workbench part共享,但 一個workbench part只能有一個property view,這個workbench part需要實現ITabbedPropertySheetPageContributor 介面,這個介面只有一個方法,要求返回本part對應的tabbed property Contributor id,一般只要return getSite().getId();
   contributor有如下幾個attribute:
   1)typeMapper,這個類需要實現org.eclipse.ui.views.properties.tabbed.ITypeMapper,主要是實現型別的對映,因為我們選擇的元素並不一定是實現IPropertySource的元素(即能夠給property view提供內容的元素),比如在GEF中,我們選擇的finger實際上是選擇了對應的EditPart,而實際上實現了IPropertySource一般的是model部分的元素,所以這時候我們要將Editpart對映到對應的model元素。
   2)labelProvider,需要一個實現org.eclipse.jface.viewers.ILabelProvider的類,主要是在各個tabs的最上面顯示文字和圖片。
   3)propertyCategory,用於聚合多個tabs,注意至少要定義一個category,來聚合tabs,否則,可能會顯示property失敗。  

   2.Tabs,這個需要擴充套件org.eclipse.ui.views.properties.tabbed.propertyTabs擴充套件點,其中contributorId就是與之相關聯的Contributor的id,然後我們可以定義多個tab,這些tab的屬性如下:
   1)label,用於顯示在property view的tab bar上的字
   2)category,填入的就是在Contributor擴充套件點中定義的那些category,用於聚合tabs
   3)id,本tab的唯一標識
   4)afterTab,用於tab之間的排序,如果這是第一個tab,則沒有afterTab,afterTab指的是在本tab之前的那個tab,並且afterTab描述的是在同一個category中的tabs,不同category之間的順序是按照在contributor中定義category的順序來定義的。
   5)indented,如果為ture,則各個tabs是有縮排的
   6)image,本tab的圖片

   3.section ,需要擴充套件 org.eclipse.ui.views.properties.tabbed.PropertySections擴充套件點,它的contributionId就是本section所在的Contribution的id,針對每個tab,我們可以定義多個section,每個section的attribut描述如下:
   1)id,本secation的唯一標識
   2)tab,本section所屬tab的標識
   3)class,實現了org.eclipse.ui.views.properties.tabbed.AbstractPropertySection抽象類的類,用於描述這個section的控制元件和佈局。
   4)aftersection和上面的aftertab差不多,描述的是同一個tab中的section的順序,注意afterserction描述的是本section之前的section的id
   5)filter:一個實現org.eclipse.jface.viewers.IFilter介面的過濾器,對選中元素進行過濾。
   6)enableFor:一個用於只是選擇數目的值,必須要符合這個數目才能使能這個section。如果不符合,則這個section就被過濾了,如果省略本值,則section的使能器就不會工作了。這是一個自然數,比如,當enableFor=1時,僅僅只有一個元素被選擇的時候,本section才會被使能。

some notes:
    上面說過實現ITabbedPropertySheetPageContributor介面的workbench part除了要實現getContributeId方法外,還需要過載getAdapter方法,因為eclipse的預設載入的property veiw時原來的那個view,為了使tabbed property view能夠載入,我們就需要過載getAdapter方法,返回一個TabbedPropertySheetPage物件。

    在實現section class的時候需要注意,createcontrol時首先應該先建立一個composite,一般是 Composite composite = getWidgetFactory().createFlatFormComposite(parent); 然後各個控制元件在這個composite上建立。

相關推薦

Eclipse選項屬性檢視The Eclipse Tabbed Properties View

Eclipse工作臺提供了一個性能檢視用於檢視(和/或編輯)選定專案的屬性。在本文中,您將學習如何使用選項卡式的屬性檢視建立一個性能增強的使用者介面檢視。 1.引言 Eclipse工作臺提供了一個屬性

小程式選項以及swiper套用跨頁面

選項卡tab和swpier之間的套用 其實我之前寫過一篇選項卡的切換demo,大家闊以參考一下 小程式多個選項卡切換 那今天寫這個demo呢,是因為專案需求,所以僅供參考。 我是拿到了home.wxml的陣列下標, 通過url傳參的方式去將這個id傳到下一個頁

easyui實現tabs選項之間的切換只顯示一個

一、建立選單項 <div class="easyui-accordion" id="wl_accordion" data-options="fit:true,border:false">

eclipse下的tomcat配置https最簡單得配置https

如果 希望 alias lib connector connect eclipse cnblogs itl 近期公司列出一大堆的東西,其中包括https,啥也不想說,你們是無法理解的苦逼的我的 關於https這些通道可以去百度Google其原理,不廢話,自動生成秘鑰,需要使

表達求值NOIP2013 普及組第二題

tool ber 算術表達式 class 整數 括號 給定 編程 解釋 描述 給定一個只包含加法和乘法的算術表達式,請你編程計算表達式的值。 格式 輸入格式 輸入僅有一行,為需要你計算的表達式,表達式中只包含數字、加法運算符“+”和乘法運算符“*”,且沒有括號,所有參與運算

下落的樹葉 The Falling Leaves UVA - 699

sum std name fall include ++ 源代碼 lock 水平 題目描述: 原題:https://vjudge.net/problem/UVA-699 題目思路: 1.依舊二叉樹的DFS 2.建樹過程中開個數組統計 //紫書源代碼WA

Linux中USB無線網絡實現AP模式hostapd交叉編譯環境下

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Maven和Gradle屬性對比pom.xml與build.gradle

轉載自:https://www.cnblogs.com/huang0925/p/5209563.html Maven和Gradle對比 Java世界中主要有三大構建工具:Ant、Maven和Gradle。經過幾年的發展,Ant幾乎銷聲匿跡、Maven也日薄西山,而Gradle的發展則如日中天

一次同餘的求解擴充套件歐幾里得

大佬的解釋 題目連結 一次同餘式a*x%n=b的解的存在條件是b整除gcd(a,n)。 #include<cstdio> #include<cstring> #includ

C語言作業系統——頁地址變換邏輯地址轉為實體地址

本次程式碼分享較為簡單,主要是二進位制與十六進位制之間的轉換。還是一個工程檔案中包含一個頭檔案和一個功能檔案和主函式檔案,瀟小白在這裡就不再次介紹啦!程式碼如下:標頭檔案,pag_trans.h#include <stdio.h>#include <stri

例題4-3 救濟金髮放The Dole Queue, UVa 133題解——23行程式碼

題目描述 題意解析 n(n<20)個人站成一圈,逆時針編號為1~n。有兩個官員,A從1開始逆時針數,B從n開始順時針數。在每一輪中,官員A數k個就停下來,官員B數m個就停下來(注意有可能兩個官員停在同一個人上)。接下來被官員選中的人(1個或者2個)離開

救濟金髮放The Dole Queue,UVa33

In a serious attempt to downsize (reduce) the dole queue, The New National Green Labour Rhinoceros Party has decided on the following s

演算法競賽 例4-3救濟金髮放The Dole Queue,UVa 133

n(n<20)個人站成一圈,逆時針編號為1~n。有兩個官員,A從1開始逆時針數,B從n開始順時針數。在每一輪中,官員A數k個就停下來,官員B數m個就停下來(注意有可能兩個官員停在同一個人上)

例題4-3 救濟金髮放The Dole Queue, UVa 133

n(n<20)個人站成一圈,逆時針編號為1~n。有兩個官員,A從1開始逆時針數,B從n開 始順時針數。在每一輪中,官員A數k個就停下來,官員B數m個就停下來(注意有可能兩個 官員停在同一個人上)。接下來被官員選中的人(1個或者2個)離開隊伍。 輸入n,k,m輸出每輪裡被

STS(Eclipse)構建Maven多模組專案水平結構和樹形結構

在配置完Java開發環境和MAVEN後,我們來建立專案 STS(Eclipse)下載 請到官網http://spring.io/tools/sts/all/ 下載STS最新版 然後放到G盤,然後解壓到當前 G:\sts-bundle\

C# 如何解決程式頓的問題多執行緒初步學習

在編寫程式的時候,有時候難免會出現後臺執行時間過長的問題,這個時候就要考慮多執行緒的操作了。 正文 不帶引數的多執行緒實現 第一步 建立控制檯應用 第二步 引用System.Threading.Thread using System.Threading;

《計算機網路》第四章:介質訪問控制The Medium Access Control Sublayer

Copyright(C)肖文棟教授@北京科技大學自動化學院內容安排4.1 通道分配問題The Channel Allocation Problem 4.2 多路訪問協議Multiple Access Protocols 4.3 乙太網Ethernet 4.4 無線區域網Wir

eclipse中git外掛的使用專案提交到碼雲

eclipse上建立專案testgit,並同步到本地git倉庫,專案右鍵team–shareProject,如圖: respository:本地倉庫地址 點選finish完成本地倉庫建立,接下來將專案提交到本地倉庫:

特蘭數好像很有用的說

關於卡特蘭數 卡特蘭數是一種經典的組合數,經常出現在各種計算中,其前幾項為 : 1, 2, 5, 14, 42, 132, 429, 1430, 4862, 16796,

【Learning Notes】生成對抗網路Generative Adversarial Networks,GAN

在學習 Variational Auto-Encoder時,同時注意到了 GAN 研究的火熱。但當時覺得 GAN 非常不成熟(訓練不穩定,依賴各種說不清的 tricks;沒有有效的監控指標,需要大量的人工判斷,因此難以擴展到圖像之外的高維數據)。在讀了 Good