Каков список действительных GWT DOM / потребляемых событий для ячеек? - PullRequest
7 голосов
/ 03 марта 2011

Я сталкивался с этим несколько раз и не могу найти ничего всеобъемлющего. Я хочу знать полный список всех действительных событий DOM для GWT.

Документы GWT для NativeEvent говорят:

public final java.lang.String getType()
Gets the enumerated type of this event.
Returns:
the event's enumerated type

Где это перечисление? Это действительно существует? Используемый фактический код (который я обнаружил), который явно говорит, что эти события всегда используют строки: "click", "contextmenu", "mouseup", "dblclick" и т. Д. (И т. Д., Охватывает очень много капризов ...)

Я пытаюсь реализовать как Двойной щелчок, так и Правый щелчок для ячеек в CellTable ala этот пост . Я передаю супер ("click", "contextmenu", "mouseup", "dblclick"); в конструкторе моего расширения AbstractCell. Затем я переопределил onBrowserEvent:

@Override

    public void onBrowserEvent(Context context, Element parent, ImageProperties<T> value,
            NativeEvent event, ValueUpdater<ImageProperties<T>> valueUpdater) {
        if (event.getButton() == NativeEvent.BUTTON_RIGHT) {
            event.stopPropagation();
            event.preventDefault();
            eventBus.fireEvent(new RightClickEvent<Context>(context, event));
        } else {
            super.onBrowserEvent(context, parent, value, event, valueUpdater);
        }
    }

Однако я сталкиваюсь с двумя проблемами. Во-первых, contextMenu по умолчанию все еще отображается (поверх моего пользовательского) - не говоря уже о том, что он даже не использует тип события DOM. Другая проблема, как я могу проверить, является ли событие двойным щелчком? Мне трудно поверить, что это буквально произвольный набор строк ...

Заранее спасибо! John

Ответы [ 2 ]

4 голосов
/ 05 марта 2011

Собственные типы событий JavaScript DOM на самом деле являются произвольными строками , и поддержка данного типа события (и его имени) может зависеть от браузера.

3 голосов
/ 04 февраля 2013

перечисление, которое вы ищете существует в BrowserEvents class .Вы должны использовать эти константы вместо «магических» строковых литералов.

...