J'essaie de créer une boîte de dialogue de confirmation modale. Je voudrais que cela fonctionne comme Window.confirm("")
, où je peux juste l'appeler, et obtenir une réponse booléenne.Boîte de dialogue de confirmation GWT
Mon problème est que je ne suis pas sûr de savoir comment le faire. J'essaie d'utiliser MVP dans mon application. Voici le code que j'ai jusqu'à présent:
public class DialogBoxPresenter implements Presenter {
public interface Display {
Label getDialogText();
Button getAffirmativeButton();
Button getCancelButton();
Widget asWidget();
public void center();
public void hide();
public void setHeader(String text);
}
private Display display;
private String header;
private String dialogText;
private String cancelButtonText;
private String affirmativeButtonText;
protected DialogBoxPresenter() {
}
public DialogBoxPresenter(Display display, String header, String dialogText, String cancelButtonText, String affirmativeButtonText) {
this.display = display;
this.header = header;
this.dialogText = dialogText;
this.cancelButtonText = cancelButtonText;
this.affirmativeButtonText = affirmativeButtonText;
bind();
}
public DialogBoxPresenter(Display display, String header, String dialogText) {
this.display = display;
this.header = header;
this.dialogText = dialogText;
this.cancelButtonText = "Cancel";
this.affirmativeButtonText = "OK";
bind();
}
private void bind() {
this.display.getDialogText().setText(dialogText);
this.display.getAffirmativeButton().setText(affirmativeButtonText);
this.display.getCancelButton().setText(cancelButtonText);
this.display.setHeader(header);
addClickHandlers();
}
private void addClickHandlers() {
this.display.getAffirmativeButton().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
doAffirmative();
}
});
this.display.getCancelButton().addClickHandler(new ClickHandler() {
@Override
public void onClick(ClickEvent event) {
doCancel();
}
});
}
private void doAffirmative() {
//do something
display.hide();
}
private void doCancel() {
//do something
display.hide();
}
public void init() {
display.center();
}
@Override
public void go(HasWidgets container) {
container.clear();
container.add(display.asWidget());
}
}
et moi:
public class DialogBoxView extends DialogBox implements DialogBoxPresenter.Display {
private Label dialogText;
private Button affirmativeButton;
private Button cancelButton;
private VerticalPanel container;
public DialogBoxView() {
//init items
dialogText = new Label();
affirmativeButton = new Button();
cancelButton = new Button();
container = new VerticalPanel();
setGlassEnabled(true);
setAnimationEnabled(true);
setModal(false);
init();
}
private void init() {
//add items
container.add(dialogText);
HorizontalPanel hp = new HorizontalPanel();
hp.add(affirmativeButton);
hp.add(cancelButton);
container.add(hp);
this.add(container);
}
@Override
public Widget asWidget() {
return this;
}
@Override
public Label getDialogText() {
return dialogText;
}
@Override
public Button getAffirmativeButton() {
return affirmativeButton;
}
@Override
public Button getCancelButton() {
return cancelButton;
}
@Override
public void setHeader(String text) {
this.setText(text);
}
}
Cela fonctionne. Merci Monsieur. Je posterai mon code dans une autre réponse pour tous ceux qui sont curieux. – KevMo