gwt-platform使用gwt-bootstrap模态的正确方法是什么?
发布时间:2020-12-18 00:25:41 所属栏目:安全 来源:网络整理
导读:我正在使用Google Web Toolkit构建一个使用 GWT-Platform和 GWT-Bootstrap框架的webapp.大多数情况下,直到我试图实现一个弹出窗口才几乎完美.这些框架对弹出窗口的不起眼似乎是完全不同的. 当使用GWTP的RevealRootPopupContentEvent.fire(source,content)或
我正在使用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> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |