为什么不eclipse jface的MessageDialog静态方法确定自己的父shell?

时间:2011-08-25 13:31:35

标签: eclipse messagebox jface

我正在做一个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,那么我是否遗漏了一些东西?

2 个答案:

答案 0 :(得分:0)

我的两分钱,

您的应用程序可能打开了多个Workbench Windows。所以传入窗口的外壳,它可以帮助决定使哪个窗口是模态的。

答案 1 :(得分:0)

如果检查JavaDoc,您将看到shell甚至可能为null。我相信shell只用于对话框的中心(相对于shell)。