源:http://blog.eclipse-tips.com/2009/01/commands-part-1-actions-vs-commands.html
eclipse 有两种方式创建Workbench的菜单。Actions and Commands
Commands 虽然是最新新更新的、强大的,可是我还是喜欢用Actions ,就是因为我习惯了Actions的用法。
现在我们就开始研究一下Command framework。
我深入的研究了下Command framework,我发现这东西确实好,我决定写一系列这方面的文章。
假如有哪些写的不对的。望大家多多指教。
我们用Action 可以去创建 toolbar menu downmenu (popup)
我们可以在plugin.xml指定它们的一些细节,如 标签、提示、帮助、懒加载等。
用这种方式去实现的缺点在哪里呢?
1:ui与handler 总是系在一起,不可以彻底的分开。
2:不可以在不同的part中实现( toolbar menu downmenu (popup)),还得必须在plugin.xml写重复的xml。
3:假如说有一个action需要更改,要更新所有重复的action配置。
4:另外就是在plugin中重复的action定义,在启动初始化的时候会被加载多个实例在内存中。
让我们看看Command framework是如何消除以上问题的。
Commands 是通过org.eclipse.ui.commands 扩展点定义的。
一个典型的command定义如下:
<command
id="com.eclipse-tips.commands.someCommand"
name="Some Command">
</command>
现在我们定义了一个command,假如想在某个地方创建 toolbar、menu等,需要通过org.eclipse.ui.menus
扩展点来创建,代码如下:
<menuContribution
locationURI="toolbar:org.eclipse.ui.main.toolbar">
<toolbar
id="com.eclipse-tips.commands.toolbar1">
<command
commandId="com.eclipse-tips.commands.someCommand"
id="com.eclipse-tips.commands.someCommandInToolBar">
</command>
</toolbar>
</menuContribution>
现在我们已经在创建中创建了一个toolbar,菜单的执行代码在哪里呢?这时候需要用到org.eclipse.ui.handlers扩展点来实现。代码如下:
<handler
class="com.eclipse_tips.commads.SomeCommandHandler"
commandId="com.eclipse-tips.commands.someCommand">
</handler>
最后我们添加一个图标都command中,需要用org.eclipse.ui.commandImages扩展点来实现。
代码如下:
<image
commandId="com.eclipse-tips.commands.someCommand"
icon="icons/sample.gif">
</image>
现在让我们看看效果怎么样.
以前我们是通过一个扩展点搞定的东西。现在我们用了4个扩展点来实现。