实现 RCP 应用程序的步骤

在介绍在 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

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Eclipse RCP(Rich Client Platform)是一个开放源代码的框架,用于构建基于Java的客户端应用程序。在开始打包Eclipse RCP客户端之前,我们首先需要了解一些基本概念和步骤。 首先,为了打包一个Eclipse RCP客户端,我们需要使用Eclipse IDE作为开发环境。我们可以使用Eclipse内置的插件和工具来构建、调试和打包RCP应用程序。 在开始打包之前,我们需要确保我们的RCP应用程序已经调试和测试通过。这意味着我们需要确保应用程序运行正常,不会出现任何错误或异常。 接下来,我们可以使用Eclipse IDE的导出功能来打包RCP应用程序。在Eclipse菜单中选择“文件(File)”>“导出(Export)”。然后选择“插件开发(Plug-in Development)”>“Eclipse产品导出器(Eclipse Product Exporter)”。 在导出对话框中,我们需要选择我们要导出的RCP应用程序。在“产品定义(Product Definition)”字段中,选择我们的RCP产品定义文件。然后,选择一个目标文件夹来存储导出的应用程序。 在导出过程中,我们可以选择一些配置选项来配置我们的导出。例如,我们可以选择是否要包含所需的插件、库文件和配置文件,以及是否要创建一个自定义的启动器。 完成导出后,我们将得到一个包含我们的RCP应用程序的文件夹或归档文件。我们可以将这个文件夹或归档文件分发给其他用户,并让他们通过简单地运行启动脚本来启动我们的RCP应用程序。 总之,打包Eclipse RCP客户端需要使用Eclipse IDE的导出功能,并配置一些选项来定制我们的导出。通过这个过程,我们可以生成一个包含我们的RCP应用程序的文件夹或归档文件,并将其分发给其他用户。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值