Eclipse RCP教程 – 20 – 练习: 增加菜单

在本练习中你将会为应用程序创建Command和Handler。然后你将使用这些Command来创建菜单项。

20.1. 创建Command模型元素

打开你的com.example.e4.rcp.todo 插件的Application.e4xmi 文件并且选择Commands 项。如下图的高亮显示部分所示:

20170530_003

通过 Add…​ 按钮你可以创建新的Command。Name和ID是非常重要的信息域。创建下面这些Command:

9.Command清单
ID Name
org.eclipse.ui.file.saveAll Save
org.eclipse.ui.file.exit Exit
com.example.e4.rcp.todo.command.new New Todo
com.example.e4.rcp.todo.command.remove Remove Todo
com.example.e4.rcp.todo.command.test For testing

20.2. 创建Handler类

为你的Handler类创建com.example.e4.rcp.todo.handlers包。

所有的Handler类都实现一个带有 @Execute注解的 execute()方法。

 

根据上面的代码模板实现如下类:

● SaveAllHandler

● ExitHandler

● NewTodoHandler

● RemoveTodoHandler

● TestHandler

20.3. 创建Handler 模型元素

在你的Application Model中选择应用程序范围(application-scoped)的Handler并且为你的Command创建下表中所示的Handler。定义Handler时其ID、Command、Class都使用了有关联的信息。

使用com.example.e4.rcp.todo.handler作为所有的Handler的ID前缀

10. Handler清单
Handler ID Command Class
.saveall Save SaveAllHandler
.exit Exit ExitHandler
.new New Todo NewTodoHandler
.remove Remove Todo RemoveTodoHandler
.test For testing TestHandler

Application Model编辑器展示了Command的Name和ID。Class URL写在bundleclass://的后面,编辑表格中仅定义了类名以便增强表格的可读性。例如,定义Save Handler的界面如下图所示:

bundleclass://com.example.e4.rcp.todo/com.example.e4.rcp.todo.handlers.SaveAllHandler

20170530_004

20.4. 增加一个菜单

在你的Application.e4xmi 文件中选择模型中的TrimmedWindow 项并且勾选Main Menu属性。

20170530_005

将 org.eclipse.ui.main.menu 设置为你的主菜单ID。

 20170530_008 确保主菜单ID的正确性。你会在后面通过其它插件的另外一个菜单项用到它。

增加两个菜单,在Label属性中设置一个名为“File”,另外一个名为“Edit”。

将File菜单的ID设置为org.eclipse.ui.file.menu

将Edit菜单的ID设置为com.example.e4.rcp.todo.menu.edit

20170530_006

为File菜单增加一个 Handled MenuItem 模型元素。该菜单项应该通过Command属性指向Save Command。

20170530_007

在Save菜单项的后面增加一个Separator ,在它的后面增加一个Exit Command项。

在Edit菜单中增加其它Command。

20.5. 为exit实现一个Handler类

为了测试你的Handler能正常工作,修改你的ExitHandler 类,这样一旦该Handler被选中则会关闭你的应用程序。

20.6. 确认

确认你的Save Handler在你选择Save菜单项时被调用了。同时检查你可以通过Exit菜单项退出应用程序。

20.7.可能的问题: 在MacOS上的Exit菜单

如果你的Exit菜单使用了 org.eclipse.ui.file.exit作为ID,则在MacOS上Eclipse框架会将菜单项映射到其默认的菜单位置。如果你在定义它的地方找不到exit菜单了,则检查默认位置。

打赏一下
支付宝
微信
除非注明,博客文章均为原创,转载请标明文章地址
本文地址: http://www.javafxchina.net/blog/2017/05/eclipse-rcp-20/
百度已收录