Мы закодировали плагин для браузера.Он запускает пользовательские события, такие как «mycustomevent».Мне нужно включить (т.е. назначить слушателей) эти пользовательские события в GWT.Вот мой класс плагинов в GWT.
class PluginObject extends Composite implements HasMyCustomEventHandler{
private Element plugin;
private HTML html;
private HandlerManager handlerManager;
public PluginObject(){
handlerManager = new HandlerManager(this);
html = new HTML("<object id='plugin0' type='application/x-ourplugin' width='300' height='300'>"
+"<param name='onload' value='pluginLoaded' />"
+"</object>");
initWidget(html);
plugin = html.getElement().getFirstChildElement();
}
}
Вот как я добавляю его в свое представление (я использую gwtp).Он добавляется и работает правильно на странице, и я могу вызывать его функции js из gwt с помощью JSNI.
@Inject
public MyPageView(){
...
plugin = new PluginObject();
panel.add(plugin);
}
Мне нужно иметь возможность назначать обработчики для событий, запускаемых из плагина.Я хотел бы иметь возможность сделать следующее в моем докладчике, но до сих пор я не смог подключить его.
@Override
protected void onBind(){
super.onBind();
registerHandler(getView().getPluginObject().addMyCustomEventHandler(
new MyCustomEventHandler() {
@Override
public void onMyCustomEvent(MyCustomEvent event) {
// call some other presenter stuff here...
}
}));
}
Выше упоминается несколько дополнительных занятий.У меня есть определенный класс MyCustomEvent, интерфейс MyCustomEventHandler, который расширяет определенный EventHandler, и интерфейс HasMyCustomEventHandler, который расширяет определенный HasHandler, но после их подключения я ничего не получаю.Я опущу их для краткости, я был бы рад добавить что-нибудь, что может помочь.
Я могу добавить прослушиватели событий в формате js.
obj.addEventListener("mycustomevent", function(){ foo(); }, false);
и каждый раз перехватывать событие (вызывается foo ()), поэтому я уверен, что события запускаются.
Я пытался добавить следующее в мой класс PluginObject, но это только я догадываюсь из того, что нашел при поиске.Это не сработало.
public HandlerRegistration addMyCustomEventHandler(MyCustomEventhandler handler){
return handlerManager.addHandler(MyCustomEvent.TYPE, handler);
}
Каков здесь правильный подход?