在介绍在 Eclipse 内部开发 RCP 应用程序的细节之前,我们来回顾一下实现这种类型项目的一般性步骤。
确定扩展点。
定义插件清单。
实现扩展。
定义 WorkbenchAdvisor 类。
定义 Application 类。
导出应用程序。
本节讨论了如何访问插件开发环境,同时还介绍了插件清单。
从您的工作站上启动 Eclipse 3.0。
从菜单栏选择 Window > Open Perspective > Other
从透视图列表选择 Plug-in Development,然后点击 OK
创建项目
从菜单栏选择 File > New > Plug-in Project ,以显示 New Plug-in Project 向导
在 Project name 字段内键入 Google
保存该页的默认值并点击 Next ,继续查看插件内容页面
在 Class Name 字段中键入 com.ibm.developerworks.google.GooglePlugin,然后点击 Next ,出现模板页
面
保存该模板页面的默认值,然后点击 Finish
plugin.xml 标签允许您观察编辑器生成的每个部分的 XML。例如,下面您将看到 New Plug-in Project 向导
最初生成的插件清单的内容。
id="Google"
name="Google Plug-in"
version="1.0.0"
provider-name=""
class="com.ibm.developerworks.google.GooglePlugin">
要创建基本的 RCP 应用程序,则需要向清单中添加一些额外的内容。通过使用插件清单编辑器的 plugin.xml
标签,在编辑器内部修改 XML,从而反映下列变化:
1
2
3 4 id="com.ibm.developerworks.google"
5 name="Google Plug-in"
6 version="1.0.0"
7 provider-name=""
8 class="com.ibm.developerworks.google.GooglePlugin">
9
10
11
12
13
14
15
16
17
18
19
20
21 22 point="org.eclipse.core.runtime.applications">
23
24
25
26
27
28
29 30 id="com.ibm.developerworks.google.GooglePerspective"
31 name="Google"
32 class="com.ibm.developerworks.google.GooglePerspective"/>
33
34
35
从 元素开始,第 3 至 8 行定义了插件清单的主体。这个基础标签包括该插件的所有扩展、扩展点
、依存关系和运行时约束。而且, 标签具有下列 5 个属性:
name —— 该属性定义了插件的一般名称。
id —— 该属性为插件定义了一个惟一标识符。为了减少任何命名冲突,您应该从插件作者的 Internet 域名
导出该属性。在该实例中,实例的 id 已经被改为 com.ibm.developerworks.google。该实践与其他的 Java
命名约定是一致的,例如类的包装。
version —— 该属性以 major.minor.service 的格式定义了插件的版本。
provider-name —— 该属性定义了插件的作者。
class —— 该属性定义了插件类的名称。尽管定义了插件类,但 RCP 应用程序在执行期间并不使用该类。
第 10 至 14 行定义了插件清单的运行时部分。与 Java 应用程序中类路径的概念类似,这部分定义了在执行
期间所必需的所有本地 Java 库。可以通过使用 元素将每一个 Java 库列在 元素中。
该 library 元素可以包括一系列嵌套的 元素。每个 export 元素都为该特定库定义了导出掩码。
第 16 至 19 行包含一个 元素,该元素定义了对其他插件的所有依存关系。可以通过使用单个
元素逐条列举每个插件。
第 21 至 37 行定义了 RCP 应用程序将使用的两个 元素。下面一组讨论回顾了扩展和扩展点的
基本概念。 元素具有下列三个属性:
point —— 该属性定义了对正在进行配置的扩展点的引用。
id —— 该可选属性为扩展点配置实例定义了一个标识符。
name —— 该可选属性为扩展定义了一个一般名称
理解扩展 第 7 页(共7 页)
正如前面在 Eclipse 插件体系结构 部分提到的,Eclipse 平台使用了一个相对较小的运行时核心和一个精致
的插件体系结构,因此,它是高度可扩展的。可以通过使用插件为运行时核心添加新的功能。每个插件都可以
包含任何数目的扩展,而且可以使用扩展点对它们进行集成。同样,插件也可以定义自己的扩展点,其他开发
人员可以在自己的插件或者 RCP 应用程序中使用这些扩展点。
检查前面给出的插件清单的两个 元素。
1 ...
2 3 point="org.eclipse.core.runtime.applications">
4
5
6
7
8
9
10 11 id="com.ibm.developerworks.google.GooglePerspective"
12 name="Google"
13 class="com.ibm.developerworks.google.GooglePerspective"/>
14
15 ...
第 2 至 7 行通过 org.eclipse.core.runtime.applications 扩展点定义了第一个扩展。 而该扩展为 RCP 应
用程序声明了一个入口点。在该扩展元素内部,定义了一个 元素。在标签内部有一个
元素。而 元素又包括一个类名称,RCP 应用程序启动时会执行该类。第二个扩展点是在第 10 至 17 行
之间定义的。该扩展通过一个标题为 org.eclipse.ui.perspectives 的扩展点定义了一个透视图,并将该透视
图添加到普通的工作台上。下一节将详细探讨透视图的使用。
透视图概述
Eclipse 工作台内的透视图是用于所有已打开视图和编辑器的可视化容器。在前面的 使用插件开发环境 讨论
中,您打开了一个特定的称为 PDE 的透视图,以启动 Google 插件项目。该透视图是特别设计的,它向开发人
员提供了一个用来开发定制插件的工具集。透视图的最终用户可以看出,PDE 的创建者在工作台内工具的位置
和布局方面投入很多关注。当您在自己的 RCP 应用程序中创建透视图时,请考虑下列情况:
定义透视图的目的 —— 由于 Eclipse 工作台每次只显示一个透视图,您可能希望将应用程序的逻辑和功能区
域分组到统一的透视图中。该方法将最小化用户为完成特定任务而在不同透视图之间进行切换的需要。当您定
义每个透视图的目的时,还要牢记,不能在不同的透视图之间共享视图或者编辑器。应用程序将包含的透视图
的数目在很大程度上取决于该应用程序的大小和复杂性。对于我们的 Google 应用程序实例来说,最初只定义
了一个透视图。
定义透视图的行为 —— 取决于您的应用程序,透视图具有它自己的集合视图、编辑器和动作,可以设计它们
来执行不同的功能。例如,Eclipse 3.0 中的 Java 浏览透视图的设计目标是向您提供各种类型的信息,这些
信息是根据一个选择标准的集合进行过滤的。该透视图的行为通过使用一系列的连续视图为您过滤信息。相比
之下,Java 透视图是视图、编辑器和动作的集合,它向您提供编辑和编译 Java 代码的能力。该透视图的行为
是面向任务的,并且为最终用户提供一个工具集合,以便完成特定的目标。
在创建了插件项目之后,需要创建透视图,创建透视图是一个两阶段的过程。首先,修改插件的清单以包含新
的扩展,该扩展将使用 org.eclipse.ui.perspectives 扩展点。其次,使用来自新扩展点的属性创建一个透视
图类。根据关于扩展和扩展点的早期讨论,Google 应用程序的插件清单已经包括下列扩展:
...
id="com.ibm.developerworks.google.GooglePerspective"
name="Google"
class="com.ibm.developerworks.google.GooglePerspective"/>
...
元素具有下列属性:
id —— 该属性为透视图定义了一个惟一标识符。
name —— 该属性为透视图定义了一个名称,工作台窗口菜单栏将使用它来表示该透视图。
class —— 该属性包含实现 org.eclipse.ui.IPerspectiveFactory 接口的类的完全限定名
介绍 WorkbenchAdvisor
前面集中讨论了构成 RCP 应用程序的各种组件。接下来将集中讨论如何将所有的事物结合到一起。在构建 RCP
应用程序时,核心任务之一就是创建一个实现抽象类 org.eclipse.ui.application.WorkbenchAdvisor 的类。
WorkbenchAdvisor 类负责配置工作台,当执行 RCP 应用程序时,将显示该工作台。
WorkbenchAdvisor 类包含下列方法,从而为开发人员提供了对普通工作台的生命周期的访问:
initialize —— 应该在显示任何窗口之前首先调用该方法。
preStartup —— 其次执行的就是这个方法,但它的调用是在第一个窗口打开之前。在启动或者恢复期间暂时
禁用某些项时,该方法非常有用。
postStartup —— 对该方法的调用是执行的第三个操作,它的调用是在第一个窗口打开之后,可以用该方法重
新启用 preStartup 方法中临时禁用的项。
postRestore —— 该方法的调用是在已经根据以前保存的状态重新创建工作台及其窗口之后。
preShutdown ——该方法的调用是在事件循环已经终止,任何窗口尚未关闭之前。
postShutdown ——这是最后一个方法,它在事件循环终止之后被调用。
WorkbenchAdvisor 类包含下列方法,以便为开发人员提供对工作台窗口生命周期的访问:
preWindowOpen —— 在打开每个窗口时调用该方法。
fillActionBars —— 在调用 preWindowOpen 方法之后调用该方法,可以使用它配置窗口的动作栏。
postWindowRestore —— 在根据以前保存的状态重新创建窗口之后调用该方法。
postWindowOpen —— 在已经打开一个窗口之后调用该方法。可以使用该方法注册任何窗口监听器。
preWindowShellClose —— 在用户关闭窗口外壳时调用该方法。
WorkbenchAdvisor 类包含下列方法,以便为开发人员提供对工作台事件循环的访问。
eventLoopException —— 可以调用该方法处理事件循环崩溃的异常。
eventLoopIdle —— 在没有更多的事件需要处理的时候调用该方法。
要创建 WorkbenchAdvisor 类,需要在 PDE 内部完成下列步骤:
从菜单栏选择 File > New > Class,以显示 New Java Class 向导。
在 Name 字段内键入 GoogleWorkbenchAdvisor。
点击 Browse 按钮,以显示 Superclass Selection 对话框。
在 Choose a type 字段内键入 org.eclipse.ui.application.WorkbenchAdvisor,并点击 OK。
点击 Finish 按钮来创建新类。
该向导生成了下列源代码:
1 package com.ibm.developerworks.google;
2
3 import org.eclipse.ui.application.WorkbenchAdvisor;
4
5
6 public class GoogleWorkbenchAdvisor extends WorkbenchAdvisor {
7
8 public String getInitialWindowPerspectiveId() {
9
10 return null;
11 }
12 }
在试图于 PDE 内执行 RCP 应用程序之前,需要对该类进行小幅的修改。首先,您需要修改位于第 7 至 9 行
中的 getInitialWindowPerspectiveId 方法。该方法应该向新的工作台窗口返回初始透视图的标识符。由于在
前面的小节中已经将 Google 透视图定义为 com.ibm.developerworks.GooglePerspective,所以该字符串将被
返回给调用函数。其次,您需要添加一个称为 preWindowOpen 的方法。该方法允许您设置工作台的窗口标题和
尺寸。已修改的类如下所示:
package com.ibm.developerworks.google;
import org.eclipse.swt.graphics.Point;
import org.eclipse.ui.application.IWorkbenchWindowConfigurer;
import org.eclipse.ui.application.WorkbenchAdvisor;
public class GoogleWorkbenchAdvisor extends WorkbenchAdvisor {
public String getInitialWindowPerspectiveId() {
return "com.ibm.developerworks.google.GooglePerspective";
}
public void preWindowOpen(IWorkbenchWindowConfigurer configurer) {
super.preWindowOpen(configurer);
configurer.setTitle("Google");
configurer.setInitialSize(new Point(300, 300));
configurer.setShowMenuBar(false);
configurer.setShowStatusLine(false);
configurer.setShowCoolBar(false);
}}
创建 Application 类 第 3 页(共4 页)
在执行应用程序之前,需要创建一个 Application 类。与 Java 类中的 main 方法类似,该类是 RCP 应用程
序的主要入口点,正如在插件清单内的 org.eclipse.core.runtime.applications 扩展点之下定义的,它实现
了 org.eclipse.core.runtime.IPlatformRunnable 接口。
要创建 Application 类,需要在 PDE 内部完成下列步骤:
从菜单栏选择 File > New > Class,以显示 New Java Class 向导。
在 Name 字段内键入 GoogleApplication。
点击 Add 按钮,以显示 Implemented Interfaces Selection 对话框。
在 Choose Interfaces 字段内键入 org.eclipse.core.runtime.IPlatformRunnable,并点击 OK。
点击 Finish 按钮来创建新类。
向已生成的类添加下列 run 方法。对于大多数 RCP 应用程序而言,不需要定制该 run 方法,而且可以重新使
用该方法。
...
public Object run(Object args) throws Exception {
WorkbenchAdvisor workbenchAdvisor = new GoogleWorkbenchAdvisor();
Display display = PlatformUI.createDisplay();
int returnCode = PlatformUI.createAndRunWorkbench(display,
workbenchAdvisor);
if (returnCode == PlatformUI.RETURN_RESTART)
return IPlatformRunnable.EXIT_RESTART;
else
return IPlatformRunnable.EXIT_OK;
}
...
利用 PDE 启动应用程序 第 4 页(共4 页)
要在 PDE 内启动应用程序,需要完成下列步骤:
从菜单栏选择 Run > Run... ,以显示 Run 对话框,如图 9 所示。
在 Configurations 字段中突出显示 Run-time Workbench,并点击 New 按钮,以显示新的运行时工作台配置
,如图 10 所示:
在 Name 内段内键入 Google。
从 Application Name 字段中选择 Google.googleApplication。
点击 Plug-ins 标签,如图 11 所示:
选择单选按钮 Choose plug-ins and fragments to launch from the list。
点击 Deselect All 按钮。
选中 Workspace Plug-ins 选项。该操作包含了对 Google 项的选择。
点击 Add Required Plug-ins 按钮。该动作确定了哪些插件是执行应用程序所必需的。当装配单独的应用程序
时,将使用该列表。
点击 Apply 按钮。
点击 Run 按钮来执行该应用程序。如果正确进行了所有配置的话,应该显示一个标题为“Google”的窗口,如
图 12 所示。尽管该窗口并不执行任何功能,但是它的确向您阐述了如何用 PDE 创建一个普通工作台。
要完成单独的应用程序,您需要从 Eclipse IDE 目录复制一些文件到 Google
的导出目录。不幸的是,Eclipse 3.0 没有提供将所有需要的相关插件和 JAR 文件复制到导出目录的工具,因
此您需要完成下列步骤:
从 Eclipse 3.0 IDE 的根目录将 startup.jar 复制到 Google 应用程序导出目录的根目录中。
从 Eclipse 3.0 IDE 插件目录将下列目录复制到 Google 应用程序导出目录的插件目录中:
org.eclipse.core.expressions_3.0.0
org.eclipse.core.runtime_3.0.0
org.eclipse.help_3.0.0
org.eclipse.jface_3.0.0
org.eclipse.osgi_3.0.0
org.eclipse.swt.win32_3.0.0 (Windows only)
org.eclipse.swt.gtk_3.0.0 (Linux only)
org.eclipse.swt_3.0.0
org.eclipse.ui.workbench_3.0.0
org.eclipse.ui_3.0.0
org.eclipse.update.configurator_3.0.0
要测试应用程序,则需要创建一个启动脚本。您可以使用自己喜欢的文本编辑器创建一个名为
google.bat(Windows)或者 google.sh(Linux)的文件,该文件包含下列内容:
java -cp startup.jar org.eclipse.core.launcher.Main -application
com.ibm.developerworks.google.googleApplication
在完成该任务之后,您的导出目录应该具有下列结构:
- google.bat (Windows only)
- google.sh (Linux only)
- startup.jar
+ ----- plugins
+ ----- org.eclipse.core.expressions_3.0.0
+ ----- org.eclipse.core.runtime_3.0.0
+ ----- org.eclipse.help_3.0.0
+ ----- org.eclipse.jface_3.0.0
+ ----- org.eclipse.osgi.services_3.0.0
+ ----- org.eclipse.osgi.util_3.0.0
+ ----- org.eclipse.osgi_3.0.0
+ ----- org.eclipse.swt.win32_3.0.0 (Windows only)
+ ----- org.eclipse.swt.gtk_3.0.0 (Linux only)
+ ----- org.eclipse.swt_3.0.0
+ ----- org.eclipse.ui.workbench_3.0.0
+ ----- org.eclipse.ui_3.0.0
+ ----- org.eclipse.update.configurator_3.0.0
分享到:
相关推荐
### 开发您的第一个 Eclipse RCP 应用程序 #### 富客户端平台 (RCP) 概述 **Eclipse Rich Client Platform (RCP)** 是一个强大的框架,旨在利用 Eclipse 平台来构建非集成开发环境 (IDE) 类型的最终用户应用程序。...
【开发你的第一个Eclipse RCP应用程序】 Eclipse Rich Client Platform(RCP)是Eclipse框架的一个组成部分,专门用于构建复杂的桌面应用程序。RCP利用Eclipse的插件体系结构,允许开发者创建具有高度可定制和可...
在IT行业中,RCP(Rich Client Platform)是Eclipse框架提供的一种用于构建桌面应用程序的平台。它允许开发者基于已有的框架构建复杂、可扩展的应用,而无需从零开始编写所有基础架构。本篇文章将深入探讨如何在RCP...
HelloWorld 文件可能就是一个简单的插件示例,用于演示如何创建和运行一个基本的Eclipse RCP应用程序。 2. **工作台(Workbench)**:Eclipse RCP的核心是工作台,它是整个用户界面的管理者,负责管理窗口、视图、...
- **插件开发环境(PDE)**:Eclipse内置的工具集,用于开发、调试和管理RCP应用程序和插件。 - **菜单和工具栏**:通过命令模型(Command Framework)添加自定义菜单项和工具栏按钮,实现用户界面操作。 3. **...
【标题】"我的第一个RCP程序"涉及到的是Eclipse Rich Client Platform (RCP)的编程基础知识,这是一种用于构建桌面应用程序的框架。RCP是Eclipse IDE背后的强大技术,允许开发者创建功能丰富的、可扩展的应用程序。 ...
在开发Java RCP(Rich Client Platform)应用程序时,有时需要对默认的...通过以上步骤,我们可以对RCP应用程序的窗口属性进行深度定制,提供更符合用户需求的界面体验。记住,持续优化和改进是提升用户体验的关键。
在“Eclipse RCP应用系统开发方法与实战(第四章)”中,我们将深入探讨如何利用这个平台进行高效且灵活的应用程序开发。本章节主要关注的是实战经验与具体实现步骤,旨在帮助开发者掌握Eclipse RCP的核心概念和技术...
Eclipse Rich Client Platform (RCP) 是一个强大的框架,用于构建桌面应用程序。它基于Java,提供了丰富的用户界面组件和插件机制,使得开发者能够构建功能丰富的、可扩展的应用程序。"Eclipse RCP 应用系统开发方法...
综上所述,通过使用Equinox P2,开发者可以为RCP应用程序构建一套完整、可靠的更新系统。从配置仓库、创建更新脚本,到在应用程序中集成更新功能,每个步骤都需要精心设计和实施。提供的`org.eclipse.update.example...
6. 保存配置,通过产品配置文件启动RCP应用程序。 RCP程序的关键组件包括: 1. **Application类**:作为RCP应用的入口点,它负责初始化工作台并添加工作台顾问类,通常不需要对其进行太多修改。 2. **Advisor类**...
在“GefPractice-RCP”这个压缩包文件中,我们可能找到以下内容:源代码文件(.java),包含了实现RCP应用程序和图形编辑功能的具体类;配置文件(.plugin.xml, .product, .perspective, .layout等),定义了插件...
通过以上步骤,你可以在Eclipse RCP应用中成功实现一个基于适配器模式的自定义属性视图。这不仅可以提高代码的复用性,还能使你的应用程序更加灵活,适应不断变化的需求。在实际开发中,你可能还需要处理如错误处理...
RCP应用程序开发入门指南 RCP(Rich Client Platform)是一种基于Eclipse的插件架构,用于开发rich client应用程序。RCP提供了一个完善的企业应用解决方案,包括表现层、业务逻辑层、报表、权限、日志、国际化、...
创建第一个RCP应用程序涉及到以下步骤: - 定义应用程序的插件结构,包括插件的描述文件(plugin.xml)。 - 创建应用程序的主类,通常是扩展org.eclipse.ui.application的应用程序类。 - 启动应用程序,涉及编写启动...
- 修改应用程序标题,例如改为“我的RCP应用”。 3. **运行初步的RCP程序**: - 在项目上右键选择“Run As-Eclipse Application”即可预览初始界面。 - 此时的界面包含一个透视图和编辑器区域。 4. **创建可...
而“Eclipse RCP应用系统开发方法与实战”很可能是项目的主要代码库或者教程文档,涵盖了开发过程中的步骤和最佳实践。 开发Eclipse RCP应用不仅需要掌握Java编程,还需要熟悉Eclipse的插件开发环境(PDE)。在实践...
4. **集成JRE**:为了让Eclipse RCP应用程序在没有预装JRE的系统上运行,你需要包含一个JRE。在产品配置中,可以通过"Overview" -> "Runtime"选项卡来指定需要的Java版本。你可以选择捆绑一个特定版本的JRE,或者...