diff --git a/pmd-jdeveloper1013/etc/build.xml b/pmd-jdeveloper1013/etc/build.xml
index ec0abf1946..d33ee445c0 100644
--- a/pmd-jdeveloper1013/etc/build.xml
+++ b/pmd-jdeveloper1013/etc/build.xml
@@ -7,6 +7,7 @@
+
@@ -14,7 +15,8 @@
-
+
+
@@ -48,6 +50,12 @@
+
+
+
+
+
+
diff --git a/pmd-jdeveloper1013/etc/changelog.txt b/pmd-jdeveloper1013/etc/changelog.txt
index 9a8811cc0c..51dbfdea33 100644
--- a/pmd-jdeveloper1013/etc/changelog.txt
+++ b/pmd-jdeveloper1013/etc/changelog.txt
@@ -1,3 +1,7 @@
+????, 2005 - 1.8:
+Better presentation of the rule violations.
+Upgraded to PMD 3.3.
+
Oct 18, 2005 - 1.7:
Merged in changes from Olaf Heimburger to update plugin to work with JDev 10.1.3 early access.
Modified to use "update center" functionality. Update center location is http://pmd.sf.net/center.xml
diff --git a/pmd-jdeveloper1013/lib/pmd-3.3.jar b/pmd-jdeveloper1013/lib/pmd-3.3.jar
index f037f49925..280668e677 100644
Binary files a/pmd-jdeveloper1013/lib/pmd-3.3.jar and b/pmd-jdeveloper1013/lib/pmd-3.3.jar differ
diff --git a/pmd-jdeveloper1013/src/net/sourceforge/pmd/jdeveloper/JumpingSelectionModel.java b/pmd-jdeveloper1013/src/net/sourceforge/pmd/jdeveloper/JumpingSelectionModel.java
deleted file mode 100644
index 5dc04122db..0000000000
--- a/pmd-jdeveloper1013/src/net/sourceforge/pmd/jdeveloper/JumpingSelectionModel.java
+++ /dev/null
@@ -1,36 +0,0 @@
-package net.sourceforge.pmd.jdeveloper;
-
-import net.sourceforge.pmd.RuleViolation;
-import oracle.ide.editor.EditorManager;
-import oracle.ide.net.URLFactory;
-import oracle.jdeveloper.ceditor.CodeEditor;
-
-import javax.swing.*;
-
-/**
- * This class was inspired by a class on Sun's web site in the JList tutorial section. It's
- * been twiddled somewhat since then.
- */
-public class JumpingSelectionModel extends DefaultListSelectionModel {
-
- private DefaultListModel model;
-
- public JumpingSelectionModel(DefaultListModel model) {
- this.model = model;
- }
-
- public JumpingSelectionModel() {
- setSelectionMode(SINGLE_SELECTION);
- }
-
- public void setSelectionInterval(int index0, int index1) {
- int oldIndex = getMinSelectionIndex();
- super.setSelectionInterval(index0, index1);
- int newIndex = getMinSelectionIndex();
- if (oldIndex != newIndex) {
- RuleViolation rv = ((RuleViolationWrapper)model.getElementAt(newIndex)).getRuleViolation();
- EditorManager.getEditorManager().openDefaultEditorInFrame(URLFactory.newFileURL(rv.getFilename()));
- ((CodeEditor)EditorManager.getEditorManager().getCurrentEditor()).gotoLine(rv.getLine(), 0, false);
- }
- }
-}
diff --git a/pmd-jdeveloper1013/src/net/sourceforge/pmd/jdeveloper/Plugin.java b/pmd-jdeveloper1013/src/net/sourceforge/pmd/jdeveloper/Plugin.java
index 2eadad2ab8..6825a19bb9 100644
--- a/pmd-jdeveloper1013/src/net/sourceforge/pmd/jdeveloper/Plugin.java
+++ b/pmd-jdeveloper1013/src/net/sourceforge/pmd/jdeveloper/Plugin.java
@@ -1,21 +1,10 @@
package net.sourceforge.pmd.jdeveloper;
-import java.io.File;
-import java.io.FileInputStream;
-
-import java.util.Iterator;
-
-import javax.ide.model.Document;
-
-import javax.swing.JMenuItem;
-import javax.swing.JOptionPane;
-
import net.sourceforge.pmd.PMD;
import net.sourceforge.pmd.PMDException;
import net.sourceforge.pmd.Report;
import net.sourceforge.pmd.RuleContext;
import net.sourceforge.pmd.RuleViolation;
-
import oracle.ide.Addin;
import oracle.ide.AddinManager;
import oracle.ide.Context;
@@ -25,19 +14,28 @@ import oracle.ide.controller.ContextMenu;
import oracle.ide.controller.ContextMenuListener;
import oracle.ide.controller.Controller;
import oracle.ide.controller.IdeAction;
-import oracle.ide.controller.Menubar;
import oracle.ide.editor.EditorManager;
import oracle.ide.log.LogManager;
import oracle.ide.log.LogPage;
import oracle.ide.log.LogWindow;
import oracle.ide.model.Element;
+import oracle.ide.model.Node;
import oracle.ide.model.Project;
-import oracle.ide.model.Reference;
import oracle.ide.navigator.NavigatorManager;
import oracle.ide.panels.Navigable;
-
+import oracle.jdeveloper.compiler.IdeLog;
+import oracle.jdeveloper.compiler.IdeStorage;
import oracle.jdeveloper.model.JavaSourceNode;
+import javax.swing.*;
+import java.io.File;
+import java.io.FileInputStream;
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Map;
+
public class Plugin implements Addin, Controller, ContextMenuListener {
@@ -94,6 +92,9 @@ public class Plugin implements Addin, Controller, ContextMenuListener {
}
private boolean added;
+ // whew, this is kludgey
+ private Map fileToNodeMap = new HashMap();
+
public boolean handleEvent(IdeAction ideAction, Context context) {
if (!added) {
LogManager.getLogManager().addPage(rvPage);
@@ -102,24 +103,22 @@ public class Plugin implements Addin, Controller, ContextMenuListener {
}
if (ideAction.getCommandId() == CHECK_CMD_ID) {
try {
+ fileToNodeMap.clear();
PMD pmd = new PMD();
SelectedRules rs = new SelectedRules(SettingsPanel.createSettingsStorage());
RuleContext ctx = new RuleContext();
ctx.setReport(new Report());
- if (resolveType(context.getElement()) == PROJECT) {
- Iterator i = context.getProject().getListOfChildren().iterator();
- while (i.hasNext()) {
+ if (context.getElement() instanceof Project) {
+ Project project = (Project)context.getElement();
+ for (Iterator i = project.getChildren(); i.hasNext();) {
Object obj = i.next();
- if (!(obj instanceof Reference)) {
- System.out.println("PMD plugin expected a Reference, found a " + obj.getClass() + " instead. Odd.");
+ if (!(obj instanceof JavaSourceNode)) {
+ System.out.println("PMD plugin expected a JavaSourceNode, found a " + obj.getClass() + " instead. Odd.");
continue;
}
- obj = ((Reference)obj).getData();
- if (!(obj instanceof Document)) {
- continue;
- }
- Document candidate = (Document)obj;
+ JavaSourceNode candidate = (JavaSourceNode)obj;
if (candidate.getLongLabel().endsWith(".java") && new File(candidate.getLongLabel()).exists()) {
+ fileToNodeMap.put(candidate.getLongLabel(), candidate);
ctx.setSourceCodeFilename(candidate.getLongLabel());
FileInputStream fis = new FileInputStream(new File(candidate.getLongLabel()));
pmd.processFile(fis, rs.getSelectedRules(), ctx);
@@ -128,6 +127,7 @@ public class Plugin implements Addin, Controller, ContextMenuListener {
}
render(ctx);
} else if (resolveType(context.getElement()) == SOURCE) {
+ fileToNodeMap.put(context.getNode().getLongLabel(), context.getNode());
ctx.setSourceCodeFilename(context.getNode().getLongLabel());
pmd.processFile(context.getNode().getInputStream(), rs.getSelectedRules(), ctx);
render(ctx);
@@ -145,9 +145,6 @@ public class Plugin implements Addin, Controller, ContextMenuListener {
return true;
}
- /**
- * TODO investigate CompilerPage as a replacement for RuleViolationPage; or could perhaps subclass it instead.
- */
private void render(RuleContext ctx) {
rvPage.show();
rvPage.clearAll();
@@ -158,9 +155,13 @@ public class Plugin implements Addin, Controller, ContextMenuListener {
((LogWindow)page).show();
}
} else {
+ List list = new ArrayList();
for (Iterator i = ctx.getReport().iterator(); i.hasNext();) {
- rvPage.add((RuleViolation)i.next());
+ RuleViolation rv = (RuleViolation)i.next();
+ Node node = (Node)fileToNodeMap.get(rv.getFilename());
+ list.add(new IdeLog.Message(Ide.getActiveWorkspace(), Ide.getActiveProject(), new IdeStorage(node), rv.getDescription(), 2, rv.getNode().getBeginLine()+1, rv.getNode().getBeginColumn()));
}
+ rvPage.add(list);
}
}
@@ -172,8 +173,7 @@ public class Plugin implements Addin, Controller, ContextMenuListener {
// Controller
// ContextMenuListener
- public void menuWillHide(ContextMenu contextMenu) {
- }
+ public void menuWillHide(ContextMenu contextMenu) {}
public void menuWillShow(ContextMenu contextMenu) {
Element doc = contextMenu.getContext().getElement();
diff --git a/pmd-jdeveloper1013/src/net/sourceforge/pmd/jdeveloper/RuleViolationPage.java b/pmd-jdeveloper1013/src/net/sourceforge/pmd/jdeveloper/RuleViolationPage.java
index 245aa2fd42..789577c322 100644
--- a/pmd-jdeveloper1013/src/net/sourceforge/pmd/jdeveloper/RuleViolationPage.java
+++ b/pmd-jdeveloper1013/src/net/sourceforge/pmd/jdeveloper/RuleViolationPage.java
@@ -1,34 +1,16 @@
package net.sourceforge.pmd.jdeveloper;
-import net.sourceforge.pmd.RuleViolation;
-import oracle.ide.layout.ViewId;
-import oracle.ide.log.AbstractLogPage;
+import oracle.jdeveloper.compiler.CompilerPage;
-import javax.swing.*;
-import java.awt.*;
+import java.util.List;
-public class RuleViolationPage extends AbstractLogPage {
-
- private DefaultListModel model = new DefaultListModel();
- private JScrollPane scrollPane;
- private JList list;
+public class RuleViolationPage extends CompilerPage {
public RuleViolationPage() {
- super(new ViewId("PMDPage", Plugin.TITLE), null, false);
- list = new JList(model);
- list.setSelectionModel(new JumpingSelectionModel(model));
- scrollPane = new JScrollPane(list);
+ super(Plugin.TITLE, Plugin.TITLE, null);
}
- public void add(RuleViolation ruleViolation) {
- model.addElement(new RuleViolationWrapper(ruleViolation));
- }
-
- public Component getGUI() {
- return scrollPane;
- }
-
- public void clearAll() {
- model.clear();
+ public void add(List list) {
+ super.logMsg(list);
}
}
diff --git a/pmd-jdeveloper1013/src/net/sourceforge/pmd/jdeveloper/RuleViolationWrapper.java b/pmd-jdeveloper1013/src/net/sourceforge/pmd/jdeveloper/RuleViolationWrapper.java
deleted file mode 100644
index bbbcd192cf..0000000000
--- a/pmd-jdeveloper1013/src/net/sourceforge/pmd/jdeveloper/RuleViolationWrapper.java
+++ /dev/null
@@ -1,20 +0,0 @@
-package net.sourceforge.pmd.jdeveloper;
-
-import net.sourceforge.pmd.RuleViolation;
-
-public class RuleViolationWrapper {
-
- private RuleViolation ruleViolation;
-
- public RuleViolationWrapper(RuleViolation ruleViolation) {
- this.ruleViolation = ruleViolation;
- }
-
- public RuleViolation getRuleViolation() {
- return this.ruleViolation;
- }
-
- public String toString() {
- return ruleViolation.getFilename() + "; line " + ruleViolation.getLine() +"; ("+ ruleViolation.getRule().getName() + ") " + ruleViolation.getDescription();
- }
-}
diff --git a/pmd-jdeveloper1013/src/net/sourceforge/pmd/jdeveloper/SelectedRules.java b/pmd-jdeveloper1013/src/net/sourceforge/pmd/jdeveloper/SelectedRules.java
index 71199f62bf..7e648c3daa 100644
--- a/pmd-jdeveloper1013/src/net/sourceforge/pmd/jdeveloper/SelectedRules.java
+++ b/pmd-jdeveloper1013/src/net/sourceforge/pmd/jdeveloper/SelectedRules.java
@@ -6,7 +6,11 @@ import net.sourceforge.pmd.RuleSetFactory;
import net.sourceforge.pmd.RuleSetNotFoundException;
import javax.swing.*;
-import java.util.*;
+import java.util.Comparator;
+import java.util.Iterator;
+import java.util.Map;
+import java.util.Properties;
+import java.util.TreeMap;
public class SelectedRules {
diff --git a/pmd-jdeveloper1013/src/net/sourceforge/pmd/jdeveloper/SettingsPanel.java b/pmd-jdeveloper1013/src/net/sourceforge/pmd/jdeveloper/SettingsPanel.java
index cb3cd1cc5e..5ef6d821c1 100644
--- a/pmd-jdeveloper1013/src/net/sourceforge/pmd/jdeveloper/SettingsPanel.java
+++ b/pmd-jdeveloper1013/src/net/sourceforge/pmd/jdeveloper/SettingsPanel.java
@@ -7,7 +7,10 @@ import oracle.ide.panels.TraversableContext;
import javax.swing.*;
import javax.swing.border.EmptyBorder;
-import java.awt.*;
+import java.awt.BorderLayout;
+import java.awt.Component;
+import java.awt.FileDialog;
+import java.awt.Frame;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.MouseAdapter;