GXT 2.2 - константы кнопки MessageBox - PullRequest
2 голосов
/ 28 марта 2012

Это вопрос о том, как определить, какая кнопка была нажата в MessageBox / Dialog.Только GXT 2.1 или 2.2. Пожалуйста, не отвечайте, используя GXT 3.

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

final MessageBox box = MessageBox.confirm(
  "Confirm kill avatar",
  "Please remove " + getAvatar().getName(),
  new Listener<MessageBoxEvent>()
  {
    @Override
    public void handleEvent(MessageBoxEvent be)
    {
      Button clicked = be.getButtonClicked();
      if (clicked == box.getDialog().getButtonById("yes"))
        deleteAvatar();
      else
       Info.display("Action cancelled");
    }
  });
  • Однако.так как box не был определен, box.getDialog () будет NPE,
  • и компилятор вытеснит, что с помощью каркаса «box not initialized»,
  • и не сможет инициализироваться, потому что box должен быть окончательнымПоле
  • должно быть окончательным, поскольку оно используется в классе прослушивателя anon.

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

    @Override
    public void handleEvent(MessageBoxEvent be)
    {
      Button clicked = be.getButtonClicked();
      if (clicked.getText().equals("Yes")))
        deleteAvatar();
      else
       Info.display("Action cancelled");
    }

В GXT 2.2 это рекомендуемый способ?Или есть лучший способ обнаружения нажатия кнопки, дружественный к i18n?

Я ДОЛЖЕН сравнивать кнопки, а НЕ текст кнопок.

Ответы [ 2 ]

4 голосов
/ 18 июня 2012

Вы можете использовать:

if (Dialog.CANCEL.equals(be.getButtonClicked().getItemId())) {

    //do action 

}
0 голосов
/ 28 марта 2012

Неважно.

Я должен просто создать свое собственное подтверждение / предупреждение / и т. Д. Из диалога и предоставить свои собственные кнопки отправки / отмены соответствующим слушателям.

Messagebox - это всего лишь песочница / пример того, как делать простые диалоги gxt.

...