[Schmitzm-commits] r861 - trunk/src/schmitzm/swing
scm-commit@wald.intevation.org
scm-commit at wald.intevation.org
Sat May 22 00:01:14 CEST 2010
Author: alfonx
Date: 2010-05-22 00:01:13 +0200 (Sat, 22 May 2010)
New Revision: 861
Modified:
trunk/src/schmitzm/swing/ExceptionDialog.java
Log:
Made ExceptionDialog.show(...) NOT create a Dialog if running in headless environments. In headless environments, the exception is printed to console.
if (GraphicsEnvironment.isHeadless())
err.printStackTrace();
else
...
Modified: trunk/src/schmitzm/swing/ExceptionDialog.java
===================================================================
--- trunk/src/schmitzm/swing/ExceptionDialog.java 2010-05-21 15:16:06 UTC (rev 860)
+++ trunk/src/schmitzm/swing/ExceptionDialog.java 2010-05-21 22:01:13 UTC (rev 861)
@@ -32,6 +32,7 @@
import java.awt.BorderLayout;
import java.awt.Component;
import java.awt.Frame;
+import java.awt.GraphicsEnvironment;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
@@ -46,232 +47,294 @@
import schmitzm.lang.LangUtil;
/**
- * Diese Klasse stellt eine modale Fehler-Meldung dar. Diese besteht neben
- * einer Meldung aus einem Text-Feld, in dem der StackTrace des Fehlers
- * angezeigt wird.
- * @author <a href="mailto:martin.schmitz at koeln.de">Martin Schmitz</a> (University of Bonn/Germany)
+ * Diese Klasse stellt eine modale Fehler-Meldung dar. Diese besteht neben einer
+ * Meldung aus einem Text-Feld, in dem der StackTrace des Fehlers angezeigt
+ * wird.
+ *
+ * @author <a href="mailto:martin.schmitz at koeln.de">Martin Schmitz</a>
+ * (University of Bonn/Germany)
* @version 1.0
*/
public class ExceptionDialog extends JDialog {
- /** Speichert den angezeigten Fehler. */
- protected Throwable err = null;
- /** Label in dem die Meldung angezeigt wird. */
- protected JLabel messageLabel = null;
- /** Button um den Dialog zu schliessen. */
- protected JButton okButton = null;
- /** Button um Details anzuzeigen. */
- protected JToggleButton detailsButton = null;
- /** Button um die Exception in die Zwischenablage zu kopieren. */
- protected JButton copyToClipboardButton = null;
- /** Button um die Exception auf die Console zu kopieren. */
- protected JButton copyToConsoleButton = null;
- /** Bereich, in dem die Details angezeigt werden. */
- protected JTextArea detailsTextArea = null;
- /** ScrollPane, in dem sich die TextArea fuer die Details befinden. */
- protected JScrollPane detailsScrollPane = null;
- /** Verbindung zwischen StackTrace-PrintStream und TextArea*/
- private TextAreaPrintStream detailsPrintStream= null;
+ /** Speichert den angezeigten Fehler. */
+ protected Throwable err = null;
+ /** Label in dem die Meldung angezeigt wird. */
+ protected JLabel messageLabel = null;
+ /** Button um den Dialog zu schliessen. */
+ protected JButton okButton = null;
+ /** Button um Details anzuzeigen. */
+ protected JToggleButton detailsButton = null;
+ /** Button um die Exception in die Zwischenablage zu kopieren. */
+ protected JButton copyToClipboardButton = null;
+ /** Button um die Exception auf die Console zu kopieren. */
+ protected JButton copyToConsoleButton = null;
+ /** Bereich, in dem die Details angezeigt werden. */
+ protected JTextArea detailsTextArea = null;
+ /** ScrollPane, in dem sich die TextArea fuer die Details befinden. */
+ protected JScrollPane detailsScrollPane = null;
+ /** Verbindung zwischen StackTrace-PrintStream und TextArea */
+ private TextAreaPrintStream detailsPrintStream = null;
- /**
- * Erzeugt einen neuen Fehler-Dialog. Dem Dialog wird zunaechst noch keine
- * Fehlermeldung zugeordnet.
- * @param parent uebergeordnetes Fenster (kann <code>null</code> sein!)
- * @see #setError(Throwable)
- */
- public ExceptionDialog(Component parent) {
- this(parent,null,null,null);
- }
+ /**
+ * Erzeugt einen neuen Fehler-Dialog. Dem Dialog wird zunaechst noch keine
+ * Fehlermeldung zugeordnet.
+ *
+ * @param parent
+ * uebergeordnetes Fenster (kann <code>null</code> sein!)
+ * @see #setError(Throwable)
+ */
+ public ExceptionDialog(Component parent) {
+ this(parent, null, null, null);
+ }
- /**
- * Erzeugt einen neuen Fehler-Dialog. Der Dialog wird relativ zum Parent-Fenster
- * zentriert.
- * @param parent uebergeordnetes Fenster (kann <code>null</code> sein!)
- * @param err darzustellender Fehler
- */
- public ExceptionDialog(Component parent, Throwable err) {
- this(parent,err,null,null);
- }
+ /**
+ * Erzeugt einen neuen Fehler-Dialog. Der Dialog wird relativ zum
+ * Parent-Fenster zentriert.
+ *
+ * @param parent
+ * uebergeordnetes Fenster (kann <code>null</code> sein!)
+ * @param err
+ * darzustellender Fehler
+ */
+ public ExceptionDialog(Component parent, Throwable err) {
+ this(parent, err, null, null);
+ }
- /**
- * Erzeugt einen neuen Fehler-Dialog. Der Dialog wird relativ zum Parent-Fenster
- * zentriert.
- * @param parent uebergeordnetes Fenster (kann <code>null</code> sein!)
- * @param err darzustellender Fehler
- * @param title Titel fuer das Fenster (kann <code>null</code> sein!)
- * @param errMessage Meldung, die zu dem Fehler angezeigt angezeigt wird
- * (kann <code>null</code> sein!)
- */
- public ExceptionDialog(Component parent, Throwable err, String title, String errMessage) {
- this(parent,err,title,errMessage,false);
- }
-
- /**
- * Erzeugt einen neuen Fehler-Dialog. Der Dialog wird relativ zum Parent-Fenster
- * zentriert.
- * @param parent uebergeordnetes Fenster (kann <code>null</code> sein!)
- * @param err darzustellender Fehler
- * @param title Titel fuer das Fenster (kann <code>null</code> sein!)
- * @param errMessage Meldung, die zu dem Fehler angezeigt angezeigt wird
- * (kann <code>null</code> sein!)
- * @param showDetails wenn {@code true} werden die Details initial angezeigt
- */
- public ExceptionDialog(Component parent, Throwable err, String title, String errMessage, boolean showDetails) {
- super((Frame)null,true);
- if ( err != null && (title==null || title.trim().equals("")) )
- title = err.getClass().getSimpleName();
- if ( err != null && (errMessage==null || errMessage.trim().equals("")) )
- errMessage = err.getMessage();
+ /**
+ * Erzeugt einen neuen Fehler-Dialog. Der Dialog wird relativ zum
+ * Parent-Fenster zentriert.
+ *
+ * @param parent
+ * uebergeordnetes Fenster (kann <code>null</code> sein!)
+ * @param err
+ * darzustellender Fehler
+ * @param title
+ * Titel fuer das Fenster (kann <code>null</code> sein!)
+ * @param errMessage
+ * Meldung, die zu dem Fehler angezeigt angezeigt wird (kann
+ * <code>null</code> sein!)
+ */
+ public ExceptionDialog(Component parent, Throwable err, String title,
+ String errMessage) {
+ this(parent, err, title, errMessage, false);
+ }
- // Vorlagen-Dialog erzeugen
- this.err = err;
- this.messageLabel = new JLabel(errMessage);
- this.okButton = new JButton( SwingUtil.RESOURCE.getString("Ok") );
- this.copyToConsoleButton = new JButton( SwingUtil.RESOURCE.getString("ExceptionDialog.CopyToConsole") );
- this.copyToClipboardButton = new JButton( SwingUtil.RESOURCE.getString("ExceptionDialog.CopyToClipboard") );
- this.detailsButton = new JToggleButton( SwingUtil.RESOURCE.getString("Details"), showDetails );
- this.detailsTextArea = new JTextArea(10,60);
- this.detailsTextArea.setEditable(false);
- this.detailsPrintStream = new TextAreaPrintStream(detailsTextArea);
- this.detailsScrollPane = new JScrollPane(detailsTextArea);
- this.detailsScrollPane.setVisible(showDetails);
- this.setError(err);
- JOptionPane pane = new JOptionPane(
- messageLabel,
- JOptionPane.ERROR_MESSAGE,
- JOptionPane.DEFAULT_OPTION,
- null,
- new Object[] {okButton, detailsButton, copyToConsoleButton, copyToClipboardButton}
- );
- JDialog dialog = pane.createDialog(parent,title);
+ /**
+ * Erzeugt einen neuen Fehler-Dialog. Der Dialog wird relativ zum
+ * Parent-Fenster zentriert.
+ *
+ * @param parent
+ * uebergeordnetes Fenster (kann <code>null</code> sein!)
+ * @param err
+ * darzustellender Fehler
+ * @param title
+ * Titel fuer das Fenster (kann <code>null</code> sein!)
+ * @param errMessage
+ * Meldung, die zu dem Fehler angezeigt angezeigt wird (kann
+ * <code>null</code> sein!)
+ * @param showDetails
+ * wenn {@code true} werden die Details initial angezeigt
+ */
+ public ExceptionDialog(Component parent, Throwable err, String title,
+ String errMessage, boolean showDetails) {
+ super((Frame) null, true);
+ if (err != null && (title == null || title.trim().equals("")))
+ title = err.getClass().getSimpleName();
+ if (err != null && (errMessage == null || errMessage.trim().equals("")))
+ errMessage = err.getMessage();
- // Dialog nach Vorlage initialisieren
- this.setTitle( dialog.getTitle() );
- this.setAlwaysOnTop(true); // Fehler soll auch oberhalb von "alwaysOnTop"-
- // Komponenten erscheinen
- this.getContentPane().setLayout(new BorderLayout());
- this.getContentPane().add(dialog.getContentPane(), BorderLayout.NORTH);
- this.getContentPane().add(detailsScrollPane, BorderLayout.CENTER);
-// this.setDefaultCloseOperation( DO_NOTHING_ON_CLOSE );
- this.okButton.addActionListener( new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- setVisible(false);
- }
- } );
- this.detailsButton.addActionListener( new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- detailsScrollPane.setVisible( detailsButton.isSelected() );
- pack();
- }
- } );
- this.copyToClipboardButton.addActionListener( new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- LangUtil.copyToClipboard( detailsTextArea.getText() );
- }
- } );
- this.copyToConsoleButton.addActionListener( new ActionListener() {
- public void actionPerformed(ActionEvent e) {
- if ( getError() != null )
- getError().printStackTrace();
- }
- } );
+ // Vorlagen-Dialog erzeugen
+ this.err = err;
+ this.messageLabel = new JLabel(errMessage);
+ this.okButton = new JButton(SwingUtil.RESOURCE.getString("Ok"));
+ this.copyToConsoleButton = new JButton(SwingUtil.RESOURCE
+ .getString("ExceptionDialog.CopyToConsole"));
+ this.copyToClipboardButton = new JButton(SwingUtil.RESOURCE
+ .getString("ExceptionDialog.CopyToClipboard"));
+ this.detailsButton = new JToggleButton(SwingUtil.RESOURCE
+ .getString("Details"), showDetails);
+ this.detailsTextArea = new JTextArea(10, 60);
+ this.detailsTextArea.setEditable(false);
+ this.detailsPrintStream = new TextAreaPrintStream(detailsTextArea);
+ this.detailsScrollPane = new JScrollPane(detailsTextArea);
+ this.detailsScrollPane.setVisible(showDetails);
+ this.setError(err);
+ JOptionPane pane = new JOptionPane(messageLabel,
+ JOptionPane.ERROR_MESSAGE, JOptionPane.DEFAULT_OPTION, null,
+ new Object[] { okButton, detailsButton, copyToConsoleButton,
+ copyToClipboardButton });
+ JDialog dialog = pane.createDialog(parent, title);
- pack();
- SwingUtil.setRelativeFramePosition(this,SwingUtil.getParentWindow(parent),0.5,0.5);
- }
+ // Dialog nach Vorlage initialisieren
+ this.setTitle(dialog.getTitle());
+ this.setAlwaysOnTop(true); // Fehler soll auch oberhalb von
+ // "alwaysOnTop"-
+ // Komponenten erscheinen
+ this.getContentPane().setLayout(new BorderLayout());
+ this.getContentPane().add(dialog.getContentPane(), BorderLayout.NORTH);
+ this.getContentPane().add(detailsScrollPane, BorderLayout.CENTER);
+ // this.setDefaultCloseOperation( DO_NOTHING_ON_CLOSE );
+ this.okButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ setVisible(false);
+ }
+ });
+ this.detailsButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ detailsScrollPane.setVisible(detailsButton.isSelected());
+ pack();
+ }
+ });
+ this.copyToClipboardButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ LangUtil.copyToClipboard(detailsTextArea.getText());
+ }
+ });
+ this.copyToConsoleButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent e) {
+ if (getError() != null)
+ getError().printStackTrace();
+ }
+ });
- /**
- * Liefert die angezeigte Fehlermeldung.
- */
- public String getMessage() {
- return messageLabel.getText();
- }
+ pack();
+ SwingUtil.setRelativeFramePosition(this, SwingUtil
+ .getParentWindow(parent), 0.5, 0.5);
+ }
- /**
- * Setzt die anzuzeigende Fehlermeldung.
- */
- public void setMessage(String mess) {
- if ( mess == null || mess.trim().equals("") )
- mess = getError() != null ? getError().getMessage() : SwingUtil.RESOURCE.getString("Error");
- messageLabel.setText(mess);
- }
+ /**
+ * Liefert die angezeigte Fehlermeldung.
+ */
+ public String getMessage() {
+ return messageLabel.getText();
+ }
- /**
- * Liefert den angezeigten Fehler.
- */
- public Throwable getError() {
- return err;
- }
+ /**
+ * Setzt die anzuzeigende Fehlermeldung.
+ */
+ public void setMessage(String mess) {
+ if (mess == null || mess.trim().equals(""))
+ mess = getError() != null ? getError().getMessage()
+ : SwingUtil.RESOURCE.getString("Error");
+ messageLabel.setText(mess);
+ }
- /**
- * Setzt den angezeigten Fehler.
- */
- public void setError(Throwable err) {
- this.err = err;
- if ( err == null )
- detailsTextArea.setText("");
- else
- err.printStackTrace(detailsPrintStream);
- detailsTextArea.select(0,0);
- }
+ /**
+ * Liefert den angezeigten Fehler.
+ */
+ public Throwable getError() {
+ return err;
+ }
- /**
- * Zeigt einen Fehler-Dialog an.
- * @param parent uebergeordnetes Fenster (kann <code>null</code> sein!)
- * @param err darzustellender Fehler
- * @param title Titel fuer das Fenster (kann <code>null</code> sein!)
- * @param errMessage Meldung, die zu dem Fehler angezeigt angezeigt wird
- * (kann <code>null</code> sein!)
- */
- public static void show(Component parent, Throwable err, String title, String errMessage) {
- new ExceptionDialog(parent,err,title,errMessage).setVisible(true);
- }
+ /**
+ * Setzt den angezeigten Fehler.
+ */
+ public void setError(Throwable err) {
+ this.err = err;
+ if (err == null)
+ detailsTextArea.setText("");
+ else
+ err.printStackTrace(detailsPrintStream);
+ detailsTextArea.select(0, 0);
+ }
- /**
- * Zeigt einen Fehler-Dialog an.
- * @param parent uebergeordnetes Fenster (kann <code>null</code> sein!)
- * @param err darzustellender Fehler
- */
- public static void show(Component parent, Throwable err) {
- new ExceptionDialog(parent,err).setVisible(true);
- }
+ /**
+ * Zeigt einen Fehler-Dialog an.
+ *
+ * @param parent
+ * uebergeordnetes Fenster (kann <code>null</code> sein!)
+ * @param err
+ * darzustellender Fehler
+ * @param title
+ * Titel fuer das Fenster (kann <code>null</code> sein!)
+ * @param errMessage
+ * Meldung, die zu dem Fehler angezeigt angezeigt wird (kann
+ * <code>null</code> sein!)
+ */
+ public static void show(Component parent, Throwable err, String title,
+ String errMessage) {
+ if (GraphicsEnvironment.isHeadless())
+ err.printStackTrace();
+ else
+ new ExceptionDialog(parent, err, title, errMessage)
+ .setVisible(true);
+ }
- /**
- * Zeigt einen Fehler-Dialog an.
- * @param err darzustellender Fehler
- */
- public static void show(Throwable err) {
- new ExceptionDialog(null,err).setVisible(true);
- }
+ /**
+ * Zeigt einen Fehler-Dialog an.
+ *
+ * @param parent
+ * uebergeordnetes Fenster (kann <code>null</code> sein!)
+ * @param err
+ * darzustellender Fehler
+ */
+ public static void show(Component parent, Throwable err) {
+ if (GraphicsEnvironment.isHeadless())
+ err.printStackTrace();
+ else
+ new ExceptionDialog(parent, err).setVisible(true);
+ }
- /**
- * Zeigt einen Fehler-Dialog an.
- * @param parent uebergeordnetes Fenster (kann <code>null</code> sein!)
- * @param err darzustellender Fehler
- * @param title Titel fuer das Fenster (kann <code>null</code> sein!)
- * @param errMessage Meldung, die zu dem Fehler angezeigt angezeigt wird
- * (kann <code>null</code> sein!)
- * @param showDetails wenn {@code true} werden die Details initial angezeigt
- */
- public static void show(Component parent, Throwable err, String title, String errMessage, boolean showDetails) {
- new ExceptionDialog(parent,err,title,errMessage,showDetails).setVisible(true);
- }
+ /**
+ * Zeigt einen Fehler-Dialog an.
+ *
+ * @param err
+ * darzustellender Fehler
+ */
+ public static void show(Throwable err) {
+ if (GraphicsEnvironment.isHeadless())
+ err.printStackTrace();
+ else
+ new ExceptionDialog(null, err).setVisible(true);
+ }
- /**
- * Zeigt einen Fehler-Dialog an.
- * @param parent uebergeordnetes Fenster (kann <code>null</code> sein!)
- * @param err darzustellender Fehler
- * @param showDetails wenn {@code true} werden die Details initial angezeigt
- */
- public static void show(Component parent, Throwable err, boolean showDetails) {
- show(parent,err,null,null,showDetails);
- }
+ /**
+ * Zeigt einen Fehler-Dialog an.
+ *
+ * @param parent
+ * uebergeordnetes Fenster (kann <code>null</code> sein!)
+ * @param err
+ * darzustellender Fehler
+ * @param title
+ * Titel fuer das Fenster (kann <code>null</code> sein!)
+ * @param errMessage
+ * Meldung, die zu dem Fehler angezeigt angezeigt wird (kann
+ * <code>null</code> sein!)
+ * @param showDetails
+ * wenn {@code true} werden die Details initial angezeigt
+ */
+ public static void show(Component parent, Throwable err, String title,
+ String errMessage, boolean showDetails) {
+ if (GraphicsEnvironment.isHeadless())
+ err.printStackTrace();
+ else
+ new ExceptionDialog(parent, err, title, errMessage, showDetails)
+ .setVisible(true);
+ }
- /**
- * Zeigt einen Fehler-Dialog an.
- * @param err darzustellender Fehler
- * @param showDetails wenn {@code true} werden die Details initial angezeigt
- */
- public static void show(Throwable err, boolean showDetails) {
- show(null,err,showDetails);
- }
+ /**
+ * Zeigt einen Fehler-Dialog an.
+ *
+ * @param parent
+ * uebergeordnetes Fenster (kann <code>null</code> sein!)
+ * @param err
+ * darzustellender Fehler
+ * @param showDetails
+ * wenn {@code true} werden die Details initial angezeigt
+ */
+ public static void show(Component parent, Throwable err, boolean showDetails) {
+ show(parent, err, null, null, showDetails);
+ }
+
+ /**
+ * Zeigt einen Fehler-Dialog an.
+ *
+ * @param err
+ * darzustellender Fehler
+ * @param showDetails
+ * wenn {@code true} werden die Details initial angezeigt
+ */
+ public static void show(Throwable err, boolean showDetails) {
+ show(null, err, showDetails);
+ }
}
More information about the Schmitzm-commits
mailing list