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 года. Но все еще не исправлено в исходном коде.