<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    很久很久以前

      BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
      34 隨筆 :: 4 文章 :: 17 評論 :: 0 Trackbacks

    ?????? 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上創建。


    posted on 2006-09-17 22:24 Long Long Ago 閱讀(2879) 評論(1)  編輯  收藏 所屬分類: Eclipse

    評論

    # re: eclipse的新功能——tabbed property 的使用 2008-05-15 08:44 veles
    您好,請教一下您如何才能讓typemapper返回一個model元素呢?我知道下列語句能得到相應的模型元素。
    EditPart actor_part = (EditPart)((IStructuredSelection) object).getFirstElement();
    eObject = (EObject) ((org.eclipse.gmf.runtime.notation.View) actor_part.getModel()).getElement();
    如何返回這個值呢?這個class好像只能返回一個class值啊?
    ps:我java不是很好 :)
      回復  更多評論
      

    主站蜘蛛池模板: 成全视频免费观看在线看| 成人a毛片视频免费看| 日韩免费电影网站| 亚洲精品无播放器在线播放| 8888四色奇米在线观看免费看| 亚洲成a人片在线观看无码| 一级日本高清视频免费观看| 亚洲午夜福利精品久久| 亚洲国产日韩在线成人蜜芽 | 成年人免费的视频| 亚洲视屏在线观看| 成人一级免费视频| 久久亚洲AV无码西西人体| 亚洲免费观看网站| 久久精品女人天堂AV免费观看| 国产AV旡码专区亚洲AV苍井空| 大地资源免费更新在线播放| 亚洲精品美女久久久久久久| 亚洲av无码成人精品区在线播放 | 中国一级毛片视频免费看| 亚洲精品国产精品乱码不卡√| 亚洲熟妇AV日韩熟妇在线| 免费鲁丝片一级在线观看| 日韩在线视频播放免费视频完整版| 亚洲国产精品尤物yw在线 | 亚洲精品456播放| 99久久精品毛片免费播放| 亚洲高清中文字幕| 成人人免费夜夜视频观看| 男女交性无遮挡免费视频| 亚洲夜夜欢A∨一区二区三区| 亚洲AV无码专区在线厂| 国产成人精品曰本亚洲79ren| 国产亚洲免费的视频看| 亚洲人成777在线播放| 国产一区二区三区在线免费| 少妇性饥渴无码A区免费| 亚洲av日韩av综合| 6080午夜一级毛片免费看| 亚洲熟妇无码八V在线播放| 中文字幕亚洲图片|