com.premiumminds.webapp.wicket.ConfirmationDialogModal.java Source code

Java tutorial

Introduction

Here is the source code for com.premiumminds.webapp.wicket.ConfirmationDialogModal.java

Source

/**
 * Copyright (C) 2014 Premium Minds.
 *
 * This file is part of pm-wicket-utils.
 *
 * pm-wicket-utils is free software: you can redistribute it and/or modify it under
 * the terms of the GNU Lesser General Public License as published by the Free
 * Software Foundation, either version 3 of the License, or (at your option) any
 * later version.
 *
 * pm-wicket-utils is distributed in the hope that it will be useful, but WITHOUT ANY
 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
 * A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more
 * details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with pm-wicket-utils. If not, see <http://www.gnu.org/licenses/>.
 */
package com.premiumminds.webapp.wicket;

import org.apache.wicket.ajax.AjaxRequestTarget;
import org.apache.wicket.ajax.markup.html.AjaxFallbackLink;
import org.apache.wicket.extensions.ajax.markup.html.modal.ModalWindow;
import org.apache.wicket.markup.html.WebMarkupContainer;
import org.apache.wicket.markup.html.basic.Label;
import org.apache.wicket.markup.html.panel.Panel;
import org.apache.wicket.util.io.IClusterable;

public class ConfirmationDialogModal extends ModalWindow {
    private static final long serialVersionUID = 3690754099561035011L;

    public enum Result {
        OK, CANCELED
    };

    private EventHandler eventHandler;

    @SuppressWarnings("serial")
    public ConfirmationDialogModal(String id) {
        super(id);
        setResizable(false);
        setHeightUnit("px");
        setWidthUnit("px");
        setWindowClosedCallback(new ModalWindow.WindowClosedCallback() {
            public void onClose(AjaxRequestTarget target) {
                confirmed(target, Result.CANCELED);
            }
        });
    }

    private void confirmed(AjaxRequestTarget target, Result result) {
        if (eventHandler != null)
            eventHandler.onConfirm(target, result);
    }

    public void show(String title, String message, String verb, AjaxRequestTarget target,
            EventHandler eventHandler) {
        setContent(new ConfirmPanel(getContentId(), message, verb));
        setTitle(title);

        this.eventHandler = eventHandler;

        show(target);
    }

    @SuppressWarnings("serial")
    private class ConfirmPanel extends Panel {

        public ConfirmPanel(String id, String message, String verb) {
            super(id);

            add(new Label("message", message));
            add(new AjaxFallbackLink<Void>("noButton") {
                @Override
                public void onClick(AjaxRequestTarget target) {
                    ConfirmationDialogModal.this.close(target);
                    confirmed(target, Result.CANCELED);
                }
            }.add(new Label("noLbl", "Cancelar")));
            WebMarkupContainer yesButton = new AjaxFallbackLink<Void>("yesButton") {
                @Override
                public void onClick(AjaxRequestTarget target) {
                    ConfirmationDialogModal.this.close(target);
                    confirmed(target, Result.OK);
                }
            };
            yesButton.add(new Label("okLbl", verb));

            add(yesButton);
        }
    }

    public static interface EventHandler extends IClusterable {
        public void onConfirm(AjaxRequestTarget target, Result result);
    }
}