From c3dc1a94f3f89751c5297fb55cd60ea975509d5f Mon Sep 17 00:00:00 2001 From: Roman Ivanov Date: Fri, 15 May 2015 13:23:17 -0700 Subject: [PATCH] Findbugs violation: resolve all violations from gui package. #925 --- config/findbugs-exclude.xml | 4 -- .../puppycrawl/tools/checkstyle/gui/Main.java | 34 ++++++++++- .../checkstyle/gui/ParseTreeInfoPanel.java | 58 ++++++++++++------- .../checkstyle/gui/TreeTableModelAdapter.java | 3 +- 4 files changed, 72 insertions(+), 27 deletions(-) diff --git a/config/findbugs-exclude.xml b/config/findbugs-exclude.xml index 70b6047c0..02fcb54dc 100644 --- a/config/findbugs-exclude.xml +++ b/config/findbugs-exclude.xml @@ -82,10 +82,6 @@ - - - - diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/gui/Main.java b/src/main/java/com/puppycrawl/tools/checkstyle/gui/Main.java index 7205c56c7..405140b37 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/gui/Main.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/gui/Main.java @@ -19,6 +19,7 @@ package com.puppycrawl.tools.checkstyle.gui; +import java.awt.*; import java.io.File; import javax.swing.JFrame; @@ -47,9 +48,10 @@ public class Main final File f = new File(args[0]); panel.openFile(f, frame); } - frame.pack(); frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); - frame.setVisible(true); + + Runnable runner = new FrameShower(frame); + EventQueue.invokeLater(runner); } /** @@ -66,4 +68,32 @@ public class Main frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE); frame.setVisible(true); } + + /** + * http://findbugs.sourceforge.net/bugDescriptions.html#SW_SWING_METHODS_INVOKED_IN_SWING_THREAD + */ + private static class FrameShower implements Runnable + { + /** + * frame + */ + final JFrame frame; + + /** + * contstructor + */ + public FrameShower(JFrame frame) + { + this.frame = frame; + } + + /** + * display a frame + */ + public void run() + { + frame.pack(); + frame.setVisible(true); + } + } } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/gui/ParseTreeInfoPanel.java b/src/main/java/com/puppycrawl/tools/checkstyle/gui/ParseTreeInfoPanel.java index f31dd860a..7f2ca2f1e 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/gui/ParseTreeInfoPanel.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/gui/ParseTreeInfoPanel.java @@ -30,15 +30,7 @@ import java.util.ArrayList; import java.util.List; import java.util.TooManyListenersException; -import javax.swing.AbstractAction; -import javax.swing.Action; -import javax.swing.JButton; -import javax.swing.JFileChooser; -import javax.swing.JOptionPane; -import javax.swing.JPanel; -import javax.swing.JScrollPane; -import javax.swing.JTextArea; -import javax.swing.SwingUtilities; +import javax.swing.*; import javax.swing.filechooser.FileFilter; import antlr.ANTLRException; @@ -59,7 +51,8 @@ public class ParseTreeInfoPanel extends JPanel { /** For Serialisation that will never happen. */ private static final long serialVersionUID = -4243405131202059043L; - private final ParseTreeModel parseTreeModel; + + private final transient ParseTreeModel parseTreeModel; private final JTextArea jTextArea; private File lastDirectory; private File currentFile; @@ -270,8 +263,7 @@ public class ParseTreeInfoPanel extends JPanel { setLayout(new BorderLayout()); - final DetailAST treeRoot = null; - parseTreeModel = new ParseTreeModel(treeRoot); + parseTreeModel = new ParseTreeModel(null); JTreeTable treeTable = new JTreeTable(parseTreeModel); final JScrollPane sp = new JScrollPane(treeTable); this.add(sp, BorderLayout.NORTH); @@ -308,14 +300,7 @@ public class ParseTreeInfoPanel extends JPanel private void showErrorDialog(final Component parent, final String msg) { - final Runnable showError = new Runnable() - { - @Override - public void run() - { - JOptionPane.showMessageDialog(parent, msg); - } - }; + final Runnable showError = new FrameShower(parent, msg); SwingUtilities.invokeLater(showError); } @@ -323,5 +308,38 @@ public class ParseTreeInfoPanel extends JPanel { return lines2position; } + + /** + * http://findbugs.sourceforge.net/bugDescriptions.html#SW_SWING_METHODS_INVOKED_IN_SWING_THREAD + */ + private static class FrameShower implements Runnable + { + /** + * frame + */ + final Component parent; + + /** + * frame + */ + final String msg; + + /** + * contstructor + */ + public FrameShower(Component parent, final String msg) + { + this.parent = parent; + this.msg = msg; + } + + /** + * display a frame + */ + public void run() + { + JOptionPane.showMessageDialog(parent, msg); + } + } } diff --git a/src/main/java/com/puppycrawl/tools/checkstyle/gui/TreeTableModelAdapter.java b/src/main/java/com/puppycrawl/tools/checkstyle/gui/TreeTableModelAdapter.java index e0f665166..398281d01 100644 --- a/src/main/java/com/puppycrawl/tools/checkstyle/gui/TreeTableModelAdapter.java +++ b/src/main/java/com/puppycrawl/tools/checkstyle/gui/TreeTableModelAdapter.java @@ -84,8 +84,9 @@ public class TreeTableModelAdapter extends AbstractTableModel { /** For Serialisation that will never happen. */ private static final long serialVersionUID = 8269213416115369275L; + private final JTree tree; - private final TreeTableModel treeTableModel; + private final transient TreeTableModel treeTableModel; public TreeTableModelAdapter(TreeTableModel treeTableModel, JTree tree) {