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。

20170507-101

在Project Name处填写插件名称为com.example.e4.rcp.todo,然后点击Next按钮。

20170507-102

在下一个向导页面中进行如下设置:在提示“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”选项的勾选。

20170507-103

点击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。

20170507-104

输入工程名称,点击Finish。

20170507-105

13.2.2 创建产品配置文件

在创建好的工程好点击鼠标右键,选择菜单File->New->Others…->Plug-in Development->Product Configuration。

20170507-106

在com.example.e4.rcp.todo.product文件夹下创建一个名为todo.product的产品配置文件。

20170507-107

点击Finish按钮。将会创建并在编辑器中打开该文件。

点击产品编辑器Overvidw选项卡上的New…按钮。

20170507-108

在Product Name处输入to-do,在Defining Plug-in处填写你的插件,在Product ID处填写product,在Application下拉列表处选择org.eclipse.e4.ui.workbench.swt.E4Application。

20170507-109

13.2.3 配置启动级别

在产品编辑器中切换到Configuration选项卡,点击Add Recommended…按钮。这些设置是使用Maven/Tycho构建系统的样例,因此配置这些是一个很好的实践。

20170507-110

13.2.4 创建一个feature工程

通过菜单File->New->Other…->Plug-in Development->Feature Project来创建一个新的feature工程,命名为com.example.e4.rcp.todo.feature。

你可以在第一个向导页就点击Finish按钮。

20170507-111

然后选择feature.xml文件的编辑器中选择Included Plug-ins选项卡。点击Add…按钮来将com.example.e4.rcp.todo插件引入本feature。

20170507-112

确保是在Included Plug-ins选项卡中添加插件,不要在Dependencies选项卡中。

13.2.5 将feature作为内容加入到产品中

打开todo.product产品文件,修改产品配置文件为使用feature。

此操作需要在产品编辑器的Overview选项卡中选择features选项。

20170507-113

选择Contents选项卡,使用Add…按钮添加如下features。

· example.e4.rcp.todo.feature

· eclipse.e4.rcp

· eclipse.emf.ecore

· eclipse.emf.common

20170507-114

如果你不能添加列表中的features到你的产品中,请确定你已将产品修改为基于features。

13.2.6 移除产品中features的版本依赖

为了避免features的不同版本导致的问题,你可以从产品中删除版本号。你可以通过点击产品配置编辑器里的Contents选项卡中的Properties…按钮来完成该操作。

20170507-115

20170507-116

移除所有features的版本依赖,操作结果看起来跟下面的截图类似。

20170507-117

13.2.7 创建应用程序模型

现在在com.example.e4.rcp.todo插件中创建一个应用程序模型文件。选择File->New->Other->Eclipse 4->Model->New Application Model来打开向导对话框。

20170507-118

输入你的com.example.e4.rcp.todo插件作为容器,并使用向导所建议的文件名。

20170507-119

点击Finish按钮,将会在com.example.e4.rcp.todo插件中新建一个Application.e4xmi文件并打开之。

13.2.8 给应用程序模型增加一个窗口

给应用程序模型添加一个窗口,因此你就会有一个可视化的组件。

在Windows and Dialogs节点上单击右键,像下面的截图中一样选择Trimmed Window选项。

20170507-120

根据下面的截图输入一个以taskmanager为后缀的ID,窗口的位置、大小和一个Label。

20170507-121

13.2.9 确保在启动时删除持久化的用户界面状态

如果你启动和关闭应用程序,应用程序的最后状态会被框架持久化,并在下次启动此应用程序时恢复。这在开发期间是不期望的,因为应当使用来自应用模型文件的最新状态。为确保始终使用应用程序模型的最新版本,请将-clearPersistedState参数添加到产品配置文件中。

以下屏幕截图显示了产品配置文件中的此设置。

20170507-122

确保您使用了 – 符号,并且参数输入正确。 该参数必须为:-clearPersistedState

13.2.10 启动程序

打开产品文件并选择Overview选项卡。 点击Testing部分中的“Launch an Eclipse application”超链接。

20170507-123

确认你的应用程序正常启动了。 你应该看到一个空的窗口,可以对它进行移动、调整大小、最小化、最大化和关闭操作。

13.3 定义UI模型

在本部分练习中,您将创建基本的应用程序用户界面。 在本练习结束时,您的用户界面应类似于以下屏幕截图。

20170507-124

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元素。

20170507-125

将其Orientation属性更改为Horizontal,并在ID字段中输入com.example.e4.rcp.todo.partsashcontainer.main。

20170507-126

添加一个Part Stack,作为你的Part Sash 容器的第一个子元素。

重新选择part sash 父容器,然后再添加一个Part Sash Container元素,给这个容器元素再添加两个Stack。

修改完毕以后,你的程序模型看起来应该与下图类似。

20170507-127

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的详细数据。

20170507-128

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 检查

你的操作结果应该与下面的截图类似。

20170507-129

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类。

13.5.2关联你的Part和Java类

打开Application.e4xmi文件并将Java类与相应的Part模型元素关联起来。你通过Part模型元素的Class URI 属性来完成此操作。

Eclipse4模型编辑器允许你通过Find…按钮来搜索已存在的类。Contribution Classes的初始列表是空的,在Class Name字段处输入内容就会看到相关结果。

20170507-130

下面的表格列出了哪些元素需要被关联起来。

表4 Java类与Part 模型元素的映射

类名 Part ID后缀
TodoOverviewPart *.todooverview
TodoDetailsPart *.tododetails
PlaygroundPart *.playground

下面的截图展示了Overview Part的结果。

20170507-131

13.5.3 校验

启动你的应用程序。它应该会启动,但在UI上你将看不出任何区别。

为了验证Eclipse运行时已经创建了若干模型对象,可以为其中的某个类创建一个无参构造方法,并在其中加入一句System.out.println()语句。以此来验证在程序启动时该构造方法是否被调用了。

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