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(); + } }