slowly putting the options panel together

git-svn-id: https://pmd.svn.sourceforge.net/svnroot/pmd/trunk@247 51baf565-9d33-0410-a72c-fc3788e3496d
This commit is contained in:
Tom Copeland
2002-07-09 17:20:08 +00:00
parent 4cbbf643df
commit b6bf0bf8b2
4 changed files with 143 additions and 19 deletions

View File

@ -16,3 +16,6 @@ pmd-menu=pmd.check - pmd.options
pmd-menu.label=PMD
pmd.check.label=$Check active buffer
pmd.options.label=$Options
options.pmd.label=PMD

View File

@ -24,6 +24,7 @@ public class PMDJEditPlugin extends EBPlugin {
public static final String MENU = "pmd-menu";
public static final String PROPERTY_PREFIX = "plugin.net.sourceforge.pmd.jedit.";
public static final String OPTION_PREFIX = "options.pmd.";
public static final String OPTION_RULESETS_PREFIX = "options.pmd.rulesets.";
private static PMDJEditPlugin instance = new PMDJEditPlugin();
@ -39,29 +40,19 @@ public class PMDJEditPlugin extends EBPlugin {
public void createMenuItems(Vector menuItems) {
menuItems.addElement(GUIUtilities.loadMenu(MENU));
}
public void createOptionPanes(OptionsDialog dialog) {
OptionGroup grp = new OptionGroup("PMD");
grp.addOptionPane(new PMDOptionPane());
dialog.addOptionGroup(grp);
}
// boilerplate JEdit code
public void instanceCheck(View view) {
String text = view.getTextArea().getText();
PMD pmd = new PMD();
ReportFactory rf = new ReportFactory();
RuleContext ctx = new RuleContext();
RuleSetFactory ruleSetFactory = new RuleSetFactory();
RuleSet rules = ruleSetFactory.createRuleSet(pmd.getClass().getClassLoader().getResourceAsStream("rulesets/unusedcode.xml"));
ctx.setReport(rf.createReport("xml"));
ctx.setSourceCodeFilename("this");
try {
// TODO switch to use StringReader once PMD 0.4 gets released
pmd.processFile(new StringBufferInputStream(text), rules, ctx);
pmd.processFile(new StringBufferInputStream(view.getTextArea().getText()), rules, ctx);
StringBuffer msg = new StringBuffer();
for (Iterator i = ctx.getReport().iterator(); i.hasNext();) {
@ -78,7 +69,7 @@ public class PMDJEditPlugin extends EBPlugin {
}
public void instanceDisplayPreferencesDialog(View view) {
PMDOptionPane options = new PMDOptionPane();
}

View File

@ -10,12 +10,70 @@ import org.gjt.sp.jedit.AbstractOptionPane;
import org.gjt.sp.jedit.jEdit;
import org.gjt.sp.jedit.View;
import javax.swing.*;
import java.awt.*;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
public class PMDOptionPane extends AbstractOptionPane implements OptionPane {
private static final String NAME = "PMD Options";
private static class SelectedRuleSetsMap {
private Map selections = new HashMap();
public SelectedRuleSetsMap() {
selections.put("basic", createCheckBox("basic"));
selections.put("unusedcode", createCheckBox("unusedcode"));
selections.put("design", createCheckBox("design"));
}
public Iterator keys() {
return selections.keySet().iterator();
}
public int size() {
return selections.size();
}
public JCheckBox get(Object key) {
return (JCheckBox)selections.get(key);
}
public void save() {
for (Iterator i = keys(); i.hasNext();) {
String key = (String)i.next();
jEdit.setBooleanProperty(PMDJEditPlugin.OPTION_RULESETS_PREFIX + key, get(key).isSelected());
}
}
private JCheckBox createCheckBox(String name) {
JCheckBox box = new JCheckBox();
box.setSelected(jEdit.getBooleanProperty(PMDJEditPlugin.OPTION_RULESETS_PREFIX + name, true));
return box;
}
}
private class SaveAL implements ActionListener {
public void actionPerformed(ActionEvent e) {
selectedRuleSets.save();
}
}
private class CloseAL implements ActionListener {
public void actionPerformed(ActionEvent e) {
JOptionPane.showMessageDialog(null, "hi");
}
}
private static final String NAME = "PMD Options";
private SelectedRuleSetsMap selectedRuleSets = new SelectedRuleSetsMap();
public PMDOptionPane() {
super(NAME);
_init();
}
public String getName() {
@ -23,13 +81,37 @@ public class PMDOptionPane extends AbstractOptionPane implements OptionPane {
}
public void _init() {
throw new RuntimeException("HI!!!!");
/*
for (int i = 0; i < jEdit.getViews().length; i++) {
View v = jEdit.getViews()[i];
v.getStatus().setMessage("HOWDY");
super._init();
JPanel checkBoxPanel = new JPanel();
checkBoxPanel.setBackground(Color.white);
checkBoxPanel.setLayout(new GridLayout(selectedRuleSets.size(), 2));
for (Iterator i = selectedRuleSets.keys(); i.hasNext();) {
String key = (String)i.next();
JPanel oneBoxPanel = new JPanel();
oneBoxPanel.add(new JLabel(key, JLabel.LEFT));
oneBoxPanel.add((JCheckBox)selectedRuleSets.get(key));
checkBoxPanel.add(oneBoxPanel);
}
*/
JButton saveButton = new JButton("Save");
saveButton.addActionListener(new SaveAL());
JPanel buttonPanel = new JPanel();
buttonPanel.add(saveButton);
JButton closeButton = new JButton("Close");
closeButton.addActionListener(new CloseAL());
buttonPanel.add(closeButton);
JDialog dialog = new JDialog(jEdit.getFirstView(), "PMD", true);
dialog.setTitle("PMD");
dialog.getContentPane().setLayout(new BorderLayout());
dialog.getContentPane().add(checkBoxPanel, BorderLayout.CENTER);
dialog.getContentPane().add(buttonPanel, BorderLayout.SOUTH);
dialog.setSize(new Dimension(500,300));
dialog.pack();
dialog.setLocationRelativeTo(jEdit.getFirstView());
dialog.setVisible(true);
}
}

View File

@ -0,0 +1,48 @@
/*
* User: tom
* Date: Jul 9, 2002
* Time: 1:18:38 PM
*/
package net.sourceforge.pmd.jedit;
import org.gjt.sp.jedit.jEdit;
import javax.swing.*;
import java.util.Map;
import java.util.HashMap;
import java.util.Iterator;
public class SelectedRuleSetsMap {
private Map selections = new HashMap();
public SelectedRuleSetsMap() {
selections.put("basic", createCheckBox("basic"));
selections.put("unusedcode", createCheckBox("unusedcode"));
selections.put("design", createCheckBox("design"));
}
public Iterator keys() {
return selections.keySet().iterator();
}
public int size() {
return selections.size();
}
public JCheckBox get(Object key) {
return (JCheckBox)selections.get(key);
}
public void save() {
for (Iterator i = keys(); i.hasNext();) {
String key = (String)i.next();
jEdit.setBooleanProperty(PMDJEditPlugin.OPTION_RULESETS_PREFIX + key, get(key).isSelected());
}
}
private JCheckBox createCheckBox(String name) {
JCheckBox box = new JCheckBox();
box.setSelected(jEdit.getBooleanProperty(PMDJEditPlugin.OPTION_RULESETS_PREFIX + name, true));
return box;
}
}