Eclipse RCP教程 – 13 – 练习:创建Eclipse RCP程序
13. 练习:创建Eclipse RCP程序
13.1 创建Eclipse插件
在接下来的练习中,你将会创建一个标准的Eclipse插件。下一步会将该Eclipse插件转化为一个Eclipse RCP程序。
在下面的描述中将该“插件”称为“应用程序插件”,因为该插件将会包含主要的程序逻辑。
13.1.1 创建插件工程
在Eclipse中选择菜单File->New->Other…->Plug-in Development->Plug-in Project。
在Project Name处填写插件名称为com.example.e4.rcp.todo,然后点击Next按钮。
在下一个向导页面中进行如下设置:在提示“Would you like to create a rich client application?”处选择“No”选项。取消“This plug-in will make contributions to the UI”选项的勾选。取消“Generate an activator, a Java class that controls the plug-in’s life cycle”选项的勾选。
点击Finish按钮。如果你点击了Next按钮,该向导将会向你展示一个模板选择页面,你可以不进行选择并跳过该页面。
13.1.2 验证结果
打开工程并确定src文件夹下没有生成Java类。
在manifest编辑器中切换到Dependencies选项卡并确定没有任何条目。
13.2 从插件转为Eclipse4应用程序
在本章中你会将生成的插件转化为Eclipse RCP应用程序。
13.2.1 创建基于产品配置文件的工程
创建一个名为com.example.e4.rcp.todo.product的工程,依次选择菜单File->New->Others…->General->Project。
输入工程名称,点击Finish。
13.2.2 创建产品配置文件
在创建好的工程好点击鼠标右键,选择菜单File->New->Others…->Plug-in Development->Product Configuration。
在com.example.e4.rcp.todo.product文件夹下创建一个名为todo.product的产品配置文件。
点击Finish按钮。将会创建并在编辑器中打开该文件。
点击产品编辑器Overvidw选项卡上的New…按钮。
在Product Name处输入to-do,在Defining Plug-in处填写你的插件,在Product ID处填写product,在Application下拉列表处选择org.eclipse.e4.ui.workbench.swt.E4Application。
13.2.3 配置启动级别
在产品编辑器中切换到Configuration选项卡,点击Add Recommended…按钮。这些设置是使用Maven/Tycho构建系统的样例,因此配置这些是一个很好的实践。
13.2.4 创建一个feature工程
通过菜单File->New->Other…->Plug-in Development->Feature Project来创建一个新的feature工程,命名为com.example.e4.rcp.todo.feature。
你可以在第一个向导页就点击Finish按钮。
然后选择feature.xml文件的编辑器中选择Included Plug-ins选项卡。点击Add…按钮来将com.example.e4.rcp.todo插件引入本feature。
确保是在Included Plug-ins选项卡中添加插件,不要在Dependencies选项卡中。
13.2.5 将feature作为内容加入到产品中
打开todo.product产品文件,修改产品配置文件为使用feature。
此操作需要在产品编辑器的Overview选项卡中选择features选项。
选择Contents选项卡,使用Add…按钮添加如下features。
· example.e4.rcp.todo.feature
· eclipse.e4.rcp
· eclipse.emf.ecore
· eclipse.emf.common
如果你不能添加列表中的features到你的产品中,请确定你已将产品修改为基于features。
13.2.6 移除产品中features的版本依赖
为了避免features的不同版本导致的问题,你可以从产品中删除版本号。你可以通过点击产品配置编辑器里的Contents选项卡中的Properties…按钮来完成该操作。
移除所有features的版本依赖,操作结果看起来跟下面的截图类似。
13.2.7 创建应用程序模型
现在在com.example.e4.rcp.todo插件中创建一个应用程序模型文件。选择File->New->Other->Eclipse 4->Model->New Application Model来打开向导对话框。
输入你的com.example.e4.rcp.todo插件作为容器,并使用向导所建议的文件名。
点击Finish按钮,将会在com.example.e4.rcp.todo插件中新建一个Application.e4xmi文件并打开之。
13.2.8 给应用程序模型增加一个窗口
给应用程序模型添加一个窗口,因此你就会有一个可视化的组件。
在Windows and Dialogs节点上单击右键,像下面的截图中一样选择Trimmed Window选项。
根据下面的截图输入一个以taskmanager为后缀的ID,窗口的位置、大小和一个Label。
13.2.9 确保在启动时删除持久化的用户界面状态
如果你启动和关闭应用程序,应用程序的最后状态会被框架持久化,并在下次启动此应用程序时恢复。这在开发期间是不期望的,因为应当使用来自应用模型文件的最新状态。为确保始终使用应用程序模型的最新版本,请将-clearPersistedState参数添加到产品配置文件中。
以下屏幕截图显示了产品配置文件中的此设置。
确保您使用了 – 符号,并且参数输入正确。 该参数必须为:-clearPersistedState
13.2.10 启动程序
打开产品文件并选择Overview选项卡。 点击Testing部分中的“Launch an Eclipse application”超链接。
确认你的应用程序正常启动了。 你应该看到一个空的窗口,可以对它进行移动、调整大小、最小化、最大化和关闭操作。
13.3 定义UI模型
在本部分练习中,您将创建基本的应用程序用户界面。 在本练习结束时,您的用户界面应类似于以下屏幕截图。
13.3.1 打开Application.e4xmi 文件
在Eclipse 4 model editor中双击Application.e4xmi文件,或者从右键菜单中选择Open With->Eclipse 4 model editor菜单,打开Application.e4xmi file文件。
13.3.2 添加part sash和part stack容器
选择window下的Controls,添加一个Part Sash Container元素。
将其Orientation属性更改为Horizontal,并在ID字段中输入com.example.e4.rcp.todo.partsashcontainer.main。
添加一个Part Stack,作为你的Part Sash 容器的第一个子元素。
重新选择part sash 父容器,然后再添加一个Part Sash Container元素,给这个容器元素再添加两个Stack。
修改完毕以后,你的程序模型看起来应该与下图类似。
13.3.3 创建Part
给每个Stack添加一个Part。使用下面表格中的ID和Label。
先输入name,如果label为空,ID会随name调整。
表3 Parts的Label和ID
ID后缀
Label
com.example.e4.rcp.todo.part.todooverview
Overview
com.example.e4.rcp.todo.part.tododetails
Details
com.example.e4.rcp.todo.part.playground
Playground
你的应用程序模型的最终结构应该与下面的截图类似。该截图还显示了应用程序模型编辑器中的详细信息面板中Overview Part的详细数据。
13.3.4 检查UI
启动你的产品并检查UI是否按计划显示。如果有必要就重新调整模型元素。模型编辑器支持通过拖拽操作来进行重新布局。
请注意,即便到现在你还没有创建任何Java类,但你已经看到了结构。
13.4 引入依赖项
为了在你的插件代码中使用其它插件(它的API),你需要在MANIFEST.MF文件中进行声明。在本部分练习中,你将会学到处理API依赖。
13.4.1 添加插件依赖
在你的新插件的源代码中,将会使用到其它Eclipse插件中的API。Eclipse编程模型需要你在新插件中定义对这些插件或者包(package)的依赖。
为了叙述方便,下文将com.example.e4.rcp.todo插件简称为应用程序插件(application plug-in)。
打开应用程序插件的META-INF/MANIFEST.MF文件,选择Dependencies选项卡。使用Required Plug-ins部分的Add…按钮,将以下插件添加为依赖项。
· eclipse.core.runtime
· eclipse.swt
· eclipse.e4.core.di
· eclipse.e4.ui.workbench
· eclipse.e4.ui.di
· eclipse.e4.core.di.extensions
13.4.2 检查
你的操作结果应该与下面的截图类似。
13.5 关联Part与Java类
13.5.1创建一个新包和若干Java类
在应用程序插件中创建com.example.e4.rcp.todo.parts包。
在这个包中创建3个Java类,名为TodoOverviewPart、TodoDetailsPart和PalygroundPart。这些类都不需要继承任何类或者实现任何接口。
你也可以通过在模型编辑器中点击detail pane里的 Class URI 超链接来创建Java类。这样也会将创建的类与模型对象联系起来。如果你这样做了,那就可以跳过下面的“关联你的Part和Java类”步骤。
下面的代码显示了TodoDetailsPart类。
Java
package com.example.e4.rcp.todo.parts;
public class TodoDetailsPart {
}
1
2
3
4
5
packagecom.example.e4.rcp.todo.parts;
publicclassTodoDetailsPart{
}
13.5.2关联你的Part和Java类
打开Application.e4xmi文件并将Java类与相应的Part模型元素关联起来。你通过Part模型元素的Class URI 属性来完成此操作。
Eclipse4模型编辑器允许你通过Find…按钮来搜索已存在的类。Contribution Classes的初始列表是空的,在Class Name字段处输入内容就会看到相关结果。
下面的表格列出了哪些元素需要被关联起来。
表4 Java类与Part 模型元素的映射
类名
Part ID后缀
TodoOverviewPart
*.todooverview
TodoDetailsPart
*.tododetails
PlaygroundPart
*.playground
下面的截图展示了Overview Part的结果。
13.5.3 校验
启动你的应用程序。它应该会启动,但在UI上你将看不出任何区别。
为了验证Eclipse运行时已经创建了若干模型对象,可以为其中的某个类创建一个无参构造方法,并在其中加入一句System.out.println()语句。以此来验证在程序启动时该构造方法是否被调用了。
打赏一下
支付宝
微信