如何让工作台窗口在基于Eclipse的项目中打开模态对话框?

时间:2009-01-14 14:55:57

标签: eclipse eclipse-plugin eclipse-rcp eclipse-pde

要打开模式对话框,您需要传递父窗口,并将对话框的必要标记传递给模态。

根据您在eclipse基础架构中的位置,找到这个父窗口并不总是那么容易。

如何访问父窗口?

3 个答案:

答案 0 :(得分:27)

上一个答案的代码片段将起作用。但是,请记住,您只能从UI线程打开对话框。如果要从其他线程打开对话框,例如在后台进程中,您需要执行以下操作:

PlatformUI.getWorkbench().getDisplay().asyncExec(new Runnable() {
    public void run() {
        Shell activeShell = PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell();
    }
});

否则在创建对话框时会出现异常。

答案 1 :(得分:22)

从视图或编辑器(这部分很简单):

this.getSite().getWorkbenchWindow().getShell()

从其他地方访问视图或编辑器,与上面相同。

如果你发现自己在一个无法访问视图或编辑器的类中,你可能不希望调用任何UI代码,但是如果你真的想要自己开枪:

PlatformUI.getWorkbench().getActiveWorkbenchWindow().getShell()

答案 2 :(得分:0)

不完全是您想要做的,但您可能需要在创建对话框时使用 SWT.APPLICATION_MODAL SWT.DIALOG_TRIM 等,以使其成为模态对话(但也许这不是你的问题)。

有关详细信息,请参阅此link