Моя цель - использовать GWT.runSync для загрузки всплывающего содержимого только при необходимости.
Если я создаю свой виджет следующим образом:
public class CreateButton extends Button {
public CreateButton() {
super("Create");
buildUI();
}
private void buildUI() {
final CreateWidget createWidget = new CreateWidget();
final PopupPanel popupPanel = new PopupPanel(false);
popupPanel.setWidget(createWidget);
popupPanel.setGlassEnabled(true);
popupPanel.setAnimationEnabled(true);
addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
popupPanel.center();
}
});
}
}
Тогда всплывающее окно будет отцентрировано правильно.
Если я создаю всплывающее окно в clickHandler:
public class CreateButton extends Button {
public CreateButton() {
super("Create");
buildUI();
}
private void buildUI() {
@Override
public void onClick(ClickEvent event) {
final CreateWidget createWidget = new CreateWidget();
final PopupPanel popupPanel = new PopupPanel(false);
popupPanel.setWidget(createWidget);
popupPanel.setGlassEnabled(true);
popupPanel.setAnimationEnabled(true);
addClickHandler(new ClickHandler() {
popupPanel.center();
}
});
}
}
Всплывающее окно не будет правильно центрироваться.Я попытался использовать setPositionAndShow, однако предоставленные смещения равны 12, хотя CreateWidget на самом деле составляет около 200 пикселей для ширины и высоты.
Я хочу использовать второй метод, чтобы в конечном итоге я мог использовать GWT.runAsync вonClick as CreateWidget очень сложный.
Я использую GWT-2.1.1