Событие кликов в сотовом браузере - PullRequest
2 голосов
/ 06 апреля 2011

Я не могу понять, как я могу добавить обработчик кликов в ячейку в браузере ячеек в GWT.Я нашел еще один вопрос здесь, на StackOverFlow, связанный с моим вопросом, но он был для обработчика двойного щелчка.Я не могу понять, как добавить обычный обработчик кликов.

Моя цель - когда пользователь нажимает на ячейку в браузере, он загружает дочерние заметки с сервера.Я уже поиграл с onBrowserEvent, но не смог заставить его работать.

Ответы [ 3 ]

3 голосов
/ 07 апреля 2011

В вашем TreeViewModel вы даете SelectionModel возвращенному NodeInfo. Вы можете прослушать SelectionChangeEvent s на SelectionModel (и, учитывая ваш вариант использования, вы, скорее всего, будете использовать NoSelectionModel, скорее всего, один, общий для всех уровней, которым необходимо поведение onclick )

2 голосов
/ 08 апреля 2011

Может быть, это также интересно для других веб-разработчиков, использующих GWT, поэтому я так и сделал:

// Create a clickable cell.
            Cell<C> cell = new ClickCell() {
              @Override
              public void render(Context context, C value, SafeHtmlBuilder sb) {
                if (value != null) {
                  sb.appendEscaped(value.getName());
                }
              }
              @Override
              public void onBrowserEvent(Context context, Element parent, C value,
                  NativeEvent event, ValueUpdater<C> valueUpdater) {
                super.onBrowserEvent(context, parent, value, event, valueUpdater);
                if ("click".equals(event.getType())) {
                  onEnterKeyDown(context, parent, value, event, valueUpdater);

                }
              }
            @Override
              protected void onEnterKeyDown(Context context, Element parent, C value,
                  NativeEvent event, ValueUpdater<C> valueUpdater) {
                if (valueUpdater != null) {
                  valueUpdater.update(value);
                }
              }
            }; 

И это класс ClickCell, который расширяет класс AbstractCell:

public abstract class ClickCell extends AbstractCell<C> {

    public ClickCell() {
        super("click", "keydown");
    }
}
2 голосов
/ 06 апреля 2011

Вы не можете добавить ClickHandler как обычно, потому что Cell не Widget. AbstractCell имеет некоторые методы, которые делают его удобным для обработки событий, но вы должны вызвать его конструктор с помощьюназвания событий, которые вы хотели бы послушать.Например, вы должны передать «click» в конструктор вашей ячейки, переопределить onBrowserEvent и проверить там события «click».

Посмотрите на источник для ClickableTextCell, чтобы увидеть, как Googleдобавлены прослушиватели кликов в ячейку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...