の絶対位置を取得するのに行き詰まっていDialogBox
ます。PopupPanel
(の親であるDialogBox
)がそれを設定することは一般的な問題(および奇妙な回避策)であることを私は知っていますが、 それを取得したい場合、ボックスがDOMに接続された正確な瞬間は何ですか?オーバーライドshow
も役に立たないonAttach
:show
class MyDialog extends DialogBox {
public MyDialog(. . .) {
ComplexPanel vert = new VerticalPanel();
vert.add("Test");
vert.add(new Button("Close", new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
MyDialog.this.hide();
}
}));
setWidget(vert);
this.addAttachHandler(new AttachEvent.Handler() {
@Override
public void onAttachOrDetach(AttachEvent event) {
if (event.isAttached()) Log.debug("attach:"+MyDialog.this.getAbsoluteLeft() +";"+
MyDialog.this.getAbsoluteTop());
}
});
}
@Override
protected void onLoad() {
super.onLoad();
Log.debug("load:"+this.getAbsoluteLeft() +";"+this.getAbsoluteTop());
}
@Override
public void show() {
super.show();
Log.debug("show:"+this.getAbsoluteLeft() +";"+this.getAbsoluteTop());
}
}
したがって、を呼び出すとnew MyDialog().show();
、このすべての行がログ0;0
に記録されますが、ダイアログはページの中央に配置されます。しかし、私が欲しいのは、一連のoffsetParent
ポジションの合計です。(そして、これをチェックするためにJSNIを使用する場合、JavaScriptでもこれらの瞬間に0になります)
Again, setPopupPositionAndShow
allows to set position but not get it :(