`
卒子99
  • 浏览: 75426 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

RCP应用程序开发系列(3)--入门程序代码分析

阅读更多

前面介绍了一些文字性的东西,现在还是来看看代码,这样才感觉踏实

1. Application

Application的作用就是应用程序或产品(product)的入口,它和Java系统中,类定义的main()方法作用一样. 当Runtime启动的时候,应用程序开始运行,应用程序退出的时候,Eclipse关闭.

PDE向导使用 Hello RCP 模板产生了edu.swust.cs.soapfirewall.Application 类,如下。 Applications必须实现 IPlatformRunnable接口,这个接口定义了一个 run()方法,可以把这个方法想像成 main() 方法.

java 代码
  1. public class Application implements IPlatformRunnable {   
  2.   public Object run(Object args) throws Exception {   
  3.     Display display = PlatformUI.createDisplay();   
  4.     try {   
  5.       int returnCode = PlatformUI.createAndRunWorkbench(   
  6.           display, new ApplicationWorkbenchAdvisor());   
  7.       if (returnCode == PlatformUI.RETURN_RESTART) {   
  8.         return IPlatformRunnable.EXIT_RESTART;   
  9.       return IPlatformRunnable.EXIT_OK;   
  10.     } finally {   
  11.       display.dispose();   
  12.     }   
  13.   }   
  14. }  

关键的代码就是创建了一个 Display 对象,并调用PlatformUI.createAnd RunWorkbench(Display, WorkbenchWindowAdvisor)方法启动了一个Eclipse工作台 .它会打开一个窗口,并一直循环下去,止到有事件触发退出应用程序.在returning前,必须dispose创建的Display,因为SWT都是使用的本地的API,所以必须释放系统分配的资源,MyEclipse用起来会,系统会越用越慢,估计就是这个原因.

application 类必须和 Eclipse Runtime的 applications扩展点建立联系起来,这就是前面所说的基于部署的扩展。这样才使得 Runtime知道要运行哪一个应用程序。在RCP中,许多组件都是通过这种联系建立起来,你下面的透视图和视图,都必须通过基于部署的扩展来实现。

2. WorkbenchAdvisor

在上面application的代码中,Application类会实例化一个WorkbenchAdvisor 对象,并传递给 PlatformUI.createAndRunWorkbench()方法.

像它的名字一样, WorkbenchAdvisor 告诉工作台怎样显示,显示什么等信息。在RCP应用程序中,很多地方用这种模板模式来构建UI组件。WorkbenchAdvisor做了两件事:

  • 初化默认显示的透视图.

  • 使用 WorkbenchWindowAdvisor.

 

java 代码
  1. public class ApplicationWorkbenchAdvisor extends WorkbenchAdvisor {   
  2.   private static final String PERSPECTIVE_ID =   
  3.       "edu.swust.cs.soapfirewall.perspective";   
  4.   
  5.   public WorkbenchWindowAdvisor createWorkbenchWindowAdvisor(   
  6.       IWorkbenchWindowConfigurer configurer) {   
  7.     return new ApplicationWorkbenchWindowAdvisor(configurer);   
  8.   }   
  9.   public String getInitialWindowPerspectiveId() {   
  10.     return PERSPECTIVE_ID;   
  11.   }   
  12. }   
  13.   


3. Perspective

初始透视图是通过扩展标识定义的. 透视图类必须实现IPerspectiveFactory 接口,并在createInitial Layout(IPageLayout)方法添加实际的布局代码.现在这个代码空的,将在后面补充.

java 代码
  1. public class Perspective implements IPerspectiveFactory {   
  2.   public void createInitialLayout(IPageLayout layout) {   
  3.   }   
  4. }  


4.2.4. WorkbenchWindowAdvisor

在应用程序中,每一个窗口都有一个 WorkbenchWindowAdvisor ,它的作用是也是告诉窗口如何渲染.在 Window advisors根据窗口的生命周期定义了多个切入点函数,如preWindowOpen()窗口打开前postWindowCreate()创建窗口结后等,可以在不同的方法创建窗口的内容,了解窗口的生命周期是很有必要的,可以让你规划后,在何时才能创建相应的对象,有效的避免窗口中的组件还没有被创建,就已经在使用了.

在 ApplicationWorkbenchWindowAdvisor定制了soapfirewall窗口.在preWindowOpen() 方法中,设置了初始窗口的大小,容器表题栏 ,状态栏和工具栏.

java 代码
  1. public class ApplicationWorkbenchWindowAdvisor extends  
  2.     WorkbenchWindowAdvisor {   
  3.   
  4.   public ApplicationWorkbenchWindowAdvisor(   
  5.       IWorkbenchWindowConfigurer configurer) {   
  6.     super(configurer);   
  7.   }   
  8.   
  9.   public ActionBarAdvisor createActionBarAdvisor(   
  10.       IActionBarConfigurer configurer) {   
  11.     return new ApplicationActionBarAdvisor(configurer);   
  12.   }   
  13.   
  14.   public void preWindowOpen() {   
  15.     IWorkbenchWindowConfigurer configurer = getWindowConfigurer();   
  16.     configurer.setInitialSize(new Point(250350));   
  17.     configurer.setShowCoolBar(false);   
  18.     configurer.setShowStatusLine(false);   
  19.     configurer.setTitle("soap防火墙");   
  20.   }   
  21. }  

5. ActionBarAdvisor

ActionBarAdvisors 创建了窗口需要的actions(动作),并且定义了它们显示的位置.createActionBarAdvisor() 里会创建action.在实际的开发中,应该将你窗口所用到的所有action都在这个方法中实例化.

org.eclipsercp.hyperbola/ApplicationActionBarAdvisor
public class ApplicationActionBarAdvisor extends ActionBarAdvisor {
  public ApplicationActionBarAdvisor(IActionBarConfigurer configurer) {
    super(configurer);
  }

  protected void makeActions(IWorkbenchWindow window) {
  }
  protected void fillMenuBar(IMenuManager menuBar) {
  }
}

 6. 应用程序启动过程

对于刚开发RCP应用的来说,这个可以说是最痛的问题,经常会遇到抛出空指针的问题,所以了解应用程序的过程是非常有必要。下面的应用程序启动序列图很好的表示了这个过程

  • 描述: 应用程序启动序列图
  • 大小: 48.1 KB
分享到:
评论

相关推荐

    Eclipse RCP Plug-in开发自学教程(Eclipse3.6)

    - **程序VS产品**:区分程序与产品的概念,产品是RCP应用程序的打包形式,包含特定的配置和依赖。 - **维护LAUNCH配置**:学习如何管理和修改程序的启动配置。 - **可能的APPLICATION ID 错误**:解释应用程序ID...

    实现 RCP 应用程序的步骤

    本文将详细阐述实现RCP应用程序的基本步骤,同时参考《Eclipse插件RCP中文入门教程.pdf》中的内容,帮助你更好地理解和掌握RCP开发。 1. **安装Eclipse IDE for RCP and RAP Developers** 开始RCP开发前,首先需要...

    RCP开发入门-PDF.7z

    这种模块化设计使得应用程序能够灵活扩展,同时保持代码的高内聚和低耦合。在RCP应用中,工作台(Workbench)作为整体架构的中心,负责管理窗口、视图、编辑器等元素。 书中的内容可能涵盖了以下知识点: 1. **...

    RCP程序设计教程打包

    - **插件开发环境(PDE)**:Eclipse内置的工具集,用于开发、调试和管理RCP应用程序和插件。 - **菜单和工具栏**:通过命令模型(Command Framework)添加自定义菜单项和工具栏按钮,实现用户界面操作。 3. **...

    rcp入门里面包含英文和中文两个版本的

    1. **模块化**:RCP应用程序由一系列独立的插件组成,每个插件负责特定的功能,这使得代码组织清晰,易于维护和扩展。 2. **可定制性**:通过插件系统,用户可以根据需求自定义工作台布局,添加或移除功能。 3. **...

    我的第一个RCP程序

    通常,这样的入门教程会涵盖如何设置开发环境,创建一个新的RCP项目,理解RCP的基本架构,以及如何编写和运行一个简单的RCP应用。 【标签】"源码"和"工具"表明了这篇内容可能包含了实际的代码示例以及可能使用的...

    Eclipse+RCP.zip

    - 这可能是针对初学者的基础教程,涵盖了RCP的基本概念和术语,逐步指导读者进行简单的RCP应用开发。 - 可能会讲解如何配置开发环境,如安装Eclipse IDE,安装RCP插件,以及如何使用插件开发工具(PDE)。 通过这...

    eclipse RCP入门示例介绍

    ### Eclipse RCP 入门示例介绍 #### 一、Eclipse 概述 Eclipse 是一款由 IBM 开发并贡献给开源社区的集成开发环境...RCP 的引入不仅简化了 Java 桌面应用程序的开发过程,也为开发者提供了更多创新的可能性。

    RCP开发入门资料(手把手教学)

    RCP,全称为Rich Client Platform,是Eclipse项目的一个核心组成部分,它提供了一个框架和一组服务,用于构建功能丰富的桌面...通过本套资料的学习,你将能够熟练地构建自己的RCP应用程序,实现功能丰富的桌面应用。

    Rcp一个简单的入门教程

    2. **基本结构**:RCP应用程序基于工作台(Workbench)模型,包括窗口(Window)、透视图(Perspective)、视图(View)和编辑器(Editor)。理解这些基本元素的职责和交互方式是入门的关键。 3. **插件开发**:RCP...

    RCP程序设计.pdf

    13. **部署和发布**:最后,了解如何打包、部署和发布RCP应用程序也非常重要。这涉及到理解产品配置、更新站点和打包策略。 通过深入学习和实践这些知识点,初学者可以逐步掌握RCP程序设计,并能开发出高效、可扩展...

    Eclipse 4 RCP - Tutorial.pdf

    - **创建产品配置**:解释了如何为现有的插件项目创建产品配置文件,以便将其转换成一个完整的Eclipse RCP应用程序。 - **创建特征项目**:指导如何为该应用程序创建特征项目。 - **在产品配置中输入特征依赖项**:...

    Eclipse RCP 插件开发指南

    Eclipse RCP(Rich Client Platform)插件开发是构建基于Eclipse框架的应用程序的核心技术之一。本指南旨在帮助开发者从零开始掌握Eclipse RCP插件开发的基础知识及实战技巧。 ##### Introduction Eclipse RCP 是...

    RCP系统开发

    - **主界面透视图和视图**:透视图是RCP应用程序的主要布局,包含多个视图,用于展示数据或执行特定功能。 - **系统托盘和定时提示**:系统托盘图标和定时气泡提示可以增强应用的用户体验,提醒用户有关信息或操作。...

    一个简单的RCP开发例子

    3. **定义产品配置**:产品配置定义了RCP应用的基本结构,包括主窗口、启动类等。在"Plug-ins"视图中,右键点击项目,选择"New" -> "Product Configuration"。 4. **添加视图和编辑器**:RCP应用由多个视图(View)...

    Eclipse RCP入门教程

    《Eclipse RCP中文入门教程》很可能会涵盖上述概念的详细解释,以及如何创建一个基本的RCP应用的步骤。阅读器下载.htm可能提供了下载Eclipse RCP开发环境的链接,而E书说明.txt则可能是对教程的简单介绍或使用指南。...

    rcp入门程序

    Eclipse RCP(Rich Client Platform),作为Java桌面应用程序开发的一种先进方法,近年来获得了广泛的关注与应用。本文将从RCP的基础入手,深入探讨其核心概念和技术要点,旨在为初学者提供一个清晰的入门指南。 **...

    RCP编程入门(doc版)

    RCP,全称Rich Client Platform,是Eclipse框架提供的一种用于构建桌面应用程序的开发平台。它允许开发者基于Eclipse的核心技术构建功能丰富、可扩展且具有现代用户界面的客户端应用程序。本文档将引导你逐步了解RCP...

    一个简单的RCP入门教程

    RCP允许开发者利用Eclipse的强大功能来创建功能丰富的、自定义的、独立的应用程序,而不局限于Eclipse集成开发环境(IDE)内部。在本教程中,我们将深入探讨如何使用RCP进行开发,通过一个简单的实例来开启你的RCP之旅...

    Eclipse RCP.pdf清晰版

    通过以上介绍,我们可以看到Eclipse RCP是一个非常强大且灵活的框架,它不仅能够加速桌面应用程序的开发,还能让开发者专注于业务逻辑而不是繁琐的界面设计。对于希望利用Eclipse平台构建复杂应用的开发者来说,掌握...

Global site tag (gtag.js) - Google Analytics