国产精品一区二区精品_久久小视频_天堂va在线观看_99久久夜色精品国产亚洲96_日本手机在线视频_av成人免费

當前位置:首頁 > 網站舊欄目 > 學習園地 > 設計軟件教程 > EMF開發指南之Command Framework

EMF開發指南之Command Framework
2010-01-14 22:40:54  作者:  來源:
★emf的command framework分為兩部分,一部分是common的不依賴于emf.edit的command,另一個部分是和emf.edit關聯的command,和emf.edit關聯的command,通過EObject的相關方法來實現對model的attribute設置,reference修改,copy&paste操作等。
★在command command中,提供了一個Command接口,里面的方法包括execute(), undo(),redo(),canExecute(), canUndo()等等。其中getResult()方法的作用一般是用來告訴后續的command,當前操作的結果,這個在組合command中會用到,而getAffectedObject()方法則用來取得受execute(), redo(), undo()方法影響的對象,這個方法通常在emf.edit的ui framework中使用,比如一個屬性被修改之后,其他受影響的屬性也響應發生修改了,則ui對被修改的屬性使用不同的顏色來加以標識(比如高亮),則兩個方法返回的結果有時候會是一樣的。
★從Command繼承而來的AbstractCommand做的一件非常重要的事情就是實現了canExecute()方法,同時讓從AbstractCommand繼承的子類去實現prepare()方法來決定是否可執行,從而保證canExecute()最終只會被執行一次prepare()來做判斷command是否能執行
★CommandStack主要在undo,redo的時候使用,它使用一個stack來維護所有可undoable的command,可以給commandstack添加一個CommandStackListener,那么stack中的所有command在被調用的時候都會出發該listener。BasicCommandStack是CommandStack的一個簡單實現
★CompoundCommand用來一次執行多個command,它提供了一些特殊的操作,比如appendAndExecute(),該方法可以很好的將已執行的command加以記錄下來,這樣我們在undo的時候,直接倒過來執行commandlist中的每一個command即可,實際上其他的command也會在execute()方法里面這么干,另外一個方法就是unwrap(),如果你的compound command只有一個command的時候,該方法會起到一定的優化作用。
★Set,Add,Remove,Move,Replace以及CopyCommand都是和emf.edit關聯的基本command,不過CopyCommand實際上是一個Compound Command,它結合了CreateCopyCommand和InitinalizeCopyCommand。對這些基本command加以組合便可以形成其他更高級的command,比如CreateChildCommand(AddCommand+SetCommand),CutToClipboardCommand(RemoveCommand),PasteFromClipboardCommand(AddCommand+CopyCommand),DragAndDropCommand(CopyCommand+RemoveCommand+AddCommand)等等。
★AbstractOverrideableCommand解決了一個代理的問題,不過還沒明白有什么用 
★CommandParameter用來封裝創建command所需要的參數,通過參看EditingDomain的createCommand方法實現我們可以得知,通過反射得到要創建的Command Class,接著根據約定:每一種Command必須提供相應的靜態創建方法create來生成對應的Command實例
★model如何顯示交給Label Provider來管理,而對model的維護則交給了EditingDomain,該實現主要做三件事:創建command,維護undo command stack,對編輯的resource提供訪問接口。
★IEditingDomainItemProvider是用來訪問model的層次關系的接口(Editing Domain也實現了這些方法,因此后者會調用前者的實現)。而IEditingDomainItemProvider的實現則是通過ItemProvider來取得
★ItemProviderAdapter也提供了一個根據editing domain, commandparameter創建command的createCommand()方法。它和AdapterFactoryEditingDomain的實現基本一樣。

安徽新華電腦學校專業職業規劃師為你提供更多幫助【在線咨詢
相關熱詞搜索:開發指南
主站蜘蛛池模板: 欧美久久久久久久久久 | 国产精品视频免费在线观看 | 日日做夜夜爱 | 国产又粗又猛又爽又黄视频 | 精品视频第一页 | 国产1区2 | 国产精品一区二区视频 | 国产一区二区三区四区三区 | 国产真实乱freesex | 欧美 国产 亚洲 卡通 综合 | 日本一区二区高清不卡 | 免费观看一区二区三区毛片 | 亚洲电影在线观看 | 秋霞一级毛片 | 5个黑人躁我一个爽 | 久久婷婷一级淫片aaa谢语彤 | 亚洲精品乱码 | 亚洲成人免费电影 | 欧美日韩免费在线视频 | 欧美一级在线 | www.日本久久 | 亚洲电影在线观看高清免费 | 免费福利在线 | 偷拍各种高潮xxx | 欧美人与性动交xxⅹxx | 天天搞夜夜操 | 亚洲网在线 | 欧美日韩免费电影 | 一级毛片黄 | 四虎影视成人精品国库在线观看 | 欧美日韩高清在线 | 欧美日韩一区二区在线播放 | 亚洲日批 | 日韩国产激情 | 亚洲国产成人精品电影在线观看 | 一区二区三区视频免费 | 黄页网址大全软件免费 | 精品国产一区二区三区久久久 | 91精品国产高清自在线观看 | 久草a在线 | 操操操操操操操操操操 |