Eclipse RCP(1)—基本概念

本文介绍了Eclipse的结构体系,详细阐述了RCP框架的关键组件,如Display、Shell、Workbench、Advisor、View和Editor等,并概述了一些重要的抽象类。

1 Eclipse结构体系
2 RCP框架
3 一些需要知道的抽象类

---------------------------------------------------------------------------------------------

1 Eclipse结构体系

Eclipse的体系结构图如下:
 

Platform Runtime是整个架构的核心,其他部分实质上都属于插件范畴。Eclipse采用动态加载机制,即只有需要的才加载,这样可以降低启动时间,提高资源使用效率。

Workspace主要负责管理用户资源,如创建项目的管理、文件变更等,并通知其他插件关于资源的变更信息。

Workbench是Eclipse提供的用户界面,它使用SWT(标准窗口工具包)和JFace(建立在SWT之上的UI部件)构建。

Help允许以HTML文件形式添加文档,并提供了一个附加的导航结构以便用户使用帮助功能搜索相关信息。

Team负责提供版本控制和配置管理支持。它根据需要添加视图,以允许用户与所有使用的任何版本控制系统交互。大多数插件都不需要与Team交互,除非它们提供版本控制服务。

JDT提供了用于编辑、查看、编译、调试和运行Java代码的专门插件。PDE构建于Eclipse平台和JDT之上,提供了专门开发插件的工具。

2 RCP框架

RCP是一套基于SWT和JFace的图形界面引擎。RCP在本质上是Eclipse插件,它提供丰富的界面控件,使得基于 Java 开发桌面应用也变得容易了很多。

2.1 Display

应用程序一般只需要一个Display对象,该对象实际上是一个SWT对象,代表了底层图形系统的实现。Display的主要任务是事件处理,它负责从操作系统的事件队列中读取事件,传递给RCP的事件监听器以便完成具体的任务。需要注意的是,Display对象不代表应用程序窗口的任何可视控件,在应用程序主窗口打开之前,Display是不可获得的。应用程序主窗口打开之后,才可以通过一个被称作Shell的对象获得。Display对象的获得方法如下。
      Display display = new Display();
或者:
      Display display=Display.getCurrent();

2.2 Shell

每一个窗口都有一个Shell对象。Shell对象代表了与用户交互的窗口框架,并处理与窗口关联的诸如移动、改变大小等常见行为。Shell对象的获得方法:
     Display display=Display.getCurrent();
     Shell shell = new Shell(display); 
或者:
     Shell shell=Display.getCurrent().getActiveShell();

2.3  Workbench

Workbench是工作台,通俗地说就是代表用户界面的UI元素。工作台上有各种窗口、图标、按钮和控件,用户可以在工作台上做各种操作。获得工作台对象的方法:
    IWorkbench wb=PlatformUI.getWorkbench();
工作台对象有两个方法也许很有用:
    wb.restart(),关闭应用程序并立即重新启动。 
    wb.close(),正常关闭应用程序,等同于ActionFactory.QUIT_ACTION。

2.4 Advisor

Advisor是建议者,用户主界面宽度、高度、图标、菜单、工具栏、颜色、操作等等配置方案需要Advisor来提出“建议”。Eclipse提供了3种类型的Advisor:

1. WorkbenchAdvisor。
应用程序级别,Eclipse3.0开始引入的全新类。每一个应用程序只有一个 Workbench,WorkbenchAdvisor负责该工作台生命周期的管理,例如启动、关闭工作。WorkbenchAdvisor也负责该 Workbench的异常处理,并负责向Workbench提供一些重要参数,例如可以指定该Workbench的初始透视图。

2. WorkbenchWindowAdvisor。
窗口级别。每一个窗口都有一个WorkbenchWindow- Advisor 实例。WorkbenchWindowAdvisor 负责具体窗口生命周期的管理,例如状态栏、工具栏、菜单、窗口标题、窗口大小和各种控件等等,也可以处理窗口的各种事件例程。

3. ActionBarAdvisor。
窗口级别。每一个窗口都有一个ActionBarAdvisor实例。ActionBarAdvisor负责管理窗口的菜单栏、状态栏、工具栏的外观和行为。

2.5 View和Editor

在RCP中,用户主要通过视图View和编辑器Editor来用户交互。视图是可以浮动的工作窗口,负责显示数据在某个层面的状态信息。编辑器也是一种工作窗口,提供对数据进行各种操作的交互能力。

视图是扩展自ViewPart抽象类,编辑器是扩展自EditorPart抽象类。

2.6 Perspective

透视图Perspective是用来包含视图和编辑器的,RCP是通过透视图对窗口内容进行安排和布局的

3 一些需要知道的抽象类

3.1 IWorkbench

Workbench是Eclipse用户界面中最底层的对象,它建立在Display之上,包含1个或多个IWorkbenchWindow,用于向最终用户呈现信息。当你的workbench插件被激活的时候,eclipse平台将为之创建一个实例,在平台的整个生命周期中,只允许出现该workbench的唯一实例

3.2 IWorkbenchWindow

上面getActiveWorkbenchWindow()得到的就是IWorkbenchWindow。IWorkbench利用其包含的IWorkbenchWindow向终端用户展现信息。workbench window是workbench中最顶级的window。包括菜单栏、工具栏、状态栏以及一个用来显示IWorkbenchPage的主区域。每个IWorkbenchWindow包含0个或多个IWorkbenchPage,但是同一时刻只允许一个IWorkbenchPage被激活并向最终用户显示

3.3 IWorkbenchPage

IWorkbenchPage的功能就是组织一个或多个IWorkbenchPart(IEditorPart或IViewPart)显示在一个IWorkbenchWindow中,最终呈现给最终用户。IWorkbenchPage包含0个或多个IEditorPart或IViewPart,这些IEditorPart和IViewPart完全被包含在这个IWorkbenchPage并且不能与其它的IWorkbenchPage共享。IWorkbenchPage上定义的Layout和ActionSet就是我们常说的透视图——perspective了。

3.4 IPerspectiveFactory

透视图需要实现IperspeciveFactory接口。

3.5 WorkbenchPage

workbench中view和editor的集合。
    IWorkbenchPage.findView(viewName)可以得到IViewPart。 
    IWorkbenchPage.findEditor(IEditorInput)可以得到IEditorPart。

获取WorkbenchPage的方法: 
    ViewPart.getViewSite().getPage()。(getViewSite()得到的是IWorkbenchPartSite)
    getDefault().getWorkbench().getActiveWorkbenchWindow().getActivePage()。 
    PlatformUI.getWorkbench().getActiveWorkbenchWindow().getActivePage()。

3.6 IWorkbenchPart

WorkbenchPart是所有workbench parts的基类,如ViewPart和EditPart。不直接继承。
IWorkbenchPart就是上面提到的IEditorPart和IViewPart,它也只包含这两个子类型。

IViewPart常常被用于导航信息的层次结构,例如我们的workspace,或者用来打开一个编辑器,或者用来显示这个编辑器的某些属性

IEditorPart多被用来编辑或浏览一个文档或一个输入的对象,而这个输入的对象必须是一个IEditorInput,IEditorPart遵循的就是打开-保存-关闭的生命周期模型

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值