2012-06-06 3 views
2

Как отменить событие закрытия из файла com.smartgwt.client.widgets.Window? Мне нужно подтверждение пользователя, чтобы закрыть окно, я увидел, что класс com.smartgwt.client.widgets.tab.events.TabCloseClickEvent имеет метод отмены, который останавливает действие, мне нужно то же самое для com.smartgwt.client.widgets .events.CloseClickHandler. Как реализовать эту функцию?Как отменить событие закрытия из окна SmartGWT?

+1

Работает ли метод kill() на CloseClickEvent? – ModeEngage

+0

Nops, это не работает, класс CloseClickEvent не имеет метода kill():/ –

ответ

1
public HandlerRegistration addCloseClickHandler(CloseClickHandler handler) 

Обрабатывает щелчок по кнопке закрытия этого окна. Реализация по умолчанию скрывает окно и возвращает false для отмены барботажа. Переопределите этот метод, если вы хотите предпринять другие действия.

+0

Я уже видел это в Документах, но это не вопрос ... Параметр 'handler' не имеет' cancel() ', чтобы остановить действие закрытия, понять? Я ошибаюсь? –

+0

@JulioSampaio * Переопределите этот метод, если вы хотите, чтобы другие действия были предприняты * .. Что означает, переопределить его и сделать все, что вы хотите сделать –

+0

ok, но я не вижу способа отменить действие закрытия, что класс Window метод должен я использовать? Вы когда-нибудь делали что-то подобное с SmartGwt? '@Override \t общественного HandlerRegistration addCloseClickHandler (CloseClickHandler обработчик) { \t \t \t \t SC.confirm ("Закрыть окно?", Новый BooleanCallback() {\t \t \t \t \t \t \t \t @Override \t \t \t public void execute (Boolean value) { \t \t if (value) { \t \t \t \t // что делать, чтобы отменить закрытие? \t \t \t \t} \t \t \t} \t \t}); \t \t // что он должен вернуть? \t \t return super.addCloseClickHandler (обработчик); \t} ' –

0

В вашем объекте окна

myWindowObject.addCloseClickHandler(new CloseClickHandler() { 
      public void onCloseClick(CloseClickEvent event) { 

        //Do whatever 

        if(IHaveTOCancel){ 
          event.cancel(); 
        } 
       } 
      }); 
0

Я обнаружил, что, если вы немедленно не отменить событие (потому что он ожидает ввод данных пользователя), то окно закрывается в любом случае. Вот что я нашел, если вам нужно ждать ввода пользователя.

window.addCloseClickHandler(new CloseClickHandler() { 
     @Override 
     public void onCloseClick(CloseClickEvent event) { 
      event.cancel(); 
      StringBuilder b = new StringBuilder(); 
      b.append("<BR>"); 
      b.append("Are you sure you want to close?"); 
      SC.ask("Close", b.toString(), new BooleanCallback() { 
       @Override 
       public void execute(Boolean value) { 
        if (value) { 
         window.close(); 
        } 
       } 
      }); 
     } 
    }); 
Смежные вопросы