nl.strohalm.cyclos.mobile.client.ui.widgets.LoadingPopup.java Source code

Java tutorial

Introduction

Here is the source code for nl.strohalm.cyclos.mobile.client.ui.widgets.LoadingPopup.java

Source

/*
This file is part of Cyclos (www.cyclos.org).
A project of the Social Trade Organisation (www.socialtrade.org).
    
Cyclos is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
    
Cyclos 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 General Public License for more details.
    
You should have received a copy of the GNU General Public License
along with Cyclos; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
    
 */
package nl.strohalm.cyclos.mobile.client.ui.widgets;

import nl.strohalm.cyclos.mobile.client.Messages;
import nl.strohalm.cyclos.mobile.client.ui.Icon;

import com.google.gwt.event.logical.shared.ResizeEvent;
import com.google.gwt.event.logical.shared.ResizeHandler;
import com.google.gwt.user.client.Timer;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.FlowPanel;
import com.google.gwt.user.client.ui.Label;
import com.google.gwt.user.client.ui.PopupPanel;

/**
 * A modal popup with a loading progress bar.
 */
public class LoadingPopup extends PopupPanel {

    public LoadingPopup() {

        setStyleName("popup");
        setGlassStyleName("mask");
        setGlassEnabled(true);

        FlowPanel container = new FlowPanel();

        Spinner spinner = new Spinner(Icon.PROCESS.image(), "loading-process");
        spinner.setCustomRotation(12, 30, 80);
        spinner.startSpinner();

        Label loadingText = new Label(Messages.Accessor.get().loadingConfiguration());
        loadingText.addStyleName("loading-text");

        container.add(spinner);
        container.add(loadingText);

        // Adjust prompt dialog
        Window.addResizeHandler(new ResizeHandler() {
            Timer resizeTimer = new Timer() {
                @Override
                public void run() {
                    if (isShowing()) {
                        center();
                    }
                }
            };

            @Override
            public void onResize(ResizeEvent event) {
                resizeTimer.schedule(100);
            }
        });

        add(container);
    }

    /**
     * Displays the popup centered
     */
    public void display() {
        center();
    }

}