我正在做一个Eclipse RCP / Jface应用程序,我经常使用MessageDialog
.open...
方法向用户显示消息。
但是,例如,信息对话框的标题始终相同。并且提供的shell对象也始终是顶级shell。因为我想保留我的代码DRY,所以我创建了一些辅助函数,它只接收作为参数的消息。对于父shell,我使用了PlatformUI.getWorkbench().getModalDialogShellProvider().getShell()
。文档说它返回“一个shell ...可以用来为模态对话框提供最好的育儿”例如:
class Helper {
public static void openInformation(String message) {
MessageDialog.open(MessageDialog.INFORMATION,
PlatformUI.getWorkbench().getModalDialogShellProvider().getShell(),
Activator.translate("some.bundle.path.information"), message, SWT.NONE);
}
}
我的问题是为什么他们不让方法MessageDialog.open...
自己确定消息的父shell?如果我总是使用相同的方式为消息框提供shell,那么我是否遗漏了一些东西?
答案 0 :(得分:0)
我的两分钱,
您的应用程序可能打开了多个Workbench Windows。所以传入窗口的外壳,它可以帮助决定使哪个窗口是模态的。
答案 1 :(得分:0)
如果检查JavaDoc,您将看到shell甚至可能为null。我相信shell只用于对话框的中心(相对于shell)。