summaryrefslogtreecommitdiffstats
path: root/src/com/jogamp/opencl/util/ExceptionReporter.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/com/jogamp/opencl/util/ExceptionReporter.java')
-rw-r--r--src/com/jogamp/opencl/util/ExceptionReporter.java165
1 files changed, 165 insertions, 0 deletions
diff --git a/src/com/jogamp/opencl/util/ExceptionReporter.java b/src/com/jogamp/opencl/util/ExceptionReporter.java
new file mode 100644
index 0000000..17b92cc
--- /dev/null
+++ b/src/com/jogamp/opencl/util/ExceptionReporter.java
@@ -0,0 +1,165 @@
+/*
+ * Created on Sep 10, 2010, 6:12:26 PM
+ */
+
+package com.jogamp.opencl.util;
+
+import com.jogamp.common.JogampRuntimeException;
+import java.awt.Component;
+import java.awt.Desktop;
+import java.awt.Frame;
+import java.awt.event.ActionEvent;
+import java.awt.event.ActionListener;
+import java.io.IOException;
+import java.io.PrintWriter;
+import java.io.StringWriter;
+import java.io.Writer;
+import java.net.URI;
+import java.util.logging.Level;
+import java.util.logging.Logger;
+import javax.swing.GroupLayout;
+import javax.swing.GroupLayout.Alignment;
+import javax.swing.ImageIcon;
+import javax.swing.JButton;
+import javax.swing.JDialog;
+import javax.swing.JEditorPane;
+import javax.swing.JLabel;
+import javax.swing.JScrollPane;
+import javax.swing.JTextPane;
+import javax.swing.LayoutStyle.ComponentPlacement;
+import javax.swing.SwingConstants;
+import javax.swing.WindowConstants;
+
+/*
+ * Icon used in the dialog is from http://lazycrazy.deviantart.com/ released under the CC attibution license.
+ */
+
+/**
+ *
+ * @author Michael Bien
+ */
+public class ExceptionReporter extends JDialog {
+
+ public ExceptionReporter(Frame parent, boolean modal) {
+ super(parent, "Something went wrong", modal);
+ initComponents();
+ }
+
+ public static void appear(String string, JogampRuntimeException ex) {
+ ExceptionReporter reporter = new ExceptionReporter(null, true);
+ reporter.setLocationRelativeTo(null);
+ reporter.description.setText(string);
+
+ StringBuilder sb = new StringBuilder();
+ final Writer result = new StringWriter();
+ ex.printStackTrace(new PrintWriter(result));
+
+ sb.append("<pre>").append(result.toString()).append("</pre>");
+ reporter.messagePane.setText(sb.toString());
+ reporter.setVisible(true);
+
+ }
+
+ /** This method is called from within the constructor to
+ * initialize the form.
+ * WARNING: Do NOT modify this code. The content of this method is
+ * always regenerated by the Form Editor.
+ */
+ @SuppressWarnings("unchecked")
+ // <editor-fold defaultstate="collapsed" desc="Generated Code">//GEN-BEGIN:initComponents
+ private void initComponents() {
+ JLabel icon = new JLabel();
+ JButton reportButton = new JButton();
+ JButton okButton = new JButton();
+ JScrollPane jScrollPane1 = new JScrollPane();
+ messagePane = new JEditorPane();
+ JScrollPane jScrollPane2 = new JScrollPane();
+ description = new JTextPane();
+
+ setDefaultCloseOperation(WindowConstants.DISPOSE_ON_CLOSE);
+
+ icon.setIcon(new ImageIcon(getClass().getResource("/com/jogamp/opencl/util/64_35.png"))); // NOI18N
+
+ reportButton.setText("not at all. I file a bug!");
+ reportButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent evt) {
+ reportButtonActionPerformed(evt);
+ }
+ });
+
+ okButton.setText("understood");
+ okButton.addActionListener(new ActionListener() {
+ public void actionPerformed(ActionEvent evt) {
+ okButtonActionPerformed(evt);
+ }
+ });
+
+ messagePane.setContentType("text/html");
+ messagePane.setEditable(false);
+ jScrollPane1.setViewportView(messagePane);
+
+ description.setEditable(false);
+ description.setFocusable(false);
+ jScrollPane2.setViewportView(description);
+
+ GroupLayout layout = new GroupLayout(getContentPane());
+ getContentPane().setLayout(layout);
+ layout.setHorizontalGroup(
+ layout.createParallelGroup(Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(layout.createParallelGroup(Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addComponent(icon)
+ .addGap(18, 18, 18)
+ .addGroup(layout.createParallelGroup(Alignment.LEADING)
+ .addComponent(jScrollPane2, GroupLayout.DEFAULT_SIZE, 396, Short.MAX_VALUE)
+ .addComponent(jScrollPane1, GroupLayout.DEFAULT_SIZE, 396, Short.MAX_VALUE)))
+ .addGroup(Alignment.TRAILING, layout.createSequentialGroup()
+ .addComponent(okButton)
+ .addPreferredGap(ComponentPlacement.UNRELATED)
+ .addComponent(reportButton)))
+ .addContainerGap())
+ );
+
+ layout.linkSize(SwingConstants.HORIZONTAL, new Component[] {okButton, reportButton});
+
+ layout.setVerticalGroup(
+ layout.createParallelGroup(Alignment.LEADING)
+ .addGroup(layout.createSequentialGroup()
+ .addContainerGap()
+ .addGroup(layout.createParallelGroup(Alignment.LEADING)
+ .addComponent(icon)
+ .addGroup(layout.createSequentialGroup()
+ .addComponent(jScrollPane2, GroupLayout.PREFERRED_SIZE, GroupLayout.DEFAULT_SIZE, GroupLayout.PREFERRED_SIZE)
+ .addGap(4, 4, 4)
+ .addComponent(jScrollPane1, GroupLayout.DEFAULT_SIZE, 146, Short.MAX_VALUE)))
+ .addPreferredGap(ComponentPlacement.RELATED)
+ .addGroup(layout.createParallelGroup(Alignment.BASELINE)
+ .addComponent(reportButton)
+ .addComponent(okButton))
+ .addContainerGap())
+ );
+
+ pack();
+ }// </editor-fold>//GEN-END:initComponents
+
+ private void reportButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_reportButtonActionPerformed
+ try {
+ Desktop.getDesktop().browse(URI.create("http://www.jogamp.org/bugzilla/"));
+ } catch (IOException ex) {
+ Logger.getLogger(ExceptionReporter.class.getName()).log(Level.SEVERE, null, ex);
+ }
+ }//GEN-LAST:event_reportButtonActionPerformed
+
+ private void okButtonActionPerformed(ActionEvent evt) {//GEN-FIRST:event_okButtonActionPerformed
+ dispose();
+ }//GEN-LAST:event_okButtonActionPerformed
+
+
+ // Variables declaration - do not modify//GEN-BEGIN:variables
+ private JTextPane description;
+ private JEditorPane messagePane;
+ // End of variables declaration//GEN-END:variables
+
+}