diff --git a/trunk/src/com/jpexs/decompiler/flash/gui/ErrorLogFrame.java b/trunk/src/com/jpexs/decompiler/flash/gui/ErrorLogFrame.java index cc23572cf..7e2372ca2 100644 --- a/trunk/src/com/jpexs/decompiler/flash/gui/ErrorLogFrame.java +++ b/trunk/src/com/jpexs/decompiler/flash/gui/ErrorLogFrame.java @@ -88,109 +88,115 @@ public class ErrorLogFrame extends AppFrame { } private void log(final Level level, final String msg, final String detail) { - JPanel pan = new JPanel(); - pan.setBackground(Color.white); - pan.setLayout(new ListLayout()); - - JComponent detailComponent; - if (detail == null) { - detailComponent = null; - } else { - final JTextArea detailTextArea = new JTextArea(detail); - detailTextArea.setEditable(false); - detailTextArea.setOpaque(false); - detailTextArea.setFont(new JLabel().getFont()); - detailTextArea.setBackground(Color.white); - detailComponent = detailTextArea; - } - JPanel header = new JPanel(); - header.setLayout(new BoxLayout(header, BoxLayout.X_AXIS)); - header.setBackground(Color.white); - - SimpleDateFormat format = new SimpleDateFormat("dd/MM/YYYY HH:mm:ss"); - final String dateStr = format.format(new Date()); - - JToggleButton copyButton = new JToggleButton(View.getIcon("copy16")); - copyButton.setFocusPainted(false); - copyButton.setBorderPainted(false); - copyButton.setFocusable(false); - copyButton.setContentAreaFilled(false); - copyButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); - copyButton.setMargin(new Insets(2, 2, 2, 2)); - copyButton.setToolTipText(translate("copy")); - copyButton.addActionListener(new ActionListener() { + View.execInEventDispatch(new Runnable() { @Override - public void actionPerformed(ActionEvent e) { - Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); - StringSelection stringSelection = new StringSelection(dateStr + " " + level.toString() + " " + msg + "\r\n" + detail); - clipboard.setContents(stringSelection, null); + public void run() { + JPanel pan = new JPanel(); + pan.setBackground(Color.white); + pan.setLayout(new ListLayout()); + + JComponent detailComponent; + if (detail == null) { + detailComponent = null; + } else { + final JTextArea detailTextArea = new JTextArea(detail); + detailTextArea.setEditable(false); + detailTextArea.setOpaque(false); + detailTextArea.setFont(new JLabel().getFont()); + detailTextArea.setBackground(Color.white); + detailComponent = detailTextArea; + } + JPanel header = new JPanel(); + header.setLayout(new BoxLayout(header, BoxLayout.X_AXIS)); + header.setBackground(Color.white); + + SimpleDateFormat format = new SimpleDateFormat("dd/MM/YYYY HH:mm:ss"); + final String dateStr = format.format(new Date()); + + JToggleButton copyButton = new JToggleButton(View.getIcon("copy16")); + copyButton.setFocusPainted(false); + copyButton.setBorderPainted(false); + copyButton.setFocusable(false); + copyButton.setContentAreaFilled(false); + copyButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); + copyButton.setMargin(new Insets(2, 2, 2, 2)); + copyButton.setToolTipText(translate("copy")); + copyButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard(); + StringSelection stringSelection = new StringSelection(dateStr + " " + level.toString() + " " + msg + "\r\n" + detail); + clipboard.setContents(stringSelection, null); + } + }); + + final JToggleButton expandButton = new JToggleButton(View.getIcon("expand16")); + expandButton.setFocusPainted(false); + expandButton.setBorderPainted(false); + expandButton.setFocusable(false); + expandButton.setContentAreaFilled(false); + expandButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); + expandButton.setMargin(new Insets(2, 2, 2, 2)); + expandButton.setToolTipText(translate("details")); + + final JScrollPane scrollPane; + if (detailComponent != null) { + scrollPane = new JScrollPane(detailComponent); + scrollPane.setAlignmentX(0f); + scrollPane.setMinimumSize(new Dimension(getWidth(), 500)); + } else { + scrollPane = null; + } + + + if (detailComponent != null) { + expandButton.addActionListener(new ActionListener() { + @Override + public void actionPerformed(ActionEvent e) { + scrollPane.setVisible(expandButton.isSelected()); + revalidate(); + repaint(); + } + }); + } + + + + JLabel dateLabel = new JLabel(dateStr); + dateLabel.setPreferredSize(new Dimension(140, 25)); + dateLabel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); + header.add(dateLabel); + + + + JLabel levelLabel = new JLabel(level.getName()); + levelLabel.setPreferredSize(new Dimension(75, 25)); + levelLabel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); + header.add(levelLabel); + JTextArea msgLabel = new JTextArea(msg); + msgLabel.setEditable(false); + msgLabel.setOpaque(false); + msgLabel.setFont(levelLabel.getFont()); + + msgLabel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); + header.add(msgLabel); + header.setAlignmentX(0f); + if (detailComponent != null) { + header.add(expandButton); + } + header.add(copyButton); + pan.add(header); + if (detailComponent != null) { + pan.add(scrollPane); + scrollPane.setVisible(false); + } + pan.setAlignmentX(0f); + logView.add(pan); + revalidate(); + repaint(); } }); - final JToggleButton expandButton = new JToggleButton(View.getIcon("expand16")); - expandButton.setFocusPainted(false); - expandButton.setBorderPainted(false); - expandButton.setFocusable(false); - expandButton.setContentAreaFilled(false); - expandButton.setCursor(Cursor.getPredefinedCursor(Cursor.HAND_CURSOR)); - expandButton.setMargin(new Insets(2, 2, 2, 2)); - expandButton.setToolTipText(translate("details")); - - final JScrollPane scrollPane; - if (detailComponent != null) { - scrollPane = new JScrollPane(detailComponent); - scrollPane.setAlignmentX(0f); - scrollPane.setMinimumSize(new Dimension(getWidth(), 500)); - } else { - scrollPane = null; - } - - - if (detailComponent != null) { - expandButton.addActionListener(new ActionListener() { - @Override - public void actionPerformed(ActionEvent e) { - scrollPane.setVisible(expandButton.isSelected()); - revalidate(); - repaint(); - } - }); - } - - - - JLabel dateLabel = new JLabel(dateStr); - dateLabel.setPreferredSize(new Dimension(140, 25)); - dateLabel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); - header.add(dateLabel); - - - - JLabel levelLabel = new JLabel(level.getName()); - levelLabel.setPreferredSize(new Dimension(75, 25)); - levelLabel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); - header.add(levelLabel); - JTextArea msgLabel = new JTextArea(msg); - msgLabel.setEditable(false); - msgLabel.setOpaque(false); - msgLabel.setFont(levelLabel.getFont()); - - msgLabel.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5)); - header.add(msgLabel); - header.setAlignmentX(0f); - if (detailComponent != null) { - header.add(expandButton); - } - header.add(copyButton); - pan.add(header); - if (detailComponent != null) { - pan.add(scrollPane); - scrollPane.setVisible(false); - } - pan.setAlignmentX(0f); - logView.add(pan); - revalidate(); - repaint(); } public void log(Level level, String msg) { @@ -199,7 +205,9 @@ public class ErrorLogFrame extends AppFrame { public void log(Level level, String msg, Throwable ex) { StringWriter sw = new StringWriter(); - ex.printStackTrace(new PrintWriter(sw)); + if (ex != null) { + ex.printStackTrace(new PrintWriter(sw)); + } log(level, msg, sw.toString()); } }