Модальные кнопки GWT Bootstrap не будут работать с ClickHandler's onClick

Я пытаюсь создать диалоговое окно, используя модальный виджет GWT-Bootstrap. Я могу заставить его отображаться, но не смог заставить кнопки распознавать события. Кнопка отмены onClick никогда не срабатывает. Был какой-то другой код, чтобы попытаться заставить кнопку addClass сделать что-то, но вычеркнуть это. Если я смогу заставить кнопку отмены что-то сделать (что-нибудь!), Я должен быть в хорошей форме.

Я также пробовал Java с использованием addDomHandler, и это тоже не сработало.

Вот XML:

<!DOCTYPE ui:UiBinder SYSTEM "http://dl.google.com/gwt/DTD/xhtml.ent">
<ui:UiBinder xmlns:ui="urn:ui:com.google.gwt.uibinder"
  xmlns:a="urn:import:cgs.common.client.gwt.bootstrap"
  xmlns:b="urn:import:com.github.gwtbootstrap.client.ui"
  xmlns:g="urn:import:com.google.gwt.user.client.ui">
  <b:Modal title="Add Class?" ui:field="addClassModal" backdrop="STATIC" keyboard="true" animation="true">
    <a:BootstrapField label="Classname:">
     <a:BootstrapTextInput
          ui:field="classname" 
          placeholder="Classname" />
        </a:BootstrapField>
    <b:Button ui:field="addClass">Add Class</b:Button>
    <b:Button ui:field="cancel">Cancel</b:Button>
    </b:Modal>
</ui:UiBinder> 

А вот и ява:

package cgs.teacher.portal.client.view.impl.bootstrap;


import cgs.common.client.gwt.bootstrap.BootstrapTextInput;

import com.github.gwtbootstrap.client.ui.Button;
import com.github.gwtbootstrap.client.ui.Modal;
import com.google.gwt.core.client.GWT;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;

import com.google.gwt.user.client.ui.Composite;
import com.google.gwt.user.client.ui.Widget;



public class AddClassDialogViewImpl
        extends Composite

{


    interface AddClassDialogViewImplUiBinder extends UiBinder<Widget, AddClassDialogViewImpl>
    {
    }

    private static AddClassDialogViewImplUiBinder uiBinder = GWT
            .create(AddClassDialogViewImplUiBinder.class);

    @UiField
    Modal addClassModal;
    @UiField
    BootstrapTextInput classname;
    @UiField
    Button addClass;
    @UiField
    Button cancel;



    public AddClassDialogViewImpl()
    {
        initWidget(uiBinder.createAndBindUi(this));



        cancel.addClickHandler(new ClickHandler() {
            @Override
            public void onClick(ClickEvent event) {
              addClassModal.hide();
            }
          });

        addClassModal.toggle();  //PS. Show gave error. Had to use toggle to show!

    }

}

Спасибо!

1 ответ

Решение

Другой обходной путь, который я нашел, - добавление модального компонента в RootPanel:

public AddClassDialogViewImpl() {

  initWidget(uiBinder.createAndBindUi(this));

  cancel.addClickHandler(new ClickHandler() {
    @Override
    public void onClick(ClickEvent event) {
    //hide the widget
    addClassModal.hide();

    // unless you want to keep this modal as a singleton, you need to remove it from the DOM
    RootPanel.get().remove(AddClassDialogViewImpl.this);
    }
  });

  //add the widget to the DOM
  RootPanel.get().add(this);
  // show the widget
  addClassModal.show();

}
Другие вопросы по тегам