RCP中获取当前active shell的方法

By | 2018年9月1日

为什么要获取active shell?

创建其它dialog或window,需要传出shell,以便构成modal模式。

如何获取?

Shell shell = Display.getDefault().getActiveShell();

因为RCP程序运行在Display.getDefault()上,所以下面的方法返回的active shell是同一个东西,只是比较麻烦。

PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
PlatformUI.getWorkbench().getDisplay().getActiveShell();

一般程序只有一个Display,就是Display.getDefault(),所以在UI线程上,下面方法也可以返回active shell。

Display.getCurrent().getActiveShell();