From 99e26a696ef54642b672f3d08eff962d80dd2738 Mon Sep 17 00:00:00 2001 From: Dale Anson Date: Tue, 8 Apr 2008 15:36:49 +0000 Subject: [PATCH] fix for jEdit bug 1937876, PMD plugin crashes when using certain custom rule sets. git-svn-id: https://pmd.svn.sourceforge.net/svnroot/pmd/trunk@5988 51baf565-9d33-0410-a72c-fc3788e3496d --- .../sourceforge/pmd/jedit/PMDOptionPane.java | 22 +++++++++++++------ 1 file changed, 15 insertions(+), 7 deletions(-) diff --git a/pmd-jedit/PMDPlugin/src/net/sourceforge/pmd/jedit/PMDOptionPane.java b/pmd-jedit/PMDPlugin/src/net/sourceforge/pmd/jedit/PMDOptionPane.java index 7948318583..22c9ae5b8a 100644 --- a/pmd-jedit/PMDPlugin/src/net/sourceforge/pmd/jedit/PMDOptionPane.java +++ b/pmd-jedit/PMDPlugin/src/net/sourceforge/pmd/jedit/PMDOptionPane.java @@ -17,6 +17,7 @@ import javax.swing.BorderFactory; import javax.swing.JCheckBox; import javax.swing.JComboBox; import javax.swing.JLabel; +import javax.swing.JOptionPane; import javax.swing.JPanel; import javax.swing.JScrollPane; import javax.swing.JTextArea; @@ -73,12 +74,17 @@ public class PMDOptionPane extends AbstractOptionPane implements OptionPane { // individual rules. Using the PROPAGATE_PRESERVING_UNCHECK checking mode // means the ruleset will be checked if one or more of the rules it contains // is checked. - tree = new CheckboxTree( rules.getRoot() ); - tree.getCheckingModel().setCheckingMode( TreeCheckingModel.CheckingMode.PROPAGATE_PRESERVING_UNCHECK ); - tree.setCheckingPaths( rules.getCheckingModel().getCheckingPaths() ); - tree.setRootVisible( false ); - tree.addMouseMotionListener( new MyMouseMotionAdapter() ); - rulesPanel.add( new JScrollPane( tree ), BorderLayout.CENTER ); + if (rules != null) { + tree = new CheckboxTree( rules.getRoot() ); + tree.getCheckingModel().setCheckingMode( TreeCheckingModel.CheckingMode.PROPAGATE_PRESERVING_UNCHECK ); + tree.setCheckingPaths( rules.getCheckingModel().getCheckingPaths() ); + tree.setRootVisible( false ); + tree.addMouseMotionListener( new MyMouseMotionAdapter() ); + rulesPanel.add( new JScrollPane( tree ), BorderLayout.CENTER ); + } + else { + JOptionPane.showMessageDialog(null, "Error loading rules. Check any custom rulesets for errors.", "Error Loading Rules", JOptionPane.ERROR_MESSAGE); + } // Custom Rule Panel Definition. JPanel pnlCustomRules = new JPanel( new FlowLayout( FlowLayout.LEFT ) ); @@ -134,7 +140,9 @@ public class PMDOptionPane extends AbstractOptionPane implements OptionPane { } public void _save() { - rules.save( tree.getCheckingModel() ); + if (rules != null) { + rules.save( tree.getCheckingModel() ); + } jEdit.setIntegerProperty( PMDJEditPlugin.JAVA_VERSION_PROPERTY, javaVersionBox.getSelectedIndex() );