Създадох джаджа, която разширява SimplePanel и изпълнява някои JSNI в onLoad() метод:
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) /*-{
[email protected]::editor.setValue(value);
}-*/;
@Override
public final native String getText() /*-{
return [email protected]::editor.getValue();
}-*/;
}
Проблемът е, че когато извикам setText
за първи път, джаджата все още не е прикачена (onLoad
още не е извикана).
Използвам тази джаджа с UiBinder
.
Бих могъл да използвам addAttachHandler
и да проверя дали джаджата е прикачена, но не изглежда правилният начин да го направя...
Някаква идея защо джаджата не е прикачена по-рано?