我们在开发rcp应用程序的时候,有许多可重用的方法。因此,我们定义了Eclipse工具类,以方面在开发的过程中能够直接调用,加强了代码的可重用性,同时也方便了项目小组成员来使用这些重用的方法。
package com.jdenght.rcpstudy.util;
import org.eclipse.ui.IWorkbench;
import org.eclipse.ui.IWorkbenchWindow;
import com.jdenght.rcpstudy.RcpstudyPlugin;
/**
* 得到插件应用程序中工作台的相关元素的工具类
* @Author:DENGHT
*/
public class WorkbenchUtil {
/**
* @see RcpstudyPlugin.getDefault().getWorkbench()
* @return 返回当前的工作台
*/
public static IWorkbench getWorkbench(){
return RcpstudyPlugin.getDefault().getWorkbench();
}
/**
* @see RcpstudyPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow()
* @return 返回当前的工作台的活动窗体
* (这里的窗体并不包括对话框、向导、用swt定制的窗体等,指的是当前一个子业务系统的窗体,这个窗体具备有视图、属性页、导航树等)
*/
public static IWorkbenchWindow getActiveWorkbenchWindow(){
return RcpstudyPlugin.getDefault().getWorkbench().getActiveWorkbenchWindow();
}
/**
* @see RcpstudyPlugin.getDefault().getWorkbench().getWorkbenchWindows()
* @return 返回当前工作台的所有窗体
* (这里所有的窗体并不包括普通的对话框、向导、用swt定制的窗体等,而是指所有具备视图功能的窗体)
*/
public static IWorkbenchWindow[] getWorkbenchWindows(){
return RcpstudyPlugin.getDefault().getWorkbench().getWorkbenchWindows();
}
/**
* @see RcpstudyPlugin.getDefault().getWorkbench().getWorkbenchWindowCount()
* @return 返回当前工作台窗体数目
*/
public static int getWorkbenchWindowCount(){
return RcpstudyPlugin.getDefault().getWorkbench().getWorkbenchWindowCount();
}
}
其中:RcpstudyPlugin.getDefault().getWorkbench()是在程序的插件类RcpstudyPlugin的超类AbstractUIPlugin中定义的。
public IWorkbench getWorkbench() {
return PlatformUI.getWorkbench();
}
因此,我们亦可直接通过PlatformUI.getWorkbench()获得这个工作台。为什么能够通过这个方法来获得工作台呢?原因在于:当我们启动rcp应用程序时,在Application类中,我们通过
int returnCode =
PlatformUI.createAndRunWorkbench(display, new ApplicationWorkbenchAdvisor());
创建了工作台。
一个工作台可以有多个活动的窗体来构成。目前只是总结了少许公用方法,有时间会继续整理。