当前位置:  开发笔记 > 编程语言 > 正文

Eclipse RCP:操作VS命令

如何解决《EclipseRCP:操作VS命令》经验,为你挑选了2个好方法。

Eclipse RCP上下文中的Actions和Commands之间有什么区别?我知道他们都对菜单条目有贡献,但哪一个更好?为什么?

在我阅读的所有在线资源中,我无法深入了解两者之间的差异.我实际上并没有尝试过使用它们,但只是想从更高层次的角度来理解它们.

谢谢



1> VonC..:

您是否阅读过eclipse wiki 常见问题解答命令和操作之间有什么区别?

您可能已经了解动作和命令基本上做同样的事情:它们导致执行某段代码.它们主要由用户界面内的艺术家触发

Actions的主要关注点是表现形式和代码都存储在Action中.
尽管Action Delegates中存在一些分离,但它们仍然与基础操作相关联.选择事件将传递给Actions,以便它们可以根据当前选择更改其启用状态(以编程方式).这不是很优雅.另外,要在某个工作台部件上执行操作,您必须使用多个扩展点.

命令几乎可以解决所有这些问题.基本思想是命令只是要执行的一些代码的抽象概念.代码的实际处理由处理程序完成.处理程序由工作台的某个状态激活.平台核心表达式查询此状态.这意味着我们只需要一个全局Save命令,该命令根据当前处理的处理程序而表现不同.

命令的属性

该文章详细介绍了差异

行动:

UI和处理总是并列.你无法互相分离

虽然可以将动作贡献给工作台的不同部分(弹出菜单/工具栏),但它们都是不同的扩展点,因此您最终会在多个位置复制XML.最糟糕的是,并非所有扩展点都期望相同的配置.

在多个地方指定操作是一项维护噩梦.如果您必须更改操作的图标,则需要更改所有位置.

在plugin.xml中复制Actions的另一个问题是,将在内存中创建相同Actions的多个实例.

命令涉及更多扩展点,但是:

处理程序可以与命令分开声明.这为同一命令启用了多个处理程序声明.

评估所有处理程序的activeWhen,并选择对于最具体条件返回true的处理程序.所有这些事情都没有在内存中加载你的处理程序.即使没有加载你的插件!

定义参数就是返回显示名称和id的映射.名称将显示在键绑定页面中,当按下键序列时,id将用于调用命令.

定义一个IExecutionListener,它只是命令执行的观察者,因此它既不能否决它也不能对事件进行任何更改



2> Mario Ortegó..:

只是添加到VonC的优秀答案,如果您的应用程序相对较小,命令可能有点过分.它们设置起来相对困难,当您有多个视角,编辑器和视图时,它们会发挥最大作用.

对于简单的事情,我会采取行动.


同意(+1).但我总是在某种程度上发现Command"清洁";)
特别是因为应用程序趋于增长....我开始使用操作,但现在我正在使用命令,因为键绑定
我不认为,从动作开始是一个好主意,正如MarioOrtegón所说,应用程序往往会增长......而将动作迁移到命令可能会非常痛苦. - 但是,操作更容易设置.
推荐阅读
wangtao
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有