SimplePanel を拡張し、onLoad() メソッドでいくつかの JSNI を実行するウィジェットを作成しました。
public class AceEditor extends SimplePanel implements HasText {
private JavaScriptObject editor;
@Override
protected void onLoad() {
super.onLoad();
editor = createEditor(getElement());
}
private static native JavaScriptObject createEditor(Element element) /*-{
return $wnd.ace.edit(element);
}-*/;
@Override
public native void setText(String value) /*-{
this.@org.obiba.opal.web.gwt.ace.client.AceEditor::editor.setValue(value);
}-*/;
@Override
public final native String getText() /*-{
return this.@org.obiba.opal.web.gwt.ace.client.AceEditor::editor.getValue();
}-*/;
}
問題はsetText
、初めて呼び出すとき、ウィジェットがまだ接続されていないことです (onLoad
まだ呼び出されていません)。
このウィジェットを で使用しますUiBinder
。
ウィジェットが接続されているかどうかを使用addAttachHandler
して確認できましたが、正しい方法ではないようです...
ウィジェットがすぐに接続されない理由について何か考えはありますか?