브라우저 플러그인을 코딩했습니다. 'mycustomevent'와 같은 맞춤 이벤트를 실행합니다. 이러한 맞춤 이벤트를 GWT에 통합해야합니다 (예 : 청취자를 할당). 다음은 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 함수를 gnt에서 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 클래스가 정의되어 있고 정의 된 EventHandler를 확장하는 MyCustomEventHandler 인터페이스와 HasHandlers를 정의한 HasMyCustomEventHandler 인터페이스가 있지만 모두 연결 한 후에는 아무 것도 얻을 수 없습니다. 나는 간결함을 위해 그것들을 생략했습니다. 나는 도움이 될만한 것을 추가하게되어 기쁩니다.
맨위로 이벤트 리스너를 추가 할 수 있습니다. (호출되는 foo는())
obj.addEventListener("mycustomevent", function(){ foo(); }, false);
이벤트를 잡을 때마다 그래서 이벤트가 해고되고 확신한다.
내 PluginObject 클래스에 다음을 추가하려고 시도했지만, 이것은 내가 검색 한 것으로 추측 한 것입니다. 그것은 효과가 없습니다.
public HandlerRegistration addMyCustomEventHandler(MyCustomEventhandler handler){
return handlerManager.addHandler(MyCustomEvent.TYPE, handler);
}
올바른 접근 방법은 무엇입니까?