当前位置 : 主页 > 网页制作 > Bootstarp >

gwt-platform使用gwt-bootstrap模态的正确方法是什么?

来源:互联网 收集:自由互联 发布时间:2021-06-12
我正在使用Google Web Toolkit构建一个使用 GWT-Platform和 GWT-Bootstrap框架的webapp.大多数情况下,直到我试图实现一个弹出窗口才几乎完美.这些框架对弹出窗口的不起眼似乎是完全不同的. 当使
我正在使用Google Web Toolkit构建一个使用 GWT-Platform和 GWT-Bootstrap框架的webapp.大多数情况下,直到我试图实现一个弹出窗口才几乎完美.这些框架对弹出窗口的不起眼似乎是完全不同的.

当使用GWTP的RevealRootPopupContentEvent.fire(source,content)或演示者的addToPopupSlot(child)方法时,GWT-Platform希望弹出窗口小部件本身是com.google.gwt.user.client.ui.PopupPanel的一个实例.

GWT-Bootstrap的Modal就像添加到底层面板中的任何其他小部件一样使用,但我的目标是拥有一个独立的演示者和视图,并可能与AsyncProvider异步获取.

我试图把它作为一个PresenterWidget,并使用addToSlot(插槽,内容)来显示它,但它看起来不正确.并不是所有的样式都以这种方式应用,关闭图标(×)不起作用.

我想我不是第一个尝试这样做的人,所以也许有人想出了一个正确的方法来使其工作.

谢谢!

你必须创建一个视图:

public class MyPopupView extends PopupViewImpl implements MyView {

    protected Widget widget;

    public interface MyPopupViewUiBinder extends
            UiBinder<Widget, MyPopupView> {
    }

    @UiField(provided = true)
    Modal dialogBox;

    private MyPresenter presenter;

    @Inject
    public MyPopupView(final MyPopupViewUiBinder uiBinder,
            final EventBus eventBus) {
        super(eventBus);
        setUpDialog(); // Provides UiField => Before initWidgets
        initWidget(uiBinder.createAndBindUi(this));
    }

    // DialogBox must be overridden to let the presenter handle changes onUnload
    private void setUpDialog() {
        dialogBox = new Modal() {

            @Override
            protected void onUnload() {
                MyPopupView.this.hide();
            }
        };

        dialogBox.setTitle("Some title");
    }

    @Override
    public void setPresenter(final MyPresenter presenter) {
        this.presenter = presenter;
    }

    @Override
    public final void hide() {
        dialogBox.hide();
        presenter.hide();
    }

    @Override
    public void setAutoHideOnNavigationEventEnabled(final boolean autoHide) {
        // TODO Auto-generated method stub
    }

    @Override
    public void setCloseHandler(
            final PopupViewCloseHandler popupViewCloseHandler) {
        // TODO Auto-generated method stub
    }

    @Override
    public void setPosition(final int left, final int top) {
        // TODO Auto-generated method stub
    }

    @Override
    public void show() {
        dialogBox.show();
    }

    @Override
    public void center() {
        dialogBox.show();
    }

    @Override
    public Widget asWidget() {
        return widget;
    }

    protected final void initWidget(final Widget widget) {
        this.widget = widget;
    }

}

和一个UIBinder文件:

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui='urn:ui:com.google.gwt.uibinder'
    xmlns:g='urn:import:com.google.gwt.user.client.ui'
    xmlns:b='urn:import:com.github.gwtbootstrap.client.ui'>

    <b:Modal title="Some Title" ui:field="dialogBox">
        <!-- Your content -->
    </b:Modal>
</ui:UiBinder>
网友评论