All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.swm.gwt.client.exception.MessagingUncaughtExceptionHandler Maven / Gradle / Ivy

The newest version!
package de.swm.gwt.client.exception;

import com.google.gwt.core.client.GWT;
import com.google.gwt.event.logical.shared.CloseEvent;
import com.google.gwt.event.logical.shared.CloseHandler;
import com.google.gwt.user.client.ui.PopupPanel;
import de.swm.gwt.client.widget.InfoDialog;


/**
 * Ein {@link com.google.gwt.core.client.GWT.UncaughtExceptionHandler}, der die Exception loggt,
 * dem User die Fehlermeldung mit allgemeinem Fehler
 * anzeigt und die Anwendung neu laedt. Man kann ihn auch
 * so konfigurieren, dass die Anwendung nicht neu geladen wird.
 *
 * @author Steiner.Christian
 * @author wiese.daniel 
* copyright (C) 2010, SWM Services GmbH S-IP-AN-EE */ public class MessagingUncaughtExceptionHandler implements GWT.UncaughtExceptionHandler { /** * Speichert, ob nach einer Exception die Anwendung neu geladen werden soll. * */ private final boolean reloadApplicationAfterException; /** * Speichert, ob ein Reload bereits gestartet wurde --> Damit der User den Fehlerdialog nicht mehrfach bekommt. * */ private boolean reloadStarted = false; /** * Erstellt einen {@link MessagingUncaughtExceptionHandler}. Die Anwendung wird im Fehlerfall neu geladen. */ public MessagingUncaughtExceptionHandler() { this(true); } /** * Erstellt einen {@link MessagingUncaughtExceptionHandler}. * * @param reloadApplicationAfterException * Gibt an, ob die Anwendung im Fehlerfall neu geladen werden soll. */ public MessagingUncaughtExceptionHandler(boolean reloadApplicationAfterException) { this.reloadApplicationAfterException = reloadApplicationAfterException; } /** * Behandelt eine unerwartete Exception. Zeigt Fehlermeldungen an und laedt die Anwendung ggf. neu. * * @param e die Exception */ public void onUncaughtException(Throwable e) { GWT.log("Uncaught exception caught", e); if (reloadApplicationAfterException) { showReloadDialog(); } else { showErrorDialog(); } } /** * Zeigt einen Fehlerdialog mit allgemeiner Fehlermeldung an. */ public void showErrorDialog() { InfoDialog dialog = new InfoDialog("Kritischer Fehler", "Ein kritischer Fehler ist aufgetreten."); dialog.center(); } /** * Zeigt einen Fehlerdialog mit allgemeiner Fehlermeldung an. Nach Ok des Users wird die Anwendung neu geladen. */ public synchronized void showReloadDialog() { if (!reloadStarted) { reloadStarted = true; InfoDialog dialog = new InfoDialog("Kritischer Fehler", "Ein kritischer Fehler ist aufgetreten. Die Anwendung wird neu geladen"); dialog.addCloseHandler(new CloseHandler() { @Override public void onClose(CloseEvent event) { ApplicationRedirecter.redirectToBase(); } }); dialog.center(); } } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy