mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IG: reusable & simpler UI code
This commit is contained in:
+18
-8
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright 2000-2016 JetBrains s.r.o.
|
||||
* Copyright 2000-2017 JetBrains s.r.o.
|
||||
*
|
||||
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||
* you may not use this file except in compliance with the License.
|
||||
@@ -16,9 +16,11 @@
|
||||
package com.intellij.codeInspection.ui;
|
||||
|
||||
import com.intellij.codeInspection.InspectionProfileEntry;
|
||||
import com.intellij.util.ui.JBInsets;
|
||||
import org.jetbrains.annotations.NonNls;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.border.EmptyBorder;
|
||||
import javax.swing.event.ChangeEvent;
|
||||
import javax.swing.event.ChangeListener;
|
||||
import java.awt.*;
|
||||
@@ -40,10 +42,25 @@ public class MultipleCheckboxOptionsPanel extends JPanel {
|
||||
}
|
||||
|
||||
public void addCheckbox(String label, @NonNls String property) {
|
||||
addCheckboxEx(label, property);
|
||||
}
|
||||
|
||||
public JCheckBox addCheckboxEx(String label, @NonNls String property) {
|
||||
final boolean selected = myOptionAccessor.getOption(property);
|
||||
final JCheckBox checkBox = new JCheckBox(label, selected);
|
||||
configureCheckbox(myOptionAccessor, property, checkBox);
|
||||
addComponent(checkBox);
|
||||
return checkBox;
|
||||
}
|
||||
|
||||
public JCheckBox addDependentCheckBox(String label, @NonNls String property, JCheckBox controller) {
|
||||
final JCheckBox checkBox = addCheckboxEx(label, property);
|
||||
checkBox.setBorder(new EmptyBorder(new JBInsets(0, 30, 0, 0)));
|
||||
controller.addChangeListener(e -> {
|
||||
checkBox.setEnabled(controller.isEnabled() && controller.isSelected());
|
||||
});
|
||||
checkBox.setEnabled(controller.isEnabled() && controller.isSelected());
|
||||
return checkBox;
|
||||
}
|
||||
|
||||
public void addComponent(JComponent component) {
|
||||
@@ -68,12 +85,6 @@ public class MultipleCheckboxOptionsPanel extends JPanel {
|
||||
model.addChangeListener(changeListener);
|
||||
}
|
||||
|
||||
public static void initAndConfigureCheckbox(InspectionProfileEntry owner, String property, JCheckBox checkBox) {
|
||||
OptionAccessor optionAccessor = new OptionAccessor.Default(owner);
|
||||
checkBox.setSelected(optionAccessor.getOption(property));
|
||||
configureCheckbox(optionAccessor, property, checkBox);
|
||||
}
|
||||
|
||||
private static class CheckboxChangeListener implements ChangeListener {
|
||||
private final OptionAccessor myAccessor;
|
||||
private final String property;
|
||||
@@ -89,6 +100,5 @@ public class MultipleCheckboxOptionsPanel extends JPanel {
|
||||
public void stateChanged(ChangeEvent e) {
|
||||
myAccessor.setOption(property, model.isSelected());
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
+14
-61
@@ -16,10 +16,10 @@
|
||||
package com.siyeh.ig.style;
|
||||
|
||||
import com.intellij.codeInspection.CleanupLocalInspectionTool;
|
||||
import com.intellij.codeInspection.ui.MultipleCheckboxOptionsPanel;
|
||||
import com.intellij.psi.*;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.siyeh.InspectionGadgetsBundle;
|
||||
import com.siyeh.ig.BaseInspection;
|
||||
import com.siyeh.ig.BaseInspectionVisitor;
|
||||
import com.siyeh.ig.InspectionGadgetsFix;
|
||||
@@ -29,9 +29,8 @@ import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import javax.swing.*;
|
||||
import javax.swing.event.ChangeEvent;
|
||||
import javax.swing.event.ChangeListener;
|
||||
import java.awt.*;
|
||||
|
||||
import static com.siyeh.InspectionGadgetsBundle.message;
|
||||
|
||||
public class UnnecessaryFinalOnLocalVariableOrParameterInspection extends BaseInspection implements CleanupLocalInspectionTool {
|
||||
|
||||
@@ -47,7 +46,7 @@ public class UnnecessaryFinalOnLocalVariableOrParameterInspection extends BaseIn
|
||||
@Override
|
||||
@NotNull
|
||||
public String getDisplayName() {
|
||||
return InspectionGadgetsBundle.message("unnecessary.final.on.local.variable.or.parameter.display.name");
|
||||
return message("unnecessary.final.on.local.variable.or.parameter.display.name");
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -56,73 +55,27 @@ public class UnnecessaryFinalOnLocalVariableOrParameterInspection extends BaseIn
|
||||
final PsiVariable variable = (PsiVariable)infos[0];
|
||||
final String variableName = variable.getName();
|
||||
if (variable instanceof PsiParameter) {
|
||||
return InspectionGadgetsBundle.message("unnecessary.final.on.parameter.problem.descriptor", variableName);
|
||||
return message("unnecessary.final.on.parameter.problem.descriptor", variableName);
|
||||
}
|
||||
else {
|
||||
return InspectionGadgetsBundle.message("unnecessary.final.on.local.variable.problem.descriptor", variableName);
|
||||
return message("unnecessary.final.on.local.variable.problem.descriptor", variableName);
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@Nullable
|
||||
public JComponent createOptionsPanel() {
|
||||
final JPanel panel = new JPanel(new GridBagLayout());
|
||||
final JCheckBox abstractOnlyCheckBox =
|
||||
new JCheckBox(InspectionGadgetsBundle.message("unnecessary.final.on.parameter.only.interface.option"), onlyWarnOnAbstractMethods) {
|
||||
@Override
|
||||
public void setEnabled(boolean b) {
|
||||
// hack to display correctly on initial opening of
|
||||
// inspection settings (otherwise it is always enabled)
|
||||
if (b) {
|
||||
super.setEnabled(reportParameters);
|
||||
}
|
||||
else {
|
||||
super.setEnabled(false);
|
||||
}
|
||||
}
|
||||
};
|
||||
abstractOnlyCheckBox.setEnabled(true);
|
||||
abstractOnlyCheckBox.addChangeListener(new ChangeListener() {
|
||||
@Override
|
||||
public void stateChanged(ChangeEvent e) {
|
||||
onlyWarnOnAbstractMethods = abstractOnlyCheckBox.isSelected();
|
||||
}
|
||||
});
|
||||
final JCheckBox reportLocalVariablesCheckBox =
|
||||
new JCheckBox(InspectionGadgetsBundle.message("unnecessary.final.report.local.variables.option"), reportLocalVariables);
|
||||
final JCheckBox reportParametersCheckBox =
|
||||
new JCheckBox(InspectionGadgetsBundle.message("unnecessary.final.report.parameters.option"), reportParameters);
|
||||
final MultipleCheckboxOptionsPanel panel = new MultipleCheckboxOptionsPanel(this);
|
||||
final JCheckBox box1 = panel.addCheckboxEx(message("unnecessary.final.report.local.variables.option"), "reportLocalVariables");
|
||||
final JCheckBox box2 = panel.addCheckboxEx(message("unnecessary.final.report.parameters.option"), "reportParameters");
|
||||
panel.addDependentCheckBox(message("unnecessary.final.on.parameter.only.interface.option"), "onlyWarnOnAbstractMethods", box2);
|
||||
|
||||
reportLocalVariablesCheckBox.addChangeListener(new ChangeListener() {
|
||||
@Override
|
||||
public void stateChanged(ChangeEvent e) {
|
||||
reportLocalVariables = reportLocalVariablesCheckBox.isSelected();
|
||||
if (!reportLocalVariables) {
|
||||
reportParametersCheckBox.setSelected(true);
|
||||
}
|
||||
}
|
||||
box1.addChangeListener(e -> {
|
||||
if (!box1.isSelected()) box2.setSelected(true);
|
||||
});
|
||||
reportParametersCheckBox.addChangeListener(new ChangeListener() {
|
||||
@Override
|
||||
public void stateChanged(ChangeEvent e) {
|
||||
reportParameters = reportParametersCheckBox.isSelected();
|
||||
if (!reportParameters) {
|
||||
reportLocalVariablesCheckBox.setSelected(true);
|
||||
}
|
||||
abstractOnlyCheckBox.setEnabled(reportParameters);
|
||||
}
|
||||
box2.addChangeListener(e -> {
|
||||
if (!box2.isSelected()) box1.setSelected(true);
|
||||
});
|
||||
final GridBagConstraints constraints = new GridBagConstraints();
|
||||
constraints.anchor = GridBagConstraints.NORTHWEST;
|
||||
constraints.fill = GridBagConstraints.HORIZONTAL;
|
||||
constraints.weightx = 1.0;
|
||||
panel.add(reportLocalVariablesCheckBox, constraints);
|
||||
constraints.gridy = 1;
|
||||
panel.add(reportParametersCheckBox, constraints);
|
||||
constraints.insets.left = 20;
|
||||
constraints.gridy = 2;
|
||||
constraints.weighty = 1.0;
|
||||
panel.add(abstractOnlyCheckBox, constraints);
|
||||
return panel;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user