/*
 * Copyright
 *   2008 axYus - www.axyus.com
 *   2008 C.Bosquet - charles.bosquet@axyus.com
 *
 * This file is part of XEMELIOS.
 *
 * XEMELIOS 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.
 *
 * XEMELIOS 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 XEMELIOS; if not, write to the Free Software
 * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
 */
package fr.gouv.finances.dgfip.xemelios.web.gwt.client;

import com.google.gwt.core.client.EntryPoint;
import com.google.gwt.core.client.GWT;
import com.google.gwt.user.client.Window;
import com.google.gwt.user.client.ui.RootPanel;
import fr.gouv.finances.dgfip.xemelios.web.gwt.client.utils.DoneListener;
import fr.gouv.finances.dgfip.xemelios.web.gwt.client.widget.search.SearchWidget;

/** 
 * @author CBO
 */
public class CriteriaBuilderEntryPoint implements EntryPoint {

    static private SearchWidget searchWidget;
    private String documentId;
    private String etatId;
    private String elementId;

    public void onModuleLoad() {
        GWT.setUncaughtExceptionHandler(new GWT.UncaughtExceptionHandler() {

            public void onUncaughtException(Throwable throwable) {
                String text = "Une erreur est survenue: ";
                while (throwable != null) {
                    StackTraceElement[] stackTraceElements = throwable.getStackTrace();
                    text += new String(throwable.toString() + "\n");
                    for (int i = 0; i < stackTraceElements.length; i++) {
                        text += "    at " + stackTraceElements[i] + "\n";
                    }
                    throwable = throwable.getCause();
                    if (throwable != null) {
                        text += "Caused by: ";
                    }
                }
                Window.alert(text);
            }
        });
        this.documentId = RootPanel.get("criteriaContainer").getElement().getAttribute("documentId");
        this.etatId = RootPanel.get("criteriaContainer").getElement().getAttribute("etatId");
        this.elementId = RootPanel.get("criteriaContainer").getElement().getAttribute("elementId");
        CriteriaBuilderEntryPoint.searchWidget = new SearchWidget();
        searchWidget.init(documentId, etatId, elementId, new DoneListener<Object>() {

            public void done(Object nullObject) {
                RootPanel.get("criteriaContainer").add(searchWidget);
            }
        });
    }

}
