Всплывающее окно GWT не центрируется при построении в onClickHandler - PullRequest
0 голосов
/ 29 ноября 2011

Моя цель - использовать 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

1 Ответ

0 голосов
/ 30 ноября 2011

Кажется, работает, задерживая звонок в центр. Возможно, сработает и таймер отключения. Задержка вызова также работает при переносе buildUI в GWT.runAsync

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() {

                Scheduler.get().scheduleFixedDelay(new RepeatingCommand() {

                    @Override
                    public boolean execute() {

                        popupPanel.center();
                        return false;

                    }
                }, 50); //a value greater than 50 maybe needed here.
            });    
        }
    }

}
}
...