SmartGWT RichTextEditor не захватывает события onBrowserEvents

Я использую SmartGWT в своем приложении и столкнулся с некоторыми проблемами при попытке получить события из браузера. Мне нужно получить событие ONPASTE, но когда я пытаюсь его использовать, метод onBrowserEvent даже не вызывается.

Вот код, который я использую.

import com.google.gwt.user.client.Event;
import com.smartgwt.client.widgets.RichTextEditor;

public class CustomRichTextEditor extends RichTextEditor {
    public CustomRichTextEditor() {
        super();
        sinkEvents(Event.ONPASTE);
    }

    @Override
    public void onBrowserEvent(Event event) {
        super.onBrowserEvent(event);
        System.out.println("Event.getTypeInt: " + event.getTypeInt() + " - Event.getType: " + event.getType());
        switch (event.getTypeInt()) {
        case Event.ONPASTE:
            System.out.println("Paste Detected");
            break;
        }
    }

}

Кто-нибудь может мне помочь?

1 ответ

Решение

RichTextEditor на самом деле не присоединяется ни к каким элементам ввода. И используйте элемент textarea как контейнер только для транспортировки. Он вообще не подписан на такие события, как ONPASTE.

Этот вопрос впервые был задан в gwt google group. И хороший парень Брэндон Доннельсон выяснил, почему это не работает и как это решить.

Вот рабочий пример gwt с пользовательским RichTextEditor (около ~300 строк кода в 5 классах, и мы не думаем, что вставлять его здесь - хорошая идея), который добавляет событие bindind в RichTextEditor и позволяет ONPASTE и некоторым другим событиям работать. Это работает следующим образом:

введите описание изображения здесь

ps Также имейте в виду, что это странное поведение RichTextEditor было представлено как ошибка в ноябре 2011 года. Но все еще не исправлено в исходном коде.

Другие вопросы по тегам