org.jboss.ballroom.client.widgets.window.Feedback.java Source code

Java tutorial

Introduction

Here is the source code for org.jboss.ballroom.client.widgets.window.Feedback.java

Source

/*
 * JBoss, Home of Professional Open Source
 * Copyright 2011 Red Hat Inc. and/or its affiliates and other contributors
 * as indicated by the @author tags. All rights reserved.
 * See the copyright.txt in the distribution for a
 * full listing of individual contributors.
 *
 * This copyrighted material is made available to anyone wishing to use,
 * modify, copy, or redistribute it subject to the terms and conditions
 * of the GNU Lesser General Public License, v. 2.1.
 * This program is distributed in the hope that it will be useful, but WITHOUT A
 * 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,
 * v.2.1 along with this distribution; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
 * MA  02110-1301, USA.
 */

package org.jboss.ballroom.client.widgets.window;

import com.google.gwt.core.client.Scheduler;
import com.google.gwt.event.dom.client.ClickEvent;
import com.google.gwt.event.dom.client.ClickHandler;
import com.google.gwt.safehtml.shared.SafeHtml;
import com.google.gwt.safehtml.shared.SafeHtmlBuilder;
import com.google.gwt.user.client.ui.HTML;
import com.google.gwt.user.client.ui.PopupPanel;
import com.google.gwt.user.client.ui.VerticalPanel;
import com.google.gwt.user.client.ui.Widget;
import org.jboss.ballroom.client.I18n;

/**
 * Collection of feedback windows.
 * Info, Confirmation, Alert, etc.
 * @author Heiko Braun
 * @date 3/2/11
 */
public class Feedback {

    public static void confirm(String title, String message, final ConfirmationHandler handler) {
        final DefaultWindow window = new DefaultWindow(title);

        int width = 320;
        int height = 240;

        window.setWidth(width);
        window.setHeight(height);

        window.setGlassEnabled(true);

        VerticalPanel panel = new VerticalPanel();
        panel.setStyleName("default-window-content");

        HTML text = new HTML(message);
        text.getElement().setId("confirmation-message");
        panel.add(text);

        ClickHandler confirmHandler = new ClickHandler() {

            public void onClick(ClickEvent event) {
                handler.onConfirmation(true);
                window.hide();
            }
        };

        ClickHandler cancelHandler = new ClickHandler() {

            public void onClick(ClickEvent event) {
                handler.onConfirmation(false);
                window.hide();
            }
        };

        DialogueOptions options = new DialogueOptions(I18n.CONSTANTS.common_label_confirm(), confirmHandler,
                I18n.CONSTANTS.common_label_cancel(), cancelHandler);
        options.getSubmit().setAttribute("aria-describedby", "confirmation-message");

        Widget content = new WindowContentBuilder(panel, options).build();

        TrappedFocusPanel trap = new TrappedFocusPanel(content) {
            @Override
            protected void onAttach() {
                super.onAttach();
                Scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand() {
                    @Override
                    public void execute() {
                        getFocus().onFirstButton();
                    }
                });
            }
        };

        window.setWidget(trap);

        window.center();
    }

    @Deprecated
    public static void alert(String title, String message) {
        alert(title, new SafeHtmlBuilder().appendEscaped(message).toSafeHtml());
    }

    public static void alert(String title, SafeHtml message) {
        final DefaultWindow window = new DefaultWindow(title);

        int width = 320;
        int height = 240;

        window.setWidth(width);
        window.setHeight(height);

        window.setGlassEnabled(true);

        VerticalPanel panel = new VerticalPanel();
        panel.setStyleName("default-window-content");

        HTML text = new HTML(message);
        text.getElement().setId("alert-message");
        panel.add(text);

        ClickHandler confirmHandler = new ClickHandler() {

            public void onClick(ClickEvent event) {
                window.hide();
            }
        };

        DialogueOptions options = new DialogueOptions(I18n.CONSTANTS.common_label_confirm(), confirmHandler,
                I18n.CONSTANTS.common_label_cancel(), confirmHandler);
        options.getSubmit().setAttribute("aria-describedby", "alert-message");

        Widget content = new WindowContentBuilder(panel, options.showCancel(false)).build();

        TrappedFocusPanel trap = new TrappedFocusPanel(content) {
            @Override
            protected void onAttach() {
                super.onAttach();

                Scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand() {
                    @Override
                    public void execute() {
                        getFocus().onFirstButton();
                    }
                });

            }
        };

        window.setWidget(trap);

        window.center();
    }

    public static PopupPanel loading(String title, String message, final LoadingCallback callback) {

        final DefaultWindow window = new DefaultWindow(title);

        int width = 320;
        int height = 240;

        window.setWidth(width);
        window.setHeight(height);

        window.setGlassEnabled(true);

        VerticalPanel panel = new VerticalPanel();
        panel.setStyleName("default-window-content");

        HTML text = new HTML(message);
        text.getElement().setId("loading-message");
        panel.add(text);

        ClickHandler confirmHandler = new ClickHandler() {

            public void onClick(ClickEvent event) {
                window.hide();
            }
        };

        ClickHandler cancelHandler = new ClickHandler() {

            public void onClick(ClickEvent event) {
                callback.onCancel();
            }
        };

        //DialogueOptions options = new DialogueOptions("OK", confirmHandler, "Cancel", cancelHandler);

        Widget content = new WindowContentBuilder(panel, new HTML()).build();

        TrappedFocusPanel trap = new TrappedFocusPanel(content) {
            @Override
            protected void onAttach() {
                super.onAttach();
                Scheduler.get().scheduleDeferred(new Scheduler.ScheduledCommand() {
                    @Override
                    public void execute() {
                        getFocus().onFirstButton();
                    }
                });
            }
        };

        window.setWidget(trap);

        window.center();

        return window;
    }

    public interface LoadingCallback {
        void onCancel();
    }

    public interface ConfirmationHandler {
        void onConfirmation(boolean isConfirmed);
    }
}