精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-02-15
前面介绍了一些文字性的东西,现在还是来看看代码,这样才感觉踏实 1. ApplicationApplication的作用就是应用程序或产品(product)的入口,它和Java系统中,类定义的main()方法作用一样. 当Runtime启动的时候,应用程序开始运行,应用程序退出的时候,Eclipse关闭. PDE向导使用 Hello RCP 模板产生了edu.swust.cs.soapfirewall.Application 类,如下。 Applications必须实现 IPlatformRunnable接口,这个接口定义了一个 run()方法,可以把这个方法想像成 main() 方法.
关键的代码就是创建了一个 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做了两件事:
java 代码
3. Perspective初始透视图是通过扩展标识定义的. 透视图类必须实现IPerspectiveFactory 接口,并在createInitial Layout(IPageLayout)方法添加实际的布局代码.现在这个代码空的,将在后面补充.
4.2.4. WorkbenchWindowAdvisor在应用程序中,每一个窗口都有一个 WorkbenchWindowAdvisor ,它的作用是也是告诉窗口如何渲染.在 Window advisors根据窗口的生命周期定义了多个切入点函数,如preWindowOpen()窗口打开前 ,postWindowCreate()创建窗口结后等,可以在不同的方法创建窗口的内容,了解窗口的生命周期是很有必要的,可以让你规划后,在何时才能创建相应的对象,有效的避免窗口中的组件还没有被创建,就已经在使用了. 在 ApplicationWorkbenchWindowAdvisor定制了soapfirewall窗口.在preWindowOpen() 方法中,设置了初始窗口的大小,容器表题栏 ,状态栏和工具栏. java 代码
5. ActionBarAdvisorActionBarAdvisors 创建了窗口需要的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应用的来说,这个可以说是最痛的问题,经常会遇到抛出空指针的问题,所以了解应用程序的过程是非常有必要。下面的应用程序启动序列图很好的表示了这个过程 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
浏览 3914 次