从Eclipse3.3开始,org.eclipse.ui.menus扩展改变了menu、toolbar以及popup的安放和显示方式。这些改进主要与以前的:
org.eclipse.ui.actionSets
org.eclipse.ui.editorActions
org.eclipse.ui.popupMenus
org.eclipse.ui.viewActions
等扩展相区别。
Eclipse提供了一种更加柔性和高效的创建menu、toolbar以及popup的方式。
- org.eclipse.ui.commands
一个任务的逻辑表达; - org.eclipse.ui.handlers
即对command的实现; - org.eclipse.ui.bindings
将command绑定到一个Key上(如将Ctrl+1绑定到一个command上); - org.eclipse.ui.contexts
绑定组织到一个上下文中; - org.eclipse.ui.commandImages
给command设置图标; - org.eclipse.ui.editor
Eclipse编辑器; - org.eclipse.ui.view
Eclipse视图 - org.eclipse.ui.menus
添加菜单/菜单项到主菜单、主工具栏,视图/编辑器的上下文菜单、工具栏等等。
Action与Command区别:
实际上ActionSet和Command框架的目标是相同的,都可以实现菜单、工具栏等扩展。但是二者也存在很大的区别:
- Action将UI的表达和实现代码都存储在Action中,虽然二者可以通过Action Delegate进行一定的分离,但是它们还是依赖于Action。选择事件传递到Action中,并且Action的enabled状态依赖于当前的选择。这种表现方式不是很优美。为了将Action放置到workbench 中,我们不得不使用这些扩展点: org.eclipse.ui.viewActions、 org.eclipse.ui.popupMenus或 org.eclipse.ui.editorActions。
- Command与此相比就要优美得多。Command实际上一些须执行代码的抽象表达, 这些代码的实际处理放在Handler中。当Workbench处于某种状态,Handler被执行。将Command放置到Workbench中实际上只需要用到org.eclipse.ui.menus一个扩展点。
具体可参考:http://wiki.eclipse.org/FAQ_What_is_the_difference_between_a_command_and_an_action%3F