RCP应用程序开发之三——如何打开多个工作台窗体

前面讲到了从eclipse平台下直接导出的rcp应用程序模板中核心类的功能。在项目的研发过程中,不同的窗体总体上代表了不同的功能。因此,我们有时需要调用另外一个工作台窗体窗体来表现另外一个系统模块的功能,而这个活动窗体也需要像需要像主窗体一样,要展示对应的导航树,鹰眼图等,需要在子窗体和主窗体中切换。怎么实现这个功能呢?

调用另外一个工作台窗体(活动的),实际上就是新生成一个新的工作台窗体,并给这个新的工作台窗体配置相关的菜单、工具栏。前面讲到,我们在Rcp的核心类Application里已经生成了一个工作台,我们需要打开在此基础上新打开一个工作台窗体,具体的方式如下:

PlatformUI.getWorkbench().openWorkbenchWindow(null);

然后,我们在为这个WorkbenchWindow来配置一些菜单,工具栏,就达到我们的要求了。

 

下面,我们详细的说明是如何实现这些功能的:

3.1版本以后,前面讲到要生成一个工作台窗体,调用了ApplicationWorkbenchAdvisorWorkbenchWindowAdvisorActionBarAdvisor。处了Application用来创建工作台,其他的类都用来配置工作台窗体,我们新打开一个工作台窗体时,也需要用这些类来配置工作台窗体。WorkbenchAdvisorWorkbenchWindowAdvisor不用重新定义,用来配置新工作台窗体菜单、工具栏,我们则必须另外实现接口ActionBarAdvisor了。

于是,我们引入了一个新类,WorkbenchActionBuilder,通过这个类,我们来调用不同窗体actionbar生成器(即实现不同窗体的菜单、工具栏)。

package com.jdenght.rcpstudy.action;

 

import org.eclipse.ui.application.ActionBarAdvisor;

import org.eclipse.ui.application.IActionBarConfigurer;

import org.eclipse.ui.application.WorkbenchWindowAdvisor;

import com.jdenght.rcpstudy.MainActionBarAdvisor;

import com.jdenght.rcpstudy.Child_1_ActionBarAdvisor;

 

public final class WorkbenchActionBuilder {

   private IActionBarConfigurer Ibarconfigurer;

   private WorkbenchWindowAdvisor workbenchWindowAdvistor;

   private ActionBarAdvisor actionBarAdvisor;

 

   public WorkbenchActionBuilder(IActionBarConfigurer Ibarconfigurer) {

       this.Ibarconfigurer = Ibarconfigurer;

   }

      

   public ActionBarAdvisor makeWinAction(){

       switch(WorkbenchControler.flag){

       case WorkbenchControler.main:

           actionBarAdvisor = new MainActionBarAdvisor(Ibarconfigurer);

           break;

       case WorkbenchControler.child_1:

           actionBarAdvisor = new Child_1_ActionBarAdvisor(Ibarconfigurer);

           break;

       case WorkbenchControler.child_2:

           actionBarAdvisor = new MainActionBarAdvisor(Ibarconfigurer);

           break;

       }

       return actionBarAdvisor;

   }

      

   public void dispose() {

       workbenchWindowAdvistor.dispose();

   }

}

如上所述,当当前打开的为主窗体时,调用MainActionBarAdvisor,为主窗体来配置菜单、工具栏等,当当前打开的为子窗体时,调用一个子窗体的菜单、工具栏生成类Child_1_ActionBarAdvisor

于是,有人会提到,我们在哪里调用WorkbenchActionBuilder这个类呢,这个类怎样让它调用不同的工具栏生成器呢?WorkbenchControler有什么作用呢?

这个类是在WorkbenchWindowAdvisor的实现类中调用的,让我们来看看代码:

package com.jdenght.rcpstudy;

 

import org.eclipse.ui.application.ActionBarAdvisor;

import org.eclipse.ui.application.IActionBarConfigurer;

import org.eclipse.ui.application.IWorkbenchWindowConfigurer;

import org.eclipse.ui.application.WorkbenchWindowAdvisor;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值