diff --git a/pmd-jedit/config/pmd.props b/pmd-jedit/config/pmd.props index 57371382ab..a43b7e84be 100644 --- a/pmd-jedit/config/pmd.props +++ b/pmd-jedit/config/pmd.props @@ -21,6 +21,6 @@ pmd-check-current-directory-recursively.label=Check directory recursively # # Option pane properties # -options.pmd.title=PMD -options.pmd.label=PMD +options.PMD.title=PMD +options.PMD.label=PMD diff --git a/pmd-jedit/etc/changelog.txt b/pmd-jedit/etc/changelog.txt index 6f0d373bba..7ff9baa322 100644 --- a/pmd-jedit/etc/changelog.txt +++ b/pmd-jedit/etc/changelog.txt @@ -1,5 +1,6 @@ ???? 2002 - 0.8: Fixed GUI lockup problem. +Added example text to option pane. August 2 2002 - 0.7: Updated to use pmd-0.8 diff --git a/pmd-jedit/lib/pmd-0.8.jar b/pmd-jedit/lib/pmd-0.8.jar index d3121c63bc..c6c82c244b 100644 Binary files a/pmd-jedit/lib/pmd-0.8.jar and b/pmd-jedit/lib/pmd-0.8.jar differ diff --git a/pmd-jedit/src/net/sourceforge/pmd/jedit/PMDOptionPane.java b/pmd-jedit/src/net/sourceforge/pmd/jedit/PMDOptionPane.java index 483be5e4cd..8a4731fdf9 100644 --- a/pmd-jedit/src/net/sourceforge/pmd/jedit/PMDOptionPane.java +++ b/pmd-jedit/src/net/sourceforge/pmd/jedit/PMDOptionPane.java @@ -27,7 +27,29 @@ import net.sourceforge.pmd.Rule; public class PMDOptionPane extends AbstractOptionPane implements OptionPane { - public static class CheckboxList extends JList { + public class CheckboxList extends JList { + + private class MyMouseAdapter extends MouseAdapter { + public void mouseEntered(MouseEvent e) { + int index = locationToIndex(e.getPoint()); + if (index != -1) { + JCheckBox box = (JCheckBox)getModel().getElementAt(index); + String example = rules.getRule(box).getExample(); + exampleTextArea.setText(example); + exampleTextArea.setCaretPosition(0); + } + } + + public void mousePressed(MouseEvent e) { + int index = locationToIndex(e.getPoint()); + if (index != -1) { + JCheckBox box = (JCheckBox)getModel().getElementAt(index); + box.setSelected(!box.isSelected()); + repaint(); + } + } + } + public class CheckboxListCellRenderer implements ListCellRenderer { public Component getListCellRendererComponent(JList list, Object value, int index, boolean isSelected, boolean cellHasFocus) { JCheckBox box = (JCheckBox)value; @@ -43,21 +65,13 @@ public class PMDOptionPane extends AbstractOptionPane implements OptionPane { public CheckboxList(Object[] args) { super(args); setCellRenderer(new CheckboxListCellRenderer()); - addMouseListener(new MouseAdapter() { - public void mousePressed(MouseEvent e) { - int index = locationToIndex(e.getPoint()); - if (index != -1) { - JCheckBox box = (JCheckBox)getModel().getElementAt(index); - box.setSelected(!box.isSelected()); - repaint(); - } - } - }); + addMouseListener(new MyMouseAdapter()); } + } private SelectedRules rules; - + private JTextArea exampleTextArea= new JTextArea(10, 50); public PMDOptionPane() { super(PMDJEditPlugin.NAME); try { @@ -69,10 +83,24 @@ public class PMDOptionPane extends AbstractOptionPane implements OptionPane { public void init() { removeAll(); + addComponent(new JLabel("Please see http://pmd.sf.net/ for more information")); + + JPanel rulesPanel = new JPanel(); + rulesPanel.setBorder(BorderFactory.createTitledBorder("Rules")); JList list = new CheckboxList(rules.getAllBoxes()); list.setSelectionMode(ListSelectionModel.MULTIPLE_INTERVAL_SELECTION); - addComponent(new JScrollPane(list)); + rulesPanel.add(new JScrollPane(list), BorderLayout.NORTH); + + JPanel textPanel = new JPanel(); + textPanel.setBorder(BorderFactory.createTitledBorder("Example")); + textPanel.add(new JScrollPane(exampleTextArea)); + + JPanel panel = new JPanel(); + panel.setLayout(new BorderLayout()); + panel.add(rulesPanel, BorderLayout.NORTH); + panel.add(textPanel, BorderLayout.SOUTH); + addComponent(panel); } public void save() { diff --git a/pmd-jedit/src/net/sourceforge/pmd/jedit/SelectedRules.java b/pmd-jedit/src/net/sourceforge/pmd/jedit/SelectedRules.java index ec1c4ba24c..3119e709b6 100644 --- a/pmd-jedit/src/net/sourceforge/pmd/jedit/SelectedRules.java +++ b/pmd-jedit/src/net/sourceforge/pmd/jedit/SelectedRules.java @@ -18,6 +18,7 @@ import net.sourceforge.pmd.Rule; public class SelectedRules { + // Rule -> JCheckBox private Map rules = new TreeMap(new Comparator() { public int compare(Object o1, Object o2) { Rule r1 = (Rule)o1; @@ -41,6 +42,17 @@ public class SelectedRules { return rules.size(); } + public Rule getRule(JCheckBox candidate) { + for (Iterator i = rules.keySet().iterator(); i.hasNext();) { + Rule rule = (Rule)i.next(); + JCheckBox box = (JCheckBox)rules.get(rule); + if (box.equals(candidate)) { + return rule; + } + } + throw new RuntimeException("Couldn't find a rule that mapped to the passed in JCheckBox " + candidate); + } + public JCheckBox get(Object key) { return (JCheckBox)rules.get(key); }