GWT Popuppanel отменить процесс закрытия на основе условия

У меня есть PopupPanel

 private PopupPanel simplePopup;

В приложении откроется всплывающее окно. Когда пользователь нажимает за его пределами, всплывающее окно закрывается. Это поведение по умолчанию. Я хотел бы переопределить это поведение и НЕ закрывать всплывающее окно, если выполняется условие. Я имею в виду что-то вроде этого:

  simplePopup.addCloseHandler(new CloseHandler<PopupPanel>() {

        @Override
        public void onClose(CloseEvent<PopupPanel> arg0) {
            if (conditionIsMet) {
              // do something here to avoid closing the popup
           }
        }
    });

Но я не знаю, как предотвратить закрытие всплывающего окна. Я прочитал кое-что о onPreviewNativeEvent, но я не знаю, как его использовать.

1 ответ

Решение

Вам нужно отключить флаг autoHide. Поведение скрытия по умолчанию связано с этим флагом. Вы можете отключить его с помощью следующего фрагмента кода.

simplePopup.setAutoHideEnabled( false );

Вы также можете отключить его через конструктор.

Вы можете управлять скрытием на основе некоторого условия, переопределив метод скрытия как

    simplepopup = new PopupPanel( false)
    {
        @Override
        public void hide( boolean autoClosed )
        {
            if( condition met )
            {
                super.hide();
            } 
        }
    };
Другие вопросы по тегам