开发RCP的朋友们经常会使用到导航窗口,
先简单介绍一下wizardDialog,基本上他的使用方法是这样的
首先有一个WizardDialog,在dialog里面需要放一个Wizard来控制页面WizardPage之间的动作,
- wizardDialog - 主要管理按钮,显示的描述信息,错误信息等基本窗口控件,
- wizard - 主要控制页面,包括添加页面,页面之间的跳转等业务流程
- wizardPage - wizard加入的page必须继承这个父类,主要是每一个页具体实现的内容
有时候,页面需要完成某一些页面逻辑才能跳转到下一页,如eclipse的更新功能
这个时候,就需要用到wizardDialog里面的一个方法,如下
public void run(boolean fork, boolean cancelable, IRunnableWithProgress runnable) throws InvocationTargetException, InterruptedException {
}
这里有3个参数
- fork - 在字面上的意思是,分叉的意思,在这里的含义是,是否使用另外一个线程完成执行任务,true为使用另外一个线程,false使用ui线程,ui线程在主线程,所以当使用ui线程的时候,所有动作将要暂停,等待任务完成了,才继续往前走
- cancelable - 是否可以取消,这个参数只有使用另外一个线程的时候,才生效,意思就是说,当fork参数为true的时候,cancelable取消功能才生效。
- IRunnableWithProcess runable - 则是今天的主题,任务接口,调用这个方法时,需要附上执行任务接口,需要重写run方法
这里需要注意的是,这个过程中会校验是否用户需要使用进度条,默认情况下,进度条会被隐藏,如果需要使用进度条,侧需要在Wizard中打开进度条的功能
setNeedsProgressMonitor(true);