[java-inspections] Convert to OptPane

GitOrigin-RevId: 4043f5d75abf085d67e9f567232b16cc7dcd65c6
This commit is contained in:
Tagir Valeev
2022-12-21 09:33:58 +01:00
committed by intellij-monorepo-bot
parent 676dd7163b
commit 0db79fcd6d
9 changed files with 82 additions and 301 deletions

View File

@@ -18,26 +18,22 @@ package org.jetbrains.java.generate.inspection;
import com.intellij.codeInsight.TestFrameworks;
import com.intellij.codeInspection.ProblemHighlightType;
import com.intellij.codeInspection.ProblemsHolder;
import com.intellij.codeInspection.ui.MultipleCheckboxOptionsPanel;
import com.intellij.codeInspection.ui.RegExFormatter;
import com.intellij.codeInspection.ui.RegExInputVerifier;
import com.intellij.codeInspection.options.OptPane;
import com.intellij.codeInspection.options.RegexValidator;
import com.intellij.java.analysis.JavaAnalysisBundle;
import com.intellij.openapi.util.DefaultJDOMExternalizer;
import com.intellij.psi.*;
import com.intellij.psi.util.InheritanceUtil;
import com.intellij.ui.DocumentAdapter;
import com.intellij.util.ui.UIUtil;
import org.jdom.Element;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.java.generate.GenerateToStringContext;
import org.jetbrains.java.generate.GenerateToStringUtils;
import javax.swing.*;
import javax.swing.event.DocumentEvent;
import javax.swing.text.Document;
import java.util.regex.Pattern;
import java.util.regex.PatternSyntaxException;
import static com.intellij.codeInspection.options.OptPane.*;
/**
* Inspection to check if the current class overrides the toString() method.
* <p/>
@@ -163,44 +159,32 @@ public class ClassHasNoToStringMethodInspection extends AbstractToStringInspecti
};
}
/**
* Creates the options panel in the settings for user changeable options.
*
* @return the options panel
*/
@Override
public JComponent createOptionsPanel() {
final JFormattedTextField excludeClassNamesField = new JFormattedTextField(new RegExFormatter());
excludeClassNamesField.setValue(excludeClassNamesPattern);
excludeClassNamesField.setColumns(25);
excludeClassNamesField.setInputVerifier(new RegExInputVerifier());
excludeClassNamesField.setFocusLostBehavior(JFormattedTextField.COMMIT);
excludeClassNamesField.setMinimumSize(excludeClassNamesField.getPreferredSize());
UIUtil.fixFormattedField(excludeClassNamesField);
Document document = excludeClassNamesField.getDocument();
document.addDocumentListener(new DocumentAdapter() {
@Override
public @NotNull OptPane getOptionsPane() {
return pane(
string("excludeClassNames", JavaAnalysisBundle.message("inspection.class.has.no.to.string.method.exclude.classes.reg.exp.option"),
30, new RegexValidator()),
checkbox("excludeException", JavaAnalysisBundle.message("inspection.class.has.no.to.string.method.ignore.exception.classes.option")),
checkbox("excludeDeprecated",
JavaAnalysisBundle.message("inspection.class.has.no.to.string.method.ignore.deprecated.classes.option")),
checkbox("excludeEnum", JavaAnalysisBundle.message("inspection.class.has.no.to.string.method.ignore.enum.classes.option")),
checkbox("excludeRecords", JavaAnalysisBundle.message("inspection.class.has.no.to.string.method.ignore.records.option")),
checkbox("excludeAbstract", JavaAnalysisBundle.message("inspection.class.has.no.to.string.method.ignore.abstract.classes.option")),
checkbox("excludeTestCode", JavaAnalysisBundle.message("inspection.class.has.no.to.string.method.ignore.test.classes.option")),
checkbox("excludeInnerClasses", JavaAnalysisBundle.message("inspection.class.has.no.to.string.method.ignore.inner.classes.option"))
);
}
@Override
protected void textChanged(@NotNull DocumentEvent e) {
try {
excludeClassNamesField.commitEdit();
excludeClassNamesPattern = (Pattern)excludeClassNamesField.getValue();
excludeClassNames = excludeClassNamesPattern.pattern();
} catch (final Exception ignore) {}
}
});
final MultipleCheckboxOptionsPanel optionsPanel = new MultipleCheckboxOptionsPanel(this);
optionsPanel.addRow(new JLabel(JavaAnalysisBundle.message("inspection.class.has.no.to.string.method.exclude.classes.reg.exp.option")), excludeClassNamesField);
optionsPanel.addCheckbox(JavaAnalysisBundle.message("inspection.class.has.no.to.string.method.ignore.exception.classes.option"), "excludeException");
optionsPanel.addCheckbox(JavaAnalysisBundle.message("inspection.class.has.no.to.string.method.ignore.deprecated.classes.option"), "excludeDeprecated");
optionsPanel.addCheckbox(JavaAnalysisBundle.message("inspection.class.has.no.to.string.method.ignore.enum.classes.option"), "excludeEnum");
optionsPanel.addCheckbox(JavaAnalysisBundle.message("inspection.class.has.no.to.string.method.ignore.records.option"), "excludeRecords");
optionsPanel.addCheckbox(JavaAnalysisBundle.message("inspection.class.has.no.to.string.method.ignore.abstract.classes.option"), "excludeAbstract");
optionsPanel.addCheckbox(JavaAnalysisBundle.message("inspection.class.has.no.to.string.method.ignore.test.classes.option"), "excludeTestCode");
optionsPanel.addCheckbox(JavaAnalysisBundle.message("inspection.class.has.no.to.string.method.ignore.inner.classes.option"), "excludeInnerClasses");
return optionsPanel;
@Override
public void setOption(@NotNull String bindId, Object value) {
super.setOption(bindId, value);
try {
excludeClassNamesPattern = Pattern.compile(excludeClassNames);
}
catch (PatternSyntaxException ignore) {
excludeClassNamesPattern = null;
}
}
@Override
public void readSettings(@NotNull Element node) {