<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
    ??????? GEF中的起到關鍵作用的是EditPart,而EditPart中起到關鍵作用的是EditPolicy,現在來描述一下GEF是如何創建一個圖形并顯示顯示出來的。
    ??????? 首先通過單擊調色板,會調用一個實現org.eclipse.gef.requests.CreationFactory接口的工廠類,這個是我們在注冊相應的ToolEntry時聲明的,通過傳入的參數這個工廠類就知道應該創建一個什么類型的model元素。(注意,這時候因為我們只是純創建了一個模型元素,對于它的父元素,位置信息等等都還不清楚,所以一般我們在設置模型元素的構造函數時需要有個無參數的構造方法(或者有默認參數的構造函數)。)
    ??????? 當單擊畫布上的某個位置后,相應的信息比如 模型的父元素,位置信息等等都已經可以確定,將這些信息以及新創建的模型元素本身包裝成request傳給相應的EditPart(就是鼠標單擊處所在的圖形元素對應的EditPart)。
    ??????? 這個EditPart會將這個request傳給相應的EditPolicy(至于怎么傳遞,還不清楚,估計是這樣的,EditPart會傳給注冊在其上的所有EditPolicy,而每個EditPolicy都有個getCommand方法,通過request的type交給相應的getXXXCommand方法。查看了一下源代碼,發現在AbastractEditPart中有個getCommand方法正是將每個EditPolicy中的getCommand方法都調用了一遍)。
    ???????然后EditPolicy處理相應的request,具體的就是調用getXXXCommad方法得到處理相應request的Command,Command是可以改變模型。上面提到的這種EditPolicy屬于NonGraphical類型,GEF中還包括了一種稱為Graphical類型的EditPolicy,這種EditPolicy不對模型進行處理,只是用來修改圖形顯示(似乎這種說法不正確,它可以更改視圖元素的位置,在業務模型和視圖模型統一的情況下,這種圖形EditPolicy也會更改模型);而NonGraphical的EditPolicy則是不清楚圖形元素的,但它可以對模型進行更改,因此這種EditPolicy在不同view之間是可以通用的。
    ?????? 當模型發生改變后,注冊再其上的EditPart將會得到相應的通知,此時,通過通知中的property信息,EditPart會refreshVisual或者refreshChildren,從而使視圖發生改變。
    posted on 2006-04-09 12:33 Long Long Ago 閱讀(635) 評論(0)  編輯  收藏 所屬分類: GEFEclipse
    主站蜘蛛池模板: 日本黄页网址在线看免费不卡| 亚洲精品无码成人AAA片| a级片免费在线播放| 免费a级毛片无码av| 亚洲日韩国产精品第一页一区| 久久亚洲AV无码精品色午夜麻豆| 亚洲成aⅴ人片在线观| 国产AV无码专区亚洲AV琪琪| 日日摸夜夜添夜夜免费视频 | 亚洲国产精品无码久久青草| 精品亚洲一区二区| 久久精品成人免费看| 亚洲专区在线视频| 久久午夜免费视频| 国产精品亚洲二区在线观看| av网站免费线看| 亚洲VA中文字幕无码一二三区| 亚洲国产一区二区三区在线观看| 免费鲁丝片一级在线观看| 亚洲精品高清无码视频| 麻豆精品成人免费国产片| 久久夜色精品国产噜噜亚洲AV| 波多野结衣在线免费视频| 亚洲中文字幕无码中文| 无码国产精品一区二区免费3p| 4444亚洲国产成人精品| 成人免费男女视频网站慢动作| 亚洲国产精品热久久| 中文字幕无码播放免费| 久久亚洲精品无码gv| 亚洲一区精品伊人久久伊人| 青青草无码免费一二三区| jizzjizz亚洲| 日本免费高清视频| 久久国产成人精品国产成人亚洲| 亚洲精品国产第一综合99久久| 亚洲国产天堂久久综合| 日韩亚洲翔田千里在线| 国产精品va无码免费麻豆| 91在线免费观看| 亚洲一线产区二线产区区|