4.5.5.1. Диалоговые окна

Диалоговые окна вызываются методами showMessageDialog() и showOptionDialog() интерфейса IFrame. Этот интерфейс реализуется контроллером экрана, поэтому данные методы можно вызывать напрямую в коде контроллера.

  • showMessageDialog() предназначен для отображения сообщения. Метод принимает следующие параметры:

    • title - заголовок диалогового окна.

    • message - сообщение. В случае HTML-типа (см. ниже) в сообщении можно использовать теги HTML для форматирования. При использовании HTML обязательно экранируйте данных из БД во избежание code injection в веб-клиенте. В не-HTML сообщениях можно использовать символы \n для переноса строки.

    • messageType - тип сообщения. Возможные типы:

      • CONFIRMATION, CONFIRMATION_HTML - диалог подтверждения.

      • WARNING, WARNING_HTML - диалог преупреждения.

      Различие типов сообщений отражается только в пользовательском интерфейсе десктоп-приложений.

    Пример вызова диалога:

    showMessageDialog("Warning", "Something is wrong", MessageType.WARNING);
  • showOptionDialog() предназначен для отображения сообщения и кнопок для выбора пользователем. Метод в дополнение к параметрам, описанным для showMessageDialog(), принимает массив или список действий. Для каждого действия в диалоге создается кнопка, при нажатии на которую пользователем диалог закрывается и вызывается метод actionPerform() данного действия.

    В качестве кнопок со стандартными названиями и значками удобно использовать анонимные классы, унаследованные от DialogAction. Поддерживаются пять видов действий, определяемых перечислением DialogAction.Type: OK, CANCEL, YES, NO, CLOSE. Названия соответствующих кнопок извлекаются из главного пакета локализованных сообщений.

    Пример вызова диалога с кнопками Да и Нет и с заголовком и сообщением, взятыми из пакета локализованных сообщений текущего экрана:

    showOptionDialog(
          getMessage("confirmCopy.title"),
          getMessage("confirmCopy.msg"),
          MessageType.CONFIRMATION,
          new Action[]{
                  new DialogAction(DialogAction.Type.YES) {
                      public void actionPerform(Component component) {
                          copySettings();
                      }
                  },
                  new DialogAction(DialogAction.Type.NO)
          }
    );