From 173d7770de071fc087c2570173c671ebd9f6fac4 Mon Sep 17 00:00:00 2001 From: Tom Copeland Date: Thu, 18 Jul 2002 01:28:15 +0000 Subject: [PATCH] modified to use ErrorList git-svn-id: https://pmd.svn.sourceforge.net/svnroot/pmd/trunk@424 51baf565-9d33-0410-a72c-fc3788e3496d --- pmd-jedit/config/actions.xml | 2 +- pmd-jedit/etc/build.xml | 1 + pmd-jedit/etc/scp.bat | 1 + pmd-jedit/lib/ErrorList.jar | Bin 0 -> 35452 bytes .../sourceforge/pmd/jedit/PMDJEditPlugin.java | 43 +++++--- .../pmd/jedit/PMDRuleViolationDialog.java | 92 ------------------ 6 files changed, 33 insertions(+), 106 deletions(-) create mode 100644 pmd-jedit/lib/ErrorList.jar delete mode 100644 pmd-jedit/src/net/sourceforge/pmd/jedit/PMDRuleViolationDialog.java diff --git a/pmd-jedit/config/actions.xml b/pmd-jedit/config/actions.xml index 31232902dd..2ab0f8d44c 100644 --- a/pmd-jedit/config/actions.xml +++ b/pmd-jedit/config/actions.xml @@ -3,7 +3,7 @@ - net.sourceforge.pmd.jedit.PMDJEditPlugin.check(view); + net.sourceforge.pmd.jedit.PMDJEditPlugin.check(buffer, view); diff --git a/pmd-jedit/etc/build.xml b/pmd-jedit/etc/build.xml index 0f0b13ddb3..7c97cb26cd 100644 --- a/pmd-jedit/etc/build.xml +++ b/pmd-jedit/etc/build.xml @@ -12,6 +12,7 @@ + diff --git a/pmd-jedit/etc/scp.bat b/pmd-jedit/etc/scp.bat index 38dec91353..02af868963 100755 --- a/pmd-jedit/etc/scp.bat +++ b/pmd-jedit/etc/scp.bat @@ -1,4 +1,5 @@ @echo off set CLASSPATH=..\build set CLASSPATH=%CLASSPATH%;..\lib\pmd-0.5.jar +set CLASSPATH=%CLASSPATH%;..\lib\ErrorList.jar set CLASSPATH=%CLASSPATH%;..\lib\jedit.jar \ No newline at end of file diff --git a/pmd-jedit/lib/ErrorList.jar b/pmd-jedit/lib/ErrorList.jar new file mode 100644 index 0000000000000000000000000000000000000000..a85f1b41670b1f8d7682c3b4f6480428cb3dd317 GIT binary patch literal 35452 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 WWW>S1Uw%sj`0@c*wdMWt>i+?15fC5% literal 0 HcmV?d00001 diff --git a/pmd-jedit/src/net/sourceforge/pmd/jedit/PMDJEditPlugin.java b/pmd-jedit/src/net/sourceforge/pmd/jedit/PMDJEditPlugin.java index 07b6d01d26..2e231c32ad 100644 --- a/pmd-jedit/src/net/sourceforge/pmd/jedit/PMDJEditPlugin.java +++ b/pmd-jedit/src/net/sourceforge/pmd/jedit/PMDJEditPlugin.java @@ -7,7 +7,8 @@ package net.sourceforge.pmd.jedit; import org.gjt.sp.jedit.*; import org.gjt.sp.jedit.gui.OptionsDialog; - +import errorlist.ErrorSource; +import errorlist.DefaultErrorSource; import javax.swing.*; import java.util.Vector; import java.util.Iterator; @@ -25,11 +26,23 @@ public class PMDJEditPlugin extends EBPlugin { public static final String OPTION_PREFIX = "options.pmd."; public static final String OPTION_RULESETS_PREFIX = "options.pmd.rulesets."; - private static PMDJEditPlugin instance = new PMDJEditPlugin(); - + private static PMDJEditPlugin instance; + + static { + instance = new PMDJEditPlugin(); + instance.start(); + } + + private DefaultErrorSource errorSource; + // boilerplate JEdit code - public static void check(View view) { - instance.instanceCheck(view); + public void start() { + errorSource = new DefaultErrorSource(NAME); + ErrorSource.registerErrorSource(errorSource); + } + + public static void check(Buffer buffer, View view) { + instance.instanceCheck(buffer, view); } public static void displayPreferencesDialog(View view) { @@ -41,7 +54,8 @@ public class PMDJEditPlugin extends EBPlugin { } // boilerplate JEdit code - public void instanceCheck(View view) { + public void instanceCheck(Buffer buffer, View view) { + errorSource.clear(); RuleContext ctx = new RuleContext(); RuleSetFactory ruleSetFactory = new RuleSetFactory(); SelectedRuleSetsMap selectedRuleSets = new SelectedRuleSetsMap(); @@ -51,13 +65,16 @@ public class PMDJEditPlugin extends EBPlugin { rules.addRuleSet(ruleSetFactory.createRuleSet(pmd.getClass().getClassLoader().getResourceAsStream((String)i.next()))); } ctx.setReport(new Report()); - ctx.setSourceCodeFilename("this"); - try { - pmd.processFile(new StringReader(view.getTextArea().getText()), rules, ctx); - new PMDRuleViolationDialog(ctx.getReport()); - } catch (FileNotFoundException fnfe) { - fnfe.printStackTrace(); - } + ctx.setSourceCodeFilename(buffer.getPath()); + try { + pmd.processFile(new StringReader(view.getTextArea().getText()), rules, ctx); + } catch (FileNotFoundException fnfe) {} + for (Iterator i = ctx.getReport().iterator(); i.hasNext();) { + RuleViolation rv = (RuleViolation)i.next(); + String path = buffer.getPath(); + DefaultErrorSource.DefaultError err = new DefaultErrorSource.DefaultError(errorSource, ErrorSource.WARNING, path, rv.getLine()-1,0,0,rv.getDescription()); + errorSource.addError(err); + } } public void instanceDisplayPreferencesDialog(View view) { diff --git a/pmd-jedit/src/net/sourceforge/pmd/jedit/PMDRuleViolationDialog.java b/pmd-jedit/src/net/sourceforge/pmd/jedit/PMDRuleViolationDialog.java deleted file mode 100644 index 9baf285bc8..0000000000 --- a/pmd-jedit/src/net/sourceforge/pmd/jedit/PMDRuleViolationDialog.java +++ /dev/null @@ -1,92 +0,0 @@ -/* - * User: tom - * Date: Jul 12, 2002 - * Time: 11:08:26 AM - */ -package net.sourceforge.pmd.jedit; - -import org.gjt.sp.jedit.jEdit; - -import javax.swing.*; -import javax.swing.event.ListDataListener; -import java.awt.*; -import java.awt.event.MouseEvent; -import java.awt.event.MouseAdapter; -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.util.Iterator; - -import net.sourceforge.pmd.Report; -import net.sourceforge.pmd.RuleViolation; - -public class PMDRuleViolationDialog { - - private JList list; - private JDialog dialog; - - private static class RuleViolationListModel implements ListModel { - - private Report report; - - public RuleViolationListModel(Report report) { - this.report = report; - } - public int getSize() { - return report.size(); - } - - public Object getElementAt(int index) { - int reportIndex = 0; - for (Iterator i = report.iterator(); i.hasNext();) { - RuleViolation rv = (RuleViolation)i.next(); - if (reportIndex == index) { - return "Line " + rv.getLine() + ":" + rv.getDescription(); - } - reportIndex++; - } - throw new RuntimeException("Hm, the Report size is " + report.size() + " and you asked for rule violation " + index); - } - - public void addListDataListener(ListDataListener l) {} - public void removeListDataListener(ListDataListener l) {} - } - - - private RuleViolationListModel rvListModel; - - public PMDRuleViolationDialog(Report report) { - if (report.isEmpty()) { - JOptionPane.showMessageDialog(jEdit.getFirstView(), "No errors found"); - return; - } - dialog = new JDialog(jEdit.getFirstView(), PMDJEditPlugin.NAME, true); - - rvListModel = new RuleViolationListModel(report); - - //main part of the dialog - list = new JList(rvListModel); - list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION); - JScrollPane listScroller = new JScrollPane(list); - - JPanel listPane = new JPanel(); - listPane.setLayout(new BoxLayout(listPane, BoxLayout.Y_AXIS)); - listPane.add(listScroller); - listPane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10)); - - JPanel buttonPane = new JPanel(); - JButton okButton = new JButton("OK"); - okButton.addActionListener(new ActionListener() { - public void actionPerformed(ActionEvent e) { - PMDRuleViolationDialog.this.dialog.dispose(); - } - }); - dialog.getRootPane().setDefaultButton(okButton); - buttonPane.add(okButton); - - dialog.getContentPane().add(listPane, BorderLayout.CENTER); - dialog.getContentPane().add(buttonPane, BorderLayout.SOUTH); - dialog.setLocationRelativeTo(jEdit.getFirstView()); - dialog.pack(); - dialog.setVisible(true); - } -}