de.swm.gwt.client.exception.MessagingUncaughtExceptionHandler Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of swm-gwt-client Show documentation
Show all versions of swm-gwt-client Show documentation
Plain GWT Swm erweiterungen, auch zur benutzung in mobilen Geraeten
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();
}
}
}