Index: trunk/src/org/openstreetmap/josm/tools/BugReportExceptionHandler.java
===================================================================
--- trunk/src/org/openstreetmap/josm/tools/BugReportExceptionHandler.java	(revision 4606)
+++ trunk/src/org/openstreetmap/josm/tools/BugReportExceptionHandler.java	(revision 4607)
@@ -11,4 +11,5 @@
 import java.nio.ByteBuffer;
 
+import javax.swing.JCheckBox;
 import javax.swing.JLabel;
 import javax.swing.JOptionPane;
@@ -22,4 +23,9 @@
 import org.openstreetmap.josm.plugins.PluginHandler;
 
+import javax.swing.JPanel;
+import org.openstreetmap.josm.gui.ExtendedDialog;
+import org.openstreetmap.josm.tools.GBC;
+import java.awt.GridBagLayout;
+
 /**
  * An exception handler that asks the user to send a bug report.
@@ -30,4 +36,6 @@
 
     private static boolean handlingInProgress = false;
+    private static int exceptionCounter = 0;
+    private static boolean suppressExceptionDialogs = false;
 
     public void uncaughtException(Thread t, Throwable e) {
@@ -43,5 +51,8 @@
         if (handlingInProgress)
             return;                  // we do not handle secondary exceptions, this gets too messy
+        if (suppressExceptionDialogs)
+            return;
         handlingInProgress = true;
+        exceptionCounter++;
         try {
             e.printStackTrace();
@@ -66,7 +77,8 @@
                 // Then ask for submitting a bug report, for exceptions thrown from a plugin too
                 //
-                Object[] options = new String[]{tr("Do nothing"), tr("Report Bug")};
-                int answer = JOptionPane.showOptionDialog(
-                        Main.parent,
+                ExtendedDialog ed = new ExtendedDialog(Main.parent, tr("Unexpected Exception"), new String[] {tr("Do nothing"), tr("Report Bug")});
+                ed.setIcon(JOptionPane.ERROR_MESSAGE);
+                JPanel pnl = new JPanel(new GridBagLayout());
+                pnl.add(new JLabel(
                         "<html>"
                         + tr("An unexpected exception occurred.<br>" +
@@ -74,13 +86,17 @@
                                 "version of JOSM, please consider being kind and file a bug report."
                         )
-                        + "</html>",
-                        tr("Unexpected Exception"),
-                        JOptionPane.YES_NO_OPTION,
-                        JOptionPane.ERROR_MESSAGE,
-                        null,
-                        options, options[0]
-                );
-                if (answer != 1)  return;
-
+                        + "</html>"), GBC.eol());
+                JCheckBox cbSuppress = null;
+                if (exceptionCounter > 1) {
+                    cbSuppress = new JCheckBox(tr("Suppress further error dialogs for this session."));
+                    pnl.add(cbSuppress, GBC.eol());
+                }
+                ed.setContent(pnl);
+                ed.showDialog();
+                if (cbSuppress != null && cbSuppress.isSelected()) {
+                    suppressExceptionDialogs = true;
+                }
+                if (ed.getValue() != 2) return;
+                
                 try {
                     final int maxlen = 6000;
