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

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

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

    很久很久以前

      BlogJava :: 首頁 :: 新隨筆 :: 聯(lián)系 :: 聚合  :: 管理 ::
      34 隨筆 :: 4 文章 :: 17 評(píng)論 :: 0 Trackbacks


    現(xiàn)在來討論一下emf所生成的幾個(gè)plugin。一般通過ecore模型可以生成三個(gè)插件分別是emf模型,emf.edit和emf.editor。
    讓我們現(xiàn)在看模型插件
        對(duì)于所有的EPackage,都會(huì)生成兩個(gè)或三個(gè)java package,本別是base package(*),implemention package(*.impl),tool package(*.util)。其中,第三個(gè)包是可選的,這取決于生成屬性的設(shè)置,默認(rèn)是生成。包名(*)也是在生成屬性中設(shè)置的。
        對(duì)于所有EClass,在base package中生成相應(yīng)的interface,而其java實(shí)現(xiàn)則在impl包中,如果一個(gè)EClass繼承于另一個(gè)EClass,那么生成的interface和implemention都繼承于相應(yīng)的超類的interface和implemention。如果這個(gè)類有多個(gè)超類,那么在eSuperTypes中的第一個(gè)class將作為主超類(primary supertype)。對(duì)于這個(gè)子類的實(shí)現(xiàn)它將繼承主超類的實(shí)現(xiàn),并且實(shí)現(xiàn)其他超類接口中的方法。
        對(duì)于Feature,getter和setter方法在類和接口中被定義。如果一個(gè)一個(gè)feature(成員變量)不是volatile,那么它的值會(huì)被存儲(chǔ)在一個(gè)量值(field)中。如果一個(gè)feature是只讀的,那么只生成它對(duì)應(yīng)的getter方法。對(duì)于多值屬性一般使用EList表示,而單值就用那個(gè)屬性的類型表示。EList的類型取決于模型的約束,例如,一個(gè)non-containment reference將會(huì)使用EObjectWithInverseResolvingEList,對(duì)于一個(gè)containment reference將會(huì)使用EObjectContainmentWithInverseEList表示。
        對(duì)于Operation,在包含類(containing class)的接口中生成一個(gè)公共方法標(biāo)簽,在對(duì)應(yīng)的實(shí)現(xiàn)中生成實(shí)現(xiàn)骨架。
        對(duì)于DataType,其中EEnum產(chǎn)生于一個(gè)繼承了org.eclipse.common.util.AbstractEnumerator的實(shí)現(xiàn)。對(duì)于其他的EDataType,是沒有接口和實(shí)現(xiàn)生成的,它們的實(shí)例化類就是直接使用了EAttribute的類型。
    再來看看edit插件:
        對(duì)于edit插件provider package中的所有類都有相應(yīng)的ItemProviders類生成。更進(jìn)一步,對(duì)于整個(gè)插件有一個(gè)EMFPluginClass生成。ItemProvider類繼承于org.eclipse.emf.edit.provider.ItemProviderAdaptor,用于適配模型中相應(yīng)的EObject(所有emf類的基類)。當(dāng)模型對(duì)象由于fireNotifyChanged()改變,ItemProvider會(huì)傳送相應(yīng)的通知,并過濾其他的。當(dāng)你生成插件時(shí),你可以控制哪些通知被過濾。
        ItemProvider也管理屬性描述(property descriptors)對(duì)于所有的featur of the class,通過getImage和getText方法來管理類的icon和descrition。
        對(duì)于所有的ItemProvider都有一個(gè)ItemProviderAdaptorFactory。
    最后時(shí)editor插件:
        對(duì)于所有的模型都會(huì)再presentation package中生成三個(gè)類。
         一個(gè)多頁編輯器,它給模型創(chuàng)建幾個(gè)不同的jface viewer,包含一個(gè)TreeViewer,使用edit插件中的ItemProvider作為這個(gè)treeviewer的content和label的provider。這個(gè)editor還創(chuàng)建outline和property來顯示在viewer中選中對(duì)象的屬性。
         一個(gè)ActionBarContributor,它被用于對(duì)編輯器視圖中選中的item所創(chuàng)建的context menu添加選項(xiàng)。
         最后是一個(gè)向?qū)В试S你創(chuàng)建一個(gè)包含模型對(duì)象的一個(gè)實(shí)例的資源(resource)。

       

     

    posted on 2006-02-19 20:46 Long Long Ago 閱讀(701) 評(píng)論(0)  編輯  收藏 所屬分類: EMFEclipse

    只有注冊(cè)用戶登錄后才能發(fā)表評(píng)論。


    網(wǎng)站導(dǎo)航:
     
    主站蜘蛛池模板: 亚洲an日韩专区在线| 亚洲国产高清在线| 亚洲aⅴ天堂av天堂无码麻豆| 成人免费福利视频| 亚洲av日韩av无码av| 岛国av无码免费无禁网站| 亚洲资源最新版在线观看| 成人爽A毛片免费看| 亚洲AV色无码乱码在线观看| 国产青草视频在线观看免费影院| 亚洲a∨无码精品色午夜| 亚洲成a人片在线观看日本麻豆 | 狠狠综合久久综合88亚洲| 一级特黄aaa大片免费看| 最新亚洲成av人免费看| 免费萌白酱国产一区二区三区 | 三年片在线观看免费大全| 亚洲成AV人片高潮喷水| 波多野结衣中文一区二区免费| 一级美国片免费看| 亚洲av无码一区二区乱子伦as| 1000部夫妻午夜免费| 亚洲一线产品二线产品| 免费v片在线观看品善网| 中文字幕在线免费看| 亚洲男人天堂影院| 日产乱码一卡二卡三免费| 精品人妻系列无码人妻免费视频| 亚洲欧洲国产精品你懂的| 毛片A级毛片免费播放| 又长又大又粗又硬3p免费视频| 日韩va亚洲va欧洲va国产| 91免费精品国自产拍在线不卡| 特级毛片A级毛片100免费播放| 亚洲αv久久久噜噜噜噜噜| 国语成本人片免费av无码| 一区二区三区免费视频播放器| 亚洲日韩中文字幕天堂不卡| 免费A级毛片无码A| 95老司机免费福利| 日韩精品免费一线在线观看 |