/* * Copyright 2010 Daniel Kurka * * Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except * in compliance with the License. You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software distributed under the License * is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express * or implied. See the License for the specific language governing permissions and limitations under * the License. */ package com.googlecode.mgwt.ui.client.widget.dialog; import com.google.gwt.user.client.ui.HasText; import com.google.gwt.user.client.ui.Label; import com.googlecode.mgwt.dom.client.event.tap.TapEvent; import com.googlecode.mgwt.dom.client.event.tap.TapHandler; import com.googlecode.mgwt.ui.client.widget.dialog.overlay.PopinDialogOverlay; import com.googlecode.mgwt.ui.client.widget.dialog.panel.DialogPanel; import com.googlecode.mgwt.ui.client.widget.dialog.panel.DialogPanelAppearance; /** * A simple confirm dialog with ok and cancel buttons * * @author Daniel Kurka */ public class ConfirmDialog implements HasText, HasTitleText, Dialog { /** * The callback used when buttons are taped * * @author Daniel Kurka * */ public interface ConfirmCallback { /** * Called if ok button is taped */ public void onOk(); /** * called if cancel button is taped */ public void onCancel(); } private PopinDialogOverlay popinDialog; private DialogPanel dialogPanel1; private Label textLabel; private ConfirmCallback callback; /** * Construct a Confirmdialg * * @param title - the title of the dialog * @param text - the text of the dialog * @param callback - the callback used when a button of the dialog is taped */ public ConfirmDialog(String title, String text, ConfirmCallback callback) { this(DialogPanel.DEFAULT_APPEARANCE, title, text, callback); } /** * Construct a Confirmdialg * * @param css . css to use * @param title - the title of the dialog * @param text - the text of the dialog * @param callback - the callback used when a button of the dialog is taped */ public ConfirmDialog(DialogPanelAppearance appearance, String title, String text, ConfirmCallback callback) { this(appearance, title, text, callback, "Ok", "Cancel"); } /** * Construct a Confirmdialg * * @param css . css to use * @param title - the title of the dialog * @param text - the text of the dialog * @param callback - the callback used when a button of the dialog is taped */ public ConfirmDialog(DialogPanelAppearance appearance, String title, String text, ConfirmCallback callback, String okButtonText, String cancelButtonText) { this.callback = callback; popinDialog = new PopinDialogOverlay(appearance); dialogPanel1 = new DialogPanel(appearance); dialogPanel1.showCancelButton(true); dialogPanel1.showOkButton(true); textLabel = new Label(); dialogPanel1.getContent().add(textLabel); popinDialog.add(dialogPanel1); dialogPanel1.getOkButton().addTapHandler(new TapHandler() { @Override public void onTap(TapEvent event) { popinDialog.hide(); if (ConfirmDialog.this.callback != null) ConfirmDialog.this.callback.onOk(); } }); dialogPanel1.getCancelButton().addTapHandler(new TapHandler() { @Override public void onTap(TapEvent event) { popinDialog.hide(); if (ConfirmDialog.this.callback != null) ConfirmDialog.this.callback.onCancel(); } }); setText(text); setTitleText(title); dialogPanel1.setCancelButtonText(cancelButtonText); dialogPanel1.setOkButtonText(okButtonText); } @Override public void setTitleText(String title) { dialogPanel1.getDialogTitle().setHTML(title); } @Override public void setText(String text) { textLabel.setText(text); } @Override public String getTitleText() { return dialogPanel1.getDialogTitle().getHTML(); } @Override public String getText() { return textLabel.getText(); } public void show() { popinDialog.center(); } @Override public void hide() { popinDialog.hide(); } }