Почему статические методы MessageDialog eclipse jface не определяют себя родительской оболочкой?

Я делаю приложение Eclipse RCP/Jface и часто использую MessageDialog.open... для отображения сообщений пользователю.

Однако заголовок информационного диалога, например, всегда один и тот же. И предоставляемый объект оболочки также всегда является верхней оболочкой. Поскольку я хотел сохранить свой код DRY, я сделал несколько вспомогательных функций, которые получают только сообщение в качестве параметра. Для родительской оболочки я использовал PlatformUI.getWorkbench().getModalDialogShellProvider().getShell(). В документации сказано, что он возвращает "оболочку..., которую можно использовать для получения наилучшего возможного родителя для модального диалога" Например:

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... для определения себя родительской оболочкой для сообщения? И я что-то упускаю, если я всегда использую один и тот же способ для предоставления оболочки для окон сообщений?


person True Soft    schedule 25.08.2011    source источник


Ответы (2)


Мои два цента,

Ваше приложение может открыть несколько окон Workbench. Таким образом, переходя в оболочку окна, это может помочь решить, какое окно будет модальным.

person Kane    schedule 26.08.2011
comment
Я протестировал свой код с двумя окнами Workbench, и он работает одинаково: окно сообщения является модальным в обоих окнах. - person True Soft; 26.08.2011

Если вы проверите JavaDoc, вы увидите, что оболочка может даже быть нулевой. Я считаю, что оболочка используется только для центрирования диалога (относительно оболочки).

person jastram    schedule 08.02.2012
comment
Если оболочка null, диалоговое окно сообщения все еще находится в центре своего родительского диалогового окна. Однако, если оболочка другая, например new Shell(Display.getCurrent()), диалоговое окно не имеет особой позиции. В любом случае, я все же считаю, что параметр оболочки лишний. - person True Soft; 14.02.2012