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

RCP应用程序开发之二——核心类总结

    博客分类:
  • RCP
阅读更多
上次讲述了怎么新建一个RCP应用程序, 没有对其核心的类总结。今天晚上抽空简单的总结了一下,主要包括针对
application,Perspective,WorkbenchAdvisor,WorkbenchWindowAdvisor,ActionBarAdvisor的总结。
在eclipse3.0版本新建的rcp应用程序中有三个核心的类:
(1)Application:IPlatformRunnable的实现类,做为rcp应用程序的入口。重要的功能就是:在它的run的方法中创建了工作台:PlatformUI.createAndRunWorkbench(display,new ApplicationWorkbenchAdvisor())!我们可以通过这个工作台新建活动的窗体,为生成窗体主界面提供了保障,也是通过这个工作台,来新建我们活动的子窗体。
(2)IPerspectiveFactory的实现类Perspective,在前面讲到,Perspective是Eclipse工作台所有已打开的视图和编辑器的容器。每个工作台只有一个透视图,我们可将相关功能统一透视图中。视图和编辑器不可在不同的透视图之间共享。透视图具有它的编辑器,视图,可设计它们执行不同的功能呢个。一个系统中也可以由多个透视图,透视图的个数取决于应用程序的复杂程度。
(3)WorkbenchAdvisor的实现类,负责配置工作台,当执行rcp应用程序时,显示该工作台。可在这个类中配置窗体信息:如工作台窗体的菜单信息,工具栏等。并为开发人员提供针对rcp应用程序生命周期的访问!实际上,整个rcp应用程序的配置都在这个类中完成的。但在eclipse3.1以后的的版本中,这些WorkbenchAdvisor的中若干方法如preWindowOpen()等都为推荐为不用了。针对rcp应用程序的配置,以及针对rcp应用程序生命周期的访问都放在WorkbenchWindowAdvisor中了。
再eclipse3.1以后的版本中,在自定义生成rcp应用程序时,有五个主要的类:
(1)Application:IPlatformRunnable的实现类,做为rcp应用程序的入口。
(2)也有个IPerspectiveFactory的实现类Perspective。
(3)WorkbenchAdvisor的实现类ApplicationWorkbenchAdvisor,在Application启动时,这个类作为参数来传递给启动方法。因此,工作台窗体是基于这个类才创建完成的。在ApplicationWorkbenchAdivor中,与3.1以前的版本不同的是,需要实现的方法不同了,以前需要实现preWindowOpen()、fillActionBars()等方法,而在3.1以后,这个类需要实现两种比较重要的方法:createWorkbenchWindowAdvisor()、getInitialWindowPerspectiveId(),前者返回的是:一个WorkbenchWindowAdvisor对象,用来具体的生成活动窗体了。这个方法很重要,和我们生成子窗体也关系密切,在具体的讲述怎么生成子窗体时,我们在详细的阐述它的功能。
后者用来返回一个透视图的ID,在定义的工作台窗体中返回对应ID的透视图,如果,没有,则没有任何的透视图被返回。下面我们看看WorkbenchWindowAdvisor的实现类ApplicationWorkbenchWindowAdvisor。
(4)WorkbenchWindowAdvisor的实现类ApplicationWorkbenchWindowAdvisor:在这个方法中定义了两个方法:createActionBarAdvisor()、preWindowOpen()前者用来定义菜单栏,工具栏,后者用来定义主窗体的名称等信息。
(5)ActionBarAdvisor的实现类ApplicationActionBarAdvisor:创建管理配置创建的action bar(用来定义窗体的菜单和工具栏),用来配置workbenchwindows。
我们可以这么理解:Application用于创建工作台,而WorkbenchAdvisor则用来创建工作台的活动窗体了。那么具体怎么创建的,则由WorkbenchWindowAdvisor和ActionBarAdvisor来完成了。另外,应用程序中如有需要定义透视图,我们定义一个透视图就可以了。一个最基础的rcp应用程序基本由这些核心的功能类组成的。

 

注:本文转载自:http://blog.csdn.net/jdenght/archive/2006/07/31/1005427.aspx

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics