/* * Copyright (c) 2011 PonySDK * Owners: * Luciano Broussal <luciano.broussal AT gmail.com> * Mathieu Barbier <mathieu.barbier AT gmail.com> * Nicolas Ciaravola <nicolas.ciaravola.pro AT gmail.com> * * WebSite: * http://code.google.com/p/pony-sdk/ * * 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.ponysdk.core.ui.rich; import com.ponysdk.core.model.PHorizontalAlignment; import com.ponysdk.core.ui.basic.Element; import com.ponysdk.core.ui.basic.PButton; import com.ponysdk.core.ui.basic.PConfirmDialogHandler; import com.ponysdk.core.ui.basic.PDialogBox; import com.ponysdk.core.ui.basic.PHorizontalPanel; import com.ponysdk.core.ui.basic.PVerticalPanel; import com.ponysdk.core.ui.basic.PWidget; import com.ponysdk.core.ui.basic.PWindow; import com.ponysdk.core.ui.i18n.PString; public class PConfirmDialog extends PDialogBox { private PButton okButton; private PButton cancelButton; public PConfirmDialog() { super(); } public static PConfirmDialog show(final PWindow window, final String windowCaption, final String message, final String okCaption, final String cancelCaption, final PConfirmDialogHandler confirmDialogHandler) { return show(window, windowCaption, Element.newPLabel(message), okCaption, cancelCaption, confirmDialogHandler); } // show a popup which have a ok button hiding the popup by default public static PConfirmDialog show(final PWindow window, final String windowCaption, final PWidget content) { return show(window, windowCaption, content, PString.get("dialog.ok"), null, null); } public static PConfirmDialog show(final PWindow window, final String windowCaption, final PWidget content, final PConfirmDialogHandler confirmDialogHandler) { return show(window, windowCaption, content, PString.get("dialog.ok"), null, confirmDialogHandler); } public static PConfirmDialog show(final PWindow window, final String windowCaption, final PWidget content, final String okCaption, final String cancelCaption, final PConfirmDialogHandler confirmDialogHandler) { final PConfirmDialog confirmDialog = buildPopup(windowCaption, content, okCaption, cancelCaption, confirmDialogHandler); window.add(confirmDialog); confirmDialog.center(); return confirmDialog; } public static PConfirmDialog buildPopup(final String windowCaption, final PWidget content, final String okCaption, final String cancelCaption, final PConfirmDialogHandler confirmDialogHandler) { final PConfirmDialog confirmDialog = new PConfirmDialog(); confirmDialog.setStyleName("pony-DialogBox"); confirmDialog.setAnimationEnabled(true); confirmDialog.setGlassEnabled(true); // Build content final PVerticalPanel dialogContent = Element.newPVerticalPanel(); dialogContent.add(content); final PHorizontalPanel controlsPanel = Element.newPHorizontalPanel(); controlsPanel.setStyleName("dialogControls"); if (cancelCaption != null) { final PButton cancelButton = Element.newPButton(cancelCaption); cancelButton.addClickHandler(event -> { if (confirmDialogHandler != null) { confirmDialogHandler.onCancel(); } confirmDialog.hide(); }); controlsPanel.add(cancelButton); controlsPanel.setCellHorizontalAlignment(cancelButton, PHorizontalAlignment.ALIGN_CENTER); confirmDialog.setCancelButton(cancelButton); } if (okCaption != null) { final PButton okButton = Element.newPButton(okCaption); okButton.addClickHandler(event -> { if (confirmDialogHandler != null) { if (confirmDialogHandler.onOK(confirmDialog)) confirmDialog.hide(); } else confirmDialog.hide(); }); controlsPanel.add(okButton); controlsPanel.setCellHorizontalAlignment(okButton, PHorizontalAlignment.ALIGN_CENTER); confirmDialog.setOkButton(okButton); } dialogContent.add(controlsPanel); dialogContent.setCellHorizontalAlignment(controlsPanel, PHorizontalAlignment.ALIGN_CENTER); dialogContent.setCellHorizontalAlignment(content, PHorizontalAlignment.ALIGN_CENTER); confirmDialog.setCaption(windowCaption); confirmDialog.setWidget(dialogContent); return confirmDialog; } @Override public void ensureDebugId(final String debugID) { super.ensureDebugId(debugID); enrichEnsureDebugID(); } protected void setOkButton(final PButton okButton) { this.okButton = okButton; enrichEnsureDebugID(); } protected void setCancelButton(final PButton cancelButton) { this.cancelButton = cancelButton; enrichEnsureDebugID(); } protected void enrichEnsureDebugID() { if (okButton != null) okButton.ensureDebugId(getDebugID() + "[ok]"); if (cancelButton != null) cancelButton.ensureDebugId(getDebugID() + "[cancel]"); } }