nz.org.winters.appspot.acrareporter.client.ViewErrorReports.java Source code

Java tutorial

Introduction

Here is the source code for nz.org.winters.appspot.acrareporter.client.ViewErrorReports.java

Source

package nz.org.winters.appspot.acrareporter.client;

/*
 * Copyright 2013 Mathew Winters
    
 * 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.
 */
import nz.org.winters.appspot.acrareporter.client.ui.AppLoadingView;
import nz.org.winters.appspot.acrareporter.client.ui.FrontPage;
import nz.org.winters.appspot.acrareporter.client.ui.Overview;
import nz.org.winters.appspot.acrareporter.client.ui.SignUp;
import nz.org.winters.appspot.acrareporter.shared.Configuration;
import nz.org.winters.appspot.acrareporter.shared.LoginInfo;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.storage.client.Storage;
import com.google.gwt.uibinder.client.UiBinder;
import com.google.gwt.uibinder.client.UiField;
import com.google.gwt.user.client.DOM;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.rpc.AsyncCallback;
import com.google.gwt.user.client.ui.RootLayoutPanel;
import com.google.gwt.user.client.ui.RootPanel;
import com.google.gwt.user.client.ui.SimplePanel;
import com.google.gwt.user.client.ui.Widget;

public class ViewErrorReports implements EntryPoint {

    private static ViewErrorReportsUiBinder uiBinder = GWT.create(ViewErrorReportsUiBinder.class);
    @UiField
    SimplePanel panel;

    interface ViewErrorReportsUiBinder extends UiBinder<Widget, ViewErrorReports> {
    }

    // public ViewErrorReports()
    // {
    //
    // initWidget(uiBinder.createAndBindUi(this));
    // }
    //
    // public ViewErrorReports(String firstName)
    // {
    // initWidget(uiBinder.createAndBindUi(this));
    //
    // }

    // private final RemoteDataServiceAsync remoteService = GWT.create(RemoteDataService.class);

    private LoginInfo loginInfo = null;

    // private boolean mSignup;

    // private VerticalPanel loginPanel = new VerticalPanel();
    // private Label loginLabel = new Label(
    // "Please sign in to your Google Account to access the Console.");
    // private Anchor sigCnInLink = new Anchor("Sign In");

    String getBaseURL() {
        String baseUrl = GWT.getHostPageBaseURL();
        if (!GWT.isProdMode()) {
            baseUrl = "http://127.0.0.1:8888/ACRAReporter.html?gwt.codesvr=127.0.0.1:9997";
        }
        return baseUrl;
    }

    public void onModuleLoad() {
        DOM.removeChild(RootPanel.getBodyElement(), DOM.getElementById("loading"));

        LoginServiceAsync loginService = GWT.create(LoginService.class);
        Window.enableScrolling(false);
        Window.setMargin("0px");

        // this little trick ensures that when using the debug instance locally that
        // the
        // login redirects work correctly..
        String baseUrl = getBaseURL();

        loginService.login(baseUrl, new AsyncCallback<LoginInfo>() {
            public void onFailure(Throwable error) {
                GWT.log("login onFailure: " + error.getMessage());
                handleError(error);
            }

            public void onSuccess(LoginInfo result) {
                loginInfo = result;
                // GWT.log("login url = " + loginInfo.getLoginUrl());
                if (loginInfo.isLoggedIn()) {
                    boolean signup = false;
                    if (Configuration.appUserMode == Configuration.UserMode.umMultipleSeperate) {
                        Storage stockStore = Storage.getLocalStorageIfSupported();
                        if (stockStore != null) {
                            if (stockStore.getItem("signup") != null) {
                                signup = stockStore.getItem("signup").equals(Boolean.toString(true));
                                stockStore.removeItem("signup");
                            }
                        }
                    }

                    if (signup) {
                        loadSignup();
                    } else if (loginInfo.getAppUserShared() != null) {
                        loadConsole();
                    } else {
                        Window.alert("Not a valid user");
                        Window.Location.replace(loginInfo.getLogoutUrl());
                    }
                } else if (Configuration.appUserMode == Configuration.UserMode.umMultipleSeperate) {
                    loadFrontPage();
                } else {
                    loadLogin(false);
                }
            }

        });

    }

    protected void loadSignup() {
        // RootLayoutPanel.get().add(
        new SignUp(loginInfo, new SignUp.Callback() {

            @Override
            public void finished() {
                Window.Location.replace(getBaseURL());
            }
        });
    }

    //  private void doLogout()
    //  {
    //    Window.Location.replace(loginInfo.getLogoutUrl());
    //  }

    private void loadFrontPage() {
        RootLayoutPanel.get().add(new FrontPage(new FrontPage.Callback() {

            @Override
            public void buttonWiki() {
                Window.Location.replace(Configuration.wikiURL);
            }

            @Override
            public void buttonSignUp() {
                loadLogin(true);

            }

            @Override
            public void buttonLogin() {
                loadLogin(false);

            }
        }));
    }

    private void loadLogin(boolean signup) {
        GWT.log("load login");
        // mSignup = signup;

        if (signup) {
            Storage stockStore = Storage.getLocalStorageIfSupported();
            if (stockStore != null) {
                stockStore.setItem("signup", Boolean.toString(signup));
            } else {
                Window.alert("HTML5 Storage Compatible Browser Required!");
            }
        }

        Window.Location.replace(loginInfo.getLoginUrl());
    }

    private void handleError(Throwable error) {
        Window.alert(error.getMessage());
        if (error instanceof NotLoggedInException) {
            Window.Location.replace(loginInfo.getLogoutUrl());
        }
    }

    private void loadConsole() {
        RootLayoutPanel.get().clear();
        RootLayoutPanel.get().add(uiBinder.createAndBindUi(this));

        // panel.add(new OldMainPage(loginInfo));
        panel.add(new Overview(loginInfo));
    }

    public void startLoading() {
        AppLoadingView.getInstance().start();

    }

    public void stopLoading() {
        AppLoadingView.getInstance().stop();
    }

    // @UiHandler("buttonLogout")
    // void onButtonLogoutClick(ClickEvent event)
    // {
    // if(Window.confirm("Logout of your google account?"))
    // {
    // Window.Location.replace(loginInfo.getLogoutUrl());
    // }
    // }

}