<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
    主站蜘蛛池模板: 精品一区二区三区免费观看| 亚洲国产成人精品无码一区二区| 亚洲狠狠婷婷综合久久蜜芽| 青青草原亚洲视频| 黄页视频在线观看免费| 国产成人无码a区在线观看视频免费| 香蕉大伊亚洲人在线观看| 好男人www免费高清视频在线| 在线免费观看亚洲| 国产精品1024永久免费视频| 亚洲一区在线观看视频| 91频在线观看免费大全| 亚洲中文字幕精品久久| 午夜无遮挡羞羞漫画免费| 亚洲AV成人一区二区三区观看| 国产在线播放免费| jizz中国免费| 国产亚洲人成网站在线观看不卡| a级毛片100部免费观看| 亚洲综合免费视频| 成人免费无遮挡无码黄漫视频| 亚洲gay片在线gv网站| 国产偷窥女洗浴在线观看亚洲| 中文字幕在线免费看| 亚洲视频在线观看网址| 全免费a级毛片免费看无码| 美女免费视频一区二区三区| 国产偷v国产偷v亚洲高清| 免费观看无遮挡www的小视频| 亚洲欧美精品午睡沙发| 国产亚洲精品国看不卡| 最近中文字幕免费完整| 亚洲暴爽av人人爽日日碰| 中文字幕亚洲一区二区va在线| 69视频在线是免费观看| 久久精品国产亚洲av品善| 亚洲日韩av无码| 我要看WWW免费看插插视频| 一区二区在线视频免费观看| 亚洲综合激情视频| 亚洲区小说区图片区|