3.5.2.1.33. PopupView

PopupView представляет собой компонент, позволяющий открывать popup с контейнером. Контейнер может открываться по клику на минимизированное значение или программно. Он может быть закрыт отведением курсора или по клику вне контейнера.

Обычный PopupView со скрытым и видимым popup-ом:

Popup hidden
Рисунок 12. Popup скрыт
Popup visible
Рисунок 13. Popup открыт

Компонент реализован для блока Web Client.

Пример использования PopupView, где минимизированное значение получено из пакета локализации:

<popupView id="popupView"
           minimizedValue="msg://minimizedValue"
           caption="PopupView caption">
    <vbox width="60px" height="40px">
        <label value="Content" align="MIDDLE_CENTER"/>
    </vbox>
</popupView>

Содержимое popup-а должно быть контейнером, например BoxLayout.

Методы PopupView:

  • setPopupVisible() позволяет открывать и закрывать popup программно.

    @Inject
    private PopupView popupView;
    
    @Subscribe
    protected void onInit(InitEvent event) {
        popupView.setMinimizedValue("Hello world!");
    }
  • setMinimizedValue() позволяет программно менять минимизированное значение.

    @Inject
    private PopupView popupView;
    
    @Override
    public void init(Map<String, Object> params) {
        popupView.setMinimizedValue("Hello world!");
    }
  • addPopupVisibilityListener(PopupVisibilityListener listener) позволяет отслеживать изменения видимости popup.

    @Inject
    private PopupView popupView;
    @Inject
    private Notifications notifications;
    
    @Subscribe
    protected void onInit(InitEvent event) {
        popupView.addPopupVisibilityListener(popupVisibilityEvent ->
                notifications.create()
                        .withCaption(popupVisibilityEvent.isPopupVisible() ? "The popup is visible" : "The popup is hidden")
                        .withType(Notifications.NotificationType.HUMANIZED)
                        .show()
        );
    }
  • Компонент PopupView предоставляет методы для установки положения popup на экране. Значения top и left определяют положение верхнего левого угла popup. Положение можно установить с помощью стандартных значений либо задать произвольные. Доступны следующие стандартные значения:

    • TOP_RIGHT

    • TOP_LEFT

    • TOP_CENTER

    • MIDDLE_RIGHT

    • MIDDLE_LEFT

    • MIDDLE_CENTER

    • BOTTOM_RIGHT

    • BOTTOM_LEFT

    • BOTTOM_CENTER

      Стандартное значение DEFAULT располагает popup в середине минимизированного значения.

      Методы для установки положения popup:

    • void setPopupPosition(int top, int left) - устанавливает значения top и left.

    • void setPopupPositionTop(int top) - устанавливает значение top.

    • void setPopupPositionLeft(int left) - устанавливает значение left.

    • void setPopupPosition(PopupPosition position) - использует одно из стандартных значений для установки положения.

      @Inject
      private PopupView popupView;
      
      @Subscribe
      public void onInit(InitEvent event) {
              popupView.setPopupPosition(PopupView.PopupPosition.BOTTOM_CENTER);
      }

      Если положение popup установлено с помощью стандартных значений, то значения left и top будут сброшены и наоборот.

  • Если положение установлено с использованием стандартных значений, то popup будет незначительно сдвинут от границ экрана. Вы можете переопределить сдвиг с помощью переменных SCSS $popup-horizontal-margin и $popup-vertical-margin.

  • Для получения значений положения popup определены следующие методы:

    • int getPopupPositionTop() - возвращает значение top.

    • int getPopupPositionLeft() - возвращает значение left.

    • PopupPosition getPopupPosition() - возвращает null, если положение popup было задано без использования стандартных значений.

Атрибуты PopupView:

  • minimizedValue определяет текст минимизированного значения. В тексте разрешено использовать теги HTML.

  • Если атрибуту hideOnMouseOut установлено значение false, popup будет закрываться по клику вне popup.