Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/joomla/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么不';t eclipse jface';MessageDialog静态方法确定自己是父shell吗?_Eclipse_Messagebox_Jface - Fatal编程技术网

为什么不';t eclipse jface';MessageDialog静态方法确定自己是父shell吗?

为什么不';t eclipse jface';MessageDialog静态方法确定自己是父shell吗?,eclipse,messagebox,jface,Eclipse,Messagebox,Jface,我正在做一个EclipseRCP/Jface应用程序,我经常使用.open…方法向用户显示消息 但是,例如,信息对话框的标题总是相同的。提供的shell对象也始终是顶部shell。为了保留代码,我制作了一些helper函数,这些函数只接收作为参数的消息。对于父shell,我使用了PlatformUI.getWorkbench().getModalDialogShellProvider().getShell()。文档中说,它返回“一个shell…可用于获得模式对话框的最佳亲职”,例如: 我的问题是

我正在做一个EclipseRCP/Jface应用程序,我经常使用
.open…
方法向用户显示消息

但是,例如,信息对话框的标题总是相同的。提供的shell对象也始终是顶部shell。为了保留代码,我制作了一些helper函数,这些函数只接收作为参数的消息。对于父shell,我使用了
PlatformUI.getWorkbench().getModalDialogShellProvider().getShell()
。文档中说,它返回“一个shell…可用于获得模式对话框的最佳亲职”,例如:

我的问题是,为什么他们不使用方法
MessageDialog.open…
来确定消息的父shell?如果我总是用同样的方式为消息框提供一个外壳,我会错过什么吗?

我的两分钱


应用程序可能会打开多个工作台窗口。因此,通过传入窗口的shell,它可以帮助确定哪个窗口是模态的。

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

我用两个工作台窗口测试了我的代码,它的工作原理是一样的:消息框在两个窗口上都是模态的。如果shell为
null
,则消息对话框仍然位于其父对话框的中心。但是,如果shell是其他内容,如
新shell(Display.getCurrent())
,则对话框没有任何特殊位置。无论如何,我仍然认为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);
  }
}