综合二区_欧美成人综合_欧美成人二区_a黄视频_亚洲视频在线播放_一区二区三区视频免费看

当前位置:首页 > 网站旧栏目 > 学习园地 > 设计软件教程 > 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的实现基本一样。

安徽新华电脑学校专业职业规划师为你提供更多帮助【在线咨询
相关热词搜索:开发指南
主站蜘蛛池模板: 成年免费在线 | 97操碰 | 国产真实夫妇交换视频 | 国产欧美一区二区三区免费 | 91视频在线看| 精品天堂 | 小早川怜子一区二区的演员表 | 日韩欧美精品一区二区三区 | 91视在线国内在线播放酒店 | 一区二区三区久久 | 亚洲中国字幕 | 亚洲国产91 | 国产欧美精品久久 | 91视频免费观看网址 | 91官网视频 | 亚洲视频免费观看 | 成人av一区二区亚洲精 | www.日本在线视频 | 亚洲精品视频在线看 | 91av电影在线观看 | www.国产91| 全部免费毛片在线播放 | 中文字幕久久久 | 久久激情综合网 | 天天插综合网 | 久久精品国产一区二区三 | 免费成人午夜视频 | 免费成人午夜视频 | 亚洲专区一区虐另类调教 | 91久久精品久久国产性色也91 | 亚洲www啪成人一区二区 | 亚洲免费a视频 | 国产日韩欧美一区二区久久精品 | 天堂vs亚洲 | 91精品在线免费观看视频 | 国产成人一区二区三区精 | 在线精品99 | 久草在线免费福利资源 | 一区二区三区国产在线观看 | 精品在线观看视频 | 久久久黄网 |