diff --git a/pmd-jdeveloper.10.1.3/etc/build.xml b/pmd-jdeveloper.10.1.3/etc/build.xml
index c044d639bc..433dfeedf2 100644
--- a/pmd-jdeveloper.10.1.3/etc/build.xml
+++ b/pmd-jdeveloper.10.1.3/etc/build.xml
@@ -3,18 +3,18 @@
-
+
-
+
-
+
-
-
+
+
@@ -68,6 +68,10 @@
todir="${jdeveloper.install.dir}/${mainclass}.${pluginversion}/lib"/>
+
+
@@ -75,6 +79,8 @@
+
+
@@ -102,6 +108,10 @@
todir="update-center-bundle/${mainclass}.${pluginversion}/lib/"/>
+
+
@@ -124,7 +134,7 @@
diff --git a/pmd-jdeveloper.10.1.3/etc/bundle.xml b/pmd-jdeveloper.10.1.3/etc/bundle.xml
index 0f70ba201f..b165586a73 100644
--- a/pmd-jdeveloper.10.1.3/etc/bundle.xml
+++ b/pmd-jdeveloper.10.1.3/etc/bundle.xml
@@ -2,10 +2,10 @@
PMD JDeveloper Extension
- 4.2.4.2.0
+ 4.2.5.2.0
Torsten Kleiber
http://pmd.sourceforge.net/
- Provides integrated support for PMD 4.2.4 in JDeveloper 10.1.3 - 11g Technology Preview 1.
+ Provides integrated support for PMD 4.2.5 in JDeveloper 10.1.3 - 11g Technology Preview 1.
diff --git a/pmd-jdeveloper.10.1.3/etc/center.xml b/pmd-jdeveloper.10.1.3/etc/center.xml
index cef0a5421b..0a1d9865ec 100644
--- a/pmd-jdeveloper.10.1.3/etc/center.xml
+++ b/pmd-jdeveloper.10.1.3/etc/center.xml
@@ -2,24 +2,24 @@
PMD JDeveloper Extension
- 4.2.4.2.0
+ 4.2.5.2.0
Torsten Kleiber
http://pmd.sourceforge.net
- Provides integrated support for PMD 4.2.4 in JDeveloper 10.1.3 - 11g Technology Preview 1.
- http://downloads.sourceforge.net/pmd/pmd-jdeveloper1013-bundle-4.2.4.2.0.zip
+ Provides integrated support for PMD 4.2.5 in JDeveloper 10.1.3 - 11g Technology Preview 1.
+ http://downloads.sourceforge.net/pmd/pmd-jdeveloper1013-bundle-4.2.5.2.0.zip
PMD JDeveloper Extension
- 4.2.4.3.0
+ 4.2.5.3.0
Torsten Kleiber
http://pmd.sourceforge.net
- Provides integrated support for PMD 4.2.4 in JDeveloper 11g.
- http://downloads.sourceforge.net/pmd/pmd-jdeveloper1111-bundle-4.2.4.3.0.zip
+ Provides integrated support for PMD 4.2.5 in JDeveloper 11g.
+ http://downloads.sourceforge.net/pmd/pmd-jdeveloper1111-bundle-4.2.5.3.0.zip
-
+
\ No newline at end of file
diff --git a/pmd-jdeveloper.10.1.3/etc/changelog.txt b/pmd-jdeveloper.10.1.3/etc/changelog.txt
index de97bde8c2..5c5e333056 100644
--- a/pmd-jdeveloper.10.1.3/etc/changelog.txt
+++ b/pmd-jdeveloper.10.1.3/etc/changelog.txt
@@ -1,3 +1,7 @@
+October 14, 2009 - 4.2.5:
+Updated PMD version to 4.2.5 for 10.1.3 to 11.1.1
+Fixed bug 2543957
+
October 21, 2008 - 4.2.4:
Updated PMD version to 4.2.4 for 9.0.5 to 11.1.1
diff --git a/pmd-jdeveloper.10.1.3/etc/doing_the_next_pmd_jdeveloper_release.txt b/pmd-jdeveloper.10.1.3/etc/doing_the_next_pmd_jdeveloper_release.txt
index ec7fc570dc..2d6a6fff50 100644
--- a/pmd-jdeveloper.10.1.3/etc/doing_the_next_pmd_jdeveloper_release.txt
+++ b/pmd-jdeveloper.10.1.3/etc/doing_the_next_pmd_jdeveloper_release.txt
@@ -20,7 +20,7 @@ TESTS:
src release:
// TODO automation by ant, if subversion tasks are available
-checkin
+checkin
// TODO automation by ant, if subversion tasks are available
copy to tags/pmd-jdeveloper/pmd_jdeveloperXXX_release_X_X_X_X_X
ant releasesrc
diff --git a/pmd-jdeveloper.10.1.3/etc/extension.xml b/pmd-jdeveloper.10.1.3/etc/extension.xml
index cf5685c328..cc276acbf8 100644
--- a/pmd-jdeveloper.10.1.3/etc/extension.xml
+++ b/pmd-jdeveloper.10.1.3/etc/extension.xml
@@ -1,6 +1,6 @@
PMD JDeveloper Extension
Torsten Kleiber
@@ -8,9 +8,9 @@
oracle.jdeveloper
- net.sourceforge.pmd.jdeveloper.4.2.4.2.0/lib/pmd-4.2.4.jar
- net.sourceforge.pmd.jdeveloper.4.2.4.2.0/lib/jaxen-1.1.1.jar
- net.sourceforge.pmd.jdeveloper.4.2.4.2.0/lib/asm-3.1.jar
+ net.sourceforge.pmd.jdeveloper.4.2.5.2.0/lib/pmd-4.2.5.jar
+ net.sourceforge.pmd.jdeveloper.4.2.5.2.0/lib/jaxen-1.1.1.jar
+ net.sourceforge.pmd.jdeveloper.4.2.5.2.0/lib/asm-3.1.jar
@@ -19,7 +19,7 @@
- Provides integrated support for PMD 4.2 in JDeveloper 10.1.3 - 11g Technology Preview 1.
+ Provides integrated support for PMD 4.2.5 in JDeveloper 10.1.3 - 11g Technology Preview 1.
false
diff --git a/pmd-jdeveloper.10.1.3/lib/pmd-4.2.4.jar b/pmd-jdeveloper.10.1.3/lib/pmd-4.2.5.jar
similarity index 80%
rename from pmd-jdeveloper.10.1.3/lib/pmd-4.2.4.jar
rename to pmd-jdeveloper.10.1.3/lib/pmd-4.2.5.jar
index 45face599c..986ad20105 100644
Binary files a/pmd-jdeveloper.10.1.3/lib/pmd-4.2.4.jar and b/pmd-jdeveloper.10.1.3/lib/pmd-4.2.5.jar differ
diff --git a/pmd-jdeveloper.10.1.3/pmd-jdeveloper1013.jpr b/pmd-jdeveloper.10.1.3/pmd-jdeveloper1013.jpr
index 9274aa7df9..266baa59be 100644
--- a/pmd-jdeveloper.10.1.3/pmd-jdeveloper1013.jpr
+++ b/pmd-jdeveloper.10.1.3/pmd-jdeveloper1013.jpr
@@ -1,25 +1,25 @@
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
-
-
-
+
+
+
@@ -125,7 +125,7 @@
-
+
@@ -140,7 +140,7 @@
-
+
diff --git a/pmd-jdeveloper.10.1.3/src/net/sourceforge/pmd/jdeveloper/FileStorage.java b/pmd-jdeveloper.10.1.3/src/net/sourceforge/pmd/jdeveloper/FileStorage.java
index 7f39eeff04..1534fd62bc 100644
--- a/pmd-jdeveloper.10.1.3/src/net/sourceforge/pmd/jdeveloper/FileStorage.java
+++ b/pmd-jdeveloper.10.1.3/src/net/sourceforge/pmd/jdeveloper/FileStorage.java
@@ -38,7 +38,7 @@ public class FileStorage implements SettingsStorage {
final FileOutputStream fos = new FileOutputStream(file);
savedProperties.store(fos,
- "PMD-JDeveloper rule selections " + new Date());
+ "PMD generated file " + new Date());
fos.close();
} catch (FileNotFoundException e) {
Util.logMessage(e.getStackTrace());
diff --git a/pmd-jdeveloper.10.1.3/src/net/sourceforge/pmd/jdeveloper/SettingsPanel.java b/pmd-jdeveloper.10.1.3/src/net/sourceforge/pmd/jdeveloper/SettingsPanel.java
index 774c1ad2b5..4e62733097 100644
--- a/pmd-jdeveloper.10.1.3/src/net/sourceforge/pmd/jdeveloper/SettingsPanel.java
+++ b/pmd-jdeveloper.10.1.3/src/net/sourceforge/pmd/jdeveloper/SettingsPanel.java
@@ -10,22 +10,26 @@ import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.awt.event.MouseMotionListener;
+import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.List;
+import java.util.Properties;
import java.util.Set;
import javax.swing.BorderFactory;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JCheckBox;
+import javax.swing.JLabel;
import javax.swing.JList;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JTextArea;
+import javax.swing.JTextField;
import javax.swing.ListCellRenderer;
import javax.swing.ListModel;
import javax.swing.ListSelectionModel;
@@ -39,15 +43,24 @@ import net.sourceforge.pmd.RuleSetNotFoundException;
import net.sourceforge.pmd.RuleSets;
import net.sourceforge.pmd.RuleSetWriter;
+import oracle.ide.Ide;
import oracle.ide.panels.DefaultTraversablePanel;
import oracle.ide.panels.TraversableContext;
public class SettingsPanel extends DefaultTraversablePanel {
+ private static final String PLUGIN_HOME =
+ "/extensions/net.sourceforge.pmd.jdeveloper." + Version.version() +
+ "/conf/";
+ private static final String PLUGIN_PROPS =
+ PLUGIN_HOME + "pmd.plugin.properties";
+ private static final String RULE_PROPS =
+ PLUGIN_HOME + "pmd.rule.properties";
+
private class ImportListener implements ActionListener {
public void actionPerformed(final ActionEvent evt) {
- final FileDialog fdlg =
+ final FileDialog fdlg =
new FileDialog(new Frame(), "Import", FileDialog.LOAD);
fdlg.setVisible(true);
if (fdlg.getFile() == null) {
@@ -60,7 +73,7 @@ public class SettingsPanel extends DefaultTraversablePanel {
private class ExportListener implements ActionListener {
public void actionPerformed(final ActionEvent evt) {
- final FileDialog fdlg =
+ final FileDialog fdlg =
new FileDialog(new Frame(), "Export", FileDialog.SAVE);
fdlg.setVisible(true);
if (fdlg.getFile() == null) {
@@ -71,6 +84,20 @@ public class SettingsPanel extends DefaultTraversablePanel {
}
}
+ private class FindListener implements ActionListener {
+
+ public void actionPerformed(ActionEvent evt) {
+ FileDialog fdlg =
+ new FileDialog(new Frame(), "Find", FileDialog.LOAD);
+ fdlg.setVisible(true);
+ String selected = fdlg.getDirectory() + fdlg.getFile();
+ if (fdlg.getFile() == null) {
+ return;
+ }
+ selectedRulesSeparateFileNameField.setText(selected);
+ }
+ }
+
private class CheckboxList extends JList {
private class MyMouseAdapter extends MouseAdapter {
@@ -81,7 +108,8 @@ public class SettingsPanel extends DefaultTraversablePanel {
public void mousePressed(final MouseEvent evt) {
final int index = locationToIndex(evt.getPoint());
if (index != -1) {
- final JCheckBox box = (JCheckBox)getModel().getElementAt(index);
+ final JCheckBox box =
+ (JCheckBox)getModel().getElementAt(index);
box.setSelected(!box.isSelected());
repaint();
}
@@ -97,7 +125,8 @@ public class SettingsPanel extends DefaultTraversablePanel {
public void mouseMoved(final MouseEvent evt) {
final int index = locationToIndex(evt.getPoint());
if (index != -1) {
- final JCheckBox box = (JCheckBox)getModel().getElementAt(index);
+ final JCheckBox box =
+ (JCheckBox)getModel().getElementAt(index);
final List examples = rules.getRule(box).getExamples();
final StringBuffer examplesBuffer = new StringBuffer();
if (!examples.isEmpty()) {
@@ -107,9 +136,9 @@ public class SettingsPanel extends DefaultTraversablePanel {
}
String example = examplesBuffer.toString();
- while (example.charAt(0) == '\r' ||
- example.charAt(0) == '\n' ||
- example.charAt(0) == '\t' ||
+ while (example.charAt(0) == '\r' ||
+ example.charAt(0) == '\n' ||
+ example.charAt(0) == '\t' ||
example.charAt(0) == ' ') {
example = example.substring(1);
}
@@ -120,18 +149,18 @@ public class SettingsPanel extends DefaultTraversablePanel {
}
private class CheckboxListCellRenderer implements ListCellRenderer {
- public Component getListCellRendererComponent(final JList list,
- final Object value,
- final int index,
- final boolean isSelected,
+ public Component getListCellRendererComponent(final JList list,
+ final Object value,
+ final int index,
+ final boolean isSelected,
final boolean cellHasFocus) {
final JCheckBox box = (JCheckBox)value;
box.setEnabled(isEnabled());
box.setFont(getFont());
box.setFocusPainted(false);
box.setBorderPainted(true);
- box.setBorder(isSelected ?
- UIManager.getBorder("List.focusCellHighlightBorder") :
+ box.setBorder(isSelected ?
+ UIManager.getBorder("List.focusCellHighlightBorder") :
new EmptyBorder(1, 1, 1, 1));
return box;
}
@@ -145,19 +174,30 @@ public class SettingsPanel extends DefaultTraversablePanel {
}
}
- public static final String STORED_SEPARATELY =
- "pmd.settings.separate";
- public static final String SEL_FILENAME =
- "pmd.settings.separate.name";
+ public static final String STORED_SEPARATELY = "pmd.settings.separate";
+ public static final String SEL_FILENAME = "pmd.settings.separate.name";
private final transient JTextArea exampleTextArea = new JTextArea(10, 50);
+ private JCheckBox selectedRulesStoredSeparatelyBox;
+ private JTextField selectedRulesSeparateFileNameField = new JTextField(30);
private transient SelectedRules rules;
private transient JList rulesList;
+ private static FileStorage pluginProps =
+ new FileStorage(new File(Version.getJdevHome() + PLUGIN_PROPS));
public static SettingsStorage createSettingsStorage() {
- return new IDEStorage();
+ try {
+ if (Boolean.valueOf(pluginProps.load(STORED_SEPARATELY)).booleanValue()) {
+ return new FileStorage(new File(pluginProps.load(SEL_FILENAME)));
+ }
+ } catch (SettingsException se) {
+ Util.logMessage(se.getStackTrace());
+ Util.showError(se, Plugin.PMD_TITLE);
+ }
+ return new FileStorage(new File(Version.getJdevHome() + RULE_PROPS));
}
+
public void onEntry(final TraversableContext tcon) {
removeAll();
try {
@@ -167,7 +207,15 @@ public class SettingsPanel extends DefaultTraversablePanel {
Util.showError(rsne, Plugin.PMD_TITLE);
}
+ try {
+ selectedRulesStoredSeparatelyBox =
+ new JCheckBox("", Boolean.valueOf(pluginProps.load(STORED_SEPARATELY)).booleanValue());
+ } catch (SettingsException se) {
+ Util.logMessage(se.getStackTrace());
+ Util.showError(se, Plugin.PMD_TITLE);
+ }
final JPanel mainPanel = new JPanel(new BorderLayout());
+ mainPanel.add(createTopPanel(), BorderLayout.NORTH);
mainPanel.add(createRulesSelectionPanel(), BorderLayout.SOUTH);
add(mainPanel);
}
@@ -177,22 +225,23 @@ public class SettingsPanel extends DefaultTraversablePanel {
checkBoxesPanel.setBorder(BorderFactory.createTitledBorder("Rules"));
rulesList = new CheckboxList(rules.getAllBoxes());
rulesList.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION);
+ rulesList.setVisibleRowCount(5);
checkBoxesPanel.add(new JScrollPane(rulesList), BorderLayout.NORTH);
final JPanel buttonsPanel = new JPanel();
buttonsPanel.setLayout(new BoxLayout(buttonsPanel, BoxLayout.Y_AXIS));
final JButton selectAll = new JButton("Select all");
selectAll.addActionListener(new ActionListener() {
- public void actionPerformed(final ActionEvent evt) {
- setSelected(true);
- }
- });
+ public void actionPerformed(final ActionEvent evt) {
+ setSelected(true);
+ }
+ });
buttonsPanel.add(selectAll);
final JButton selectNone = new JButton("Deselect all");
selectNone.addActionListener(new ActionListener() {
- public void actionPerformed(final ActionEvent evt) {
- setSelected(false);
- }
- });
+ public void actionPerformed(final ActionEvent evt) {
+ setSelected(false);
+ }
+ });
buttonsPanel.add(selectNone);
final JButton importButton = new JButton("Import rules file");
importButton.addActionListener(new ImportListener());
@@ -211,6 +260,54 @@ public class SettingsPanel extends DefaultTraversablePanel {
return rulesSelPanel;
}
+ private JPanel createTopPanel() {
+
+ try {
+ selectedRulesSeparateFileNameField.setText(pluginProps.load(SEL_FILENAME));
+ selectedRulesStoredSeparatelyBox.setSelected(Boolean.valueOf(pluginProps.load(STORED_SEPARATELY)).booleanValue());
+ } catch (SettingsException se) {
+ Util.logMessage(se.getStackTrace());
+ Util.showError(se, Plugin.PMD_TITLE);
+ }
+ JPanel topPanel = new JPanel(new BorderLayout());
+ JPanel customStoragePanel = new JPanel(new BorderLayout());
+ customStoragePanel.setBorder(BorderFactory.createTitledBorder("Settings storage"));
+
+ JPanel customStorageCheckBoxPanel = new JPanel();
+ customStorageCheckBoxPanel.add(new JLabel("Use centrally managed rule settings?"));
+ customStorageCheckBoxPanel.add(selectedRulesStoredSeparatelyBox);
+ customStoragePanel.add(customStorageCheckBoxPanel, BorderLayout.NORTH);
+
+ JPanel customStorageTextFieldPanel = new JPanel();
+ customStorageTextFieldPanel.add(new JLabel("File:"));
+ customStorageTextFieldPanel.add(selectedRulesSeparateFileNameField);
+ JButton findButton = new JButton("Find file");
+ findButton.addActionListener(new FindListener());
+ customStorageTextFieldPanel.add(findButton);
+
+ customStoragePanel.add(customStorageTextFieldPanel,
+ BorderLayout.SOUTH);
+ topPanel.add(customStoragePanel, BorderLayout.CENTER);
+ return topPanel;
+ }
+
+ public void onExit(final TraversableContext tcon) {
+ final Properties properties = new Properties();
+ properties.setProperty(STORED_SEPARATELY,
+ String.valueOf(selectedRulesStoredSeparatelyBox.isSelected()));
+ properties.setProperty(SEL_FILENAME,
+ selectedRulesSeparateFileNameField.getText());
+ try {
+ pluginProps.save(properties);
+ rules.save(createSettingsStorage());
+ } catch (SettingsException se) {
+ JOptionPane.showMessageDialog(null,
+ "Can't save settings :" + se.getMessage(),
+ "Can't save settings",
+ JOptionPane.ERROR_MESSAGE);
+ }
+ }
+
private void setSelected(final Boolean selected) {
final ListModel model = rulesList.getModel();
for (int i = 0; i < model.getSize(); i++) {
@@ -220,18 +317,6 @@ public class SettingsPanel extends DefaultTraversablePanel {
rulesList.repaint();
}
- public void onExit(final TraversableContext tcon) {
- try {
- rules.save(createSettingsStorage());
- } catch (SettingsException se) {
- JOptionPane.showMessageDialog(null,
- "Can't save selected rules to the file :" +
- se.getMessage(),
- "Can't save settings",
- JOptionPane.ERROR_MESSAGE);
- }
- }
-
private void importFile(final String fileLocation) {
final RuleSetFactory factory = new RuleSetFactory();
RuleSets ruleSets = null;
@@ -255,9 +340,10 @@ public class SettingsPanel extends DefaultTraversablePanel {
rulesList.repaint();
}
- private Boolean isRuleAvailabel(final Set allRules, final Rule requestedRule) {
+ private Boolean isRuleAvailabel(final Set allRules,
+ final Rule requestedRule) {
Boolean returnValue = Boolean.FALSE;
- for (Rule rule: allRules) {
+ for (Rule rule : allRules) {
if (rule.getName().equals(requestedRule.getName())) {
returnValue = Boolean.TRUE;
}
diff --git a/pmd-jdeveloper.10.1.3/src/net/sourceforge/pmd/jdeveloper/Version.java b/pmd-jdeveloper.10.1.3/src/net/sourceforge/pmd/jdeveloper/Version.java
index 9559b59594..d9891f7196 100644
--- a/pmd-jdeveloper.10.1.3/src/net/sourceforge/pmd/jdeveloper/Version.java
+++ b/pmd-jdeveloper.10.1.3/src/net/sourceforge/pmd/jdeveloper/Version.java
@@ -5,6 +5,8 @@ import net.sourceforge.pmd.SourceType;
import oracle.ide.Context;
+import oracle.ide.Ide;
+
import oracle.jdeveloper.compiler.OjcConfiguration;
final class Version {
@@ -27,7 +29,10 @@ final class Version {
}
public static String version() {
- return "4.2.4.2.0";
+ return "4.2.5.2.0";
}
+ static String getJdevHome() {
+ return Ide.getHomeDirectory();
+ }
}