Skip to content

Commit 89d3d8e

Browse files
committed
Some localizing and refactoring.
1 parent 7f3332e commit 89d3d8e

3 files changed

Lines changed: 71 additions & 80 deletions

File tree

‎plugin/src/main/java/com/intellij/java/impl/ig/style/UnnecessaryFinalOnLocalVariableOrParameterInspection.java‎

Lines changed: 39 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
import com.siyeh.ig.InspectionGadgetsFix;
2323
import com.siyeh.ig.psiutils.VariableAccessUtils;
2424
import com.siyeh.localize.InspectionGadgetsLocalize;
25+
import consulo.annotation.access.RequiredReadAction;
2526
import consulo.annotation.component.ExtensionImpl;
2627
import consulo.language.psi.PsiElement;
2728
import consulo.language.psi.util.PsiTreeUtil;
@@ -30,8 +31,6 @@
3031
import jakarta.annotation.Nullable;
3132

3233
import javax.swing.*;
33-
import javax.swing.event.ChangeEvent;
34-
import javax.swing.event.ChangeListener;
3534
import java.awt.*;
3635

3736
@ExtensionImpl
@@ -51,11 +50,12 @@ public LocalizeValue getDisplayName() {
5150
return InspectionGadgetsLocalize.unnecessaryFinalOnLocalVariableOrParameterDisplayName();
5251
}
5352

54-
@Override
5553
@Nonnull
54+
@Override
55+
@RequiredReadAction
5656
public String buildErrorString(Object... infos) {
57-
final PsiVariable variable = (PsiVariable) infos[0];
58-
final String variableName = variable.getName();
57+
PsiVariable variable = (PsiVariable) infos[0];
58+
String variableName = variable.getName();
5959
return variable instanceof PsiParameter
6060
? InspectionGadgetsLocalize.unnecessaryFinalOnParameterProblemDescriptor(variableName).get()
6161
: InspectionGadgetsLocalize.unnecessaryFinalOnLocalVariableProblemDescriptor(variableName).get();
@@ -64,8 +64,8 @@ public String buildErrorString(Object... infos) {
6464
@Override
6565
@Nullable
6666
public JComponent createOptionsPanel() {
67-
final JPanel panel = new JPanel(new GridBagLayout());
68-
final JCheckBox abstractOnlyCheckBox =
67+
JPanel panel = new JPanel(new GridBagLayout());
68+
JCheckBox abstractOnlyCheckBox =
6969
new JCheckBox(InspectionGadgetsLocalize.unnecessaryFinalOnParameterOnlyInterfaceOption().get(), onlyWarnOnAbstractMethods) {
7070
@Override
7171
public void setEnabled(boolean b) {
@@ -80,37 +80,26 @@ public void setEnabled(boolean b) {
8080
}
8181
};
8282
abstractOnlyCheckBox.setEnabled(true);
83-
abstractOnlyCheckBox.addChangeListener(new ChangeListener() {
84-
@Override
85-
public void stateChanged(ChangeEvent e) {
86-
onlyWarnOnAbstractMethods = abstractOnlyCheckBox.isSelected();
87-
}
88-
});
89-
final JCheckBox reportLocalVariablesCheckBox =
83+
abstractOnlyCheckBox.addChangeListener(e -> onlyWarnOnAbstractMethods = abstractOnlyCheckBox.isSelected());
84+
JCheckBox reportLocalVariablesCheckBox =
9085
new JCheckBox(InspectionGadgetsLocalize.unnecessaryFinalReportLocalVariablesOption().get(), reportLocalVariables);
91-
final JCheckBox reportParametersCheckBox =
86+
JCheckBox reportParametersCheckBox =
9287
new JCheckBox(InspectionGadgetsLocalize.unnecessaryFinalReportParametersOption().get(), reportParameters);
9388

94-
reportLocalVariablesCheckBox.addChangeListener(new ChangeListener() {
95-
@Override
96-
public void stateChanged(ChangeEvent e) {
97-
reportLocalVariables = reportLocalVariablesCheckBox.isSelected();
98-
if (!reportLocalVariables) {
99-
reportParametersCheckBox.setSelected(true);
100-
}
89+
reportLocalVariablesCheckBox.addChangeListener(e -> {
90+
reportLocalVariables = reportLocalVariablesCheckBox.isSelected();
91+
if (!reportLocalVariables) {
92+
reportParametersCheckBox.setSelected(true);
10193
}
10294
});
103-
reportParametersCheckBox.addChangeListener(new ChangeListener() {
104-
@Override
105-
public void stateChanged(ChangeEvent e) {
106-
reportParameters = reportParametersCheckBox.isSelected();
107-
if (!reportParameters) {
108-
reportLocalVariablesCheckBox.setSelected(true);
109-
}
110-
abstractOnlyCheckBox.setEnabled(reportParameters);
95+
reportParametersCheckBox.addChangeListener(e -> {
96+
reportParameters = reportParametersCheckBox.isSelected();
97+
if (!reportParameters) {
98+
reportLocalVariablesCheckBox.setSelected(true);
11199
}
100+
abstractOnlyCheckBox.setEnabled(reportParameters);
112101
});
113-
final GridBagConstraints constraints = new GridBagConstraints();
102+
GridBagConstraints constraints = new GridBagConstraints();
114103
constraints.anchor = GridBagConstraints.NORTHWEST;
115104
constraints.fill = GridBagConstraints.HORIZONTAL;
116105
constraints.weightx = 1.0;
@@ -136,47 +125,43 @@ public InspectionGadgetsFix buildFix(Object... infos) {
136125

137126
private class UnnecessaryFinalOnLocalVariableOrParameterVisitor extends BaseInspectionVisitor {
138127
@Override
139-
public void visitDeclarationStatement(PsiDeclarationStatement statement) {
128+
public void visitDeclarationStatement(@Nonnull PsiDeclarationStatement statement) {
140129
super.visitDeclarationStatement(statement);
141130
if (!reportLocalVariables) {
142131
return;
143132
}
144-
final PsiElement[] declaredElements = statement.getDeclaredElements();
133+
PsiElement[] declaredElements = statement.getDeclaredElements();
145134
if (declaredElements.length == 0) {
146135
return;
147136
}
148-
for (final PsiElement declaredElement : declaredElements) {
149-
if (!(declaredElement instanceof PsiLocalVariable)) {
150-
return;
151-
}
152-
final PsiLocalVariable variable = (PsiLocalVariable) declaredElement;
153-
if (!variable.hasModifierProperty(PsiModifier.FINAL)) {
137+
for (PsiElement declaredElement : declaredElements) {
138+
if (!(declaredElement instanceof PsiLocalVariable variable && variable.hasModifierProperty(PsiModifier.FINAL))) {
154139
return;
155140
}
156141
}
157-
final PsiCodeBlock containingBlock = PsiTreeUtil.getParentOfType(statement, PsiCodeBlock.class);
142+
PsiCodeBlock containingBlock = PsiTreeUtil.getParentOfType(statement, PsiCodeBlock.class);
158143
if (containingBlock == null) {
159144
return;
160145
}
161146
for (PsiElement declaredElement : declaredElements) {
162-
final PsiLocalVariable variable = (PsiLocalVariable) declaredElement;
147+
PsiLocalVariable variable = (PsiLocalVariable) declaredElement;
163148
if (VariableAccessUtils.variableIsUsedInInnerClass(variable, containingBlock)) {
164149
return;
165150
}
166151
}
167-
final PsiLocalVariable variable = (PsiLocalVariable) statement.getDeclaredElements()[0];
152+
PsiLocalVariable variable = (PsiLocalVariable) statement.getDeclaredElements()[0];
168153
registerModifierError(PsiModifier.FINAL, variable, variable, PsiModifier.FINAL);
169154
}
170155

171156
@Override
172-
public void visitMethod(PsiMethod method) {
157+
public void visitMethod(@Nonnull PsiMethod method) {
173158
super.visitMethod(method);
174159
if (!reportParameters) {
175160
return;
176161
}
177-
final PsiParameterList parameterList = method.getParameterList();
178-
final PsiParameter[] parameters = parameterList.getParameters();
179-
for (final PsiParameter parameter : parameters) {
162+
PsiParameterList parameterList = method.getParameterList();
163+
PsiParameter[] parameters = parameterList.getParameters();
164+
for (PsiParameter parameter : parameters) {
180165
checkParameter(method, parameter);
181166
}
182167
}
@@ -185,14 +170,14 @@ private void checkParameter(PsiMethod method, PsiParameter parameter) {
185170
if (!parameter.hasModifierProperty(PsiModifier.FINAL)) {
186171
return;
187172
}
188-
final PsiClass containingClass = method.getContainingClass();
173+
PsiClass containingClass = method.getContainingClass();
189174
if (containingClass != null) {
190175
if (containingClass.isInterface() || containingClass.isAnnotationType()) {
191176
registerModifierError(PsiModifier.FINAL, parameter, parameter, PsiModifier.FINAL);
192177
return;
193178
}
194179
}
195-
if (method.hasModifierProperty(PsiModifier.ABSTRACT)) {
180+
if (method.isAbstract()) {
196181
registerModifierError(PsiModifier.FINAL, parameter, parameter, PsiModifier.FINAL);
197182
return;
198183
}
@@ -206,15 +191,15 @@ private void checkParameter(PsiMethod method, PsiParameter parameter) {
206191
}
207192

208193
@Override
209-
public void visitTryStatement(PsiTryStatement statement) {
194+
public void visitTryStatement(@Nonnull PsiTryStatement statement) {
210195
super.visitTryStatement(statement);
211196
if (onlyWarnOnAbstractMethods || !reportParameters) {
212197
return;
213198
}
214-
final PsiCatchSection[] catchSections = statement.getCatchSections();
199+
PsiCatchSection[] catchSections = statement.getCatchSections();
215200
for (PsiCatchSection catchSection : catchSections) {
216-
final PsiParameter parameter = catchSection.getParameter();
217-
final PsiCodeBlock catchBlock = catchSection.getCatchBlock();
201+
PsiParameter parameter = catchSection.getParameter();
202+
PsiCodeBlock catchBlock = catchSection.getCatchBlock();
218203
if (parameter == null || catchBlock == null) {
219204
continue;
220205
}
@@ -228,12 +213,12 @@ public void visitTryStatement(PsiTryStatement statement) {
228213
}
229214

230215
@Override
231-
public void visitForeachStatement(PsiForeachStatement statement) {
216+
public void visitForeachStatement(@Nonnull PsiForeachStatement statement) {
232217
super.visitForeachStatement(statement);
233218
if (onlyWarnOnAbstractMethods || !reportParameters) {
234219
return;
235220
}
236-
final PsiParameter parameter = statement.getIterationParameter();
221+
PsiParameter parameter = statement.getIterationParameter();
237222
if (!parameter.hasModifierProperty(PsiModifier.FINAL)) {
238223
return;
239224
}

‎plugin/src/main/java/com/intellij/java/impl/refactoring/inline/InlineStaticImportHandler.java‎

Lines changed: 30 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -15,46 +15,50 @@
1515
*/
1616
package com.intellij.java.impl.refactoring.inline;
1717

18+
import com.intellij.java.language.psi.PsiImportStaticStatement;
19+
import com.intellij.java.language.psi.PsiJavaCodeReferenceElement;
1820
import consulo.annotation.component.ExtensionImpl;
19-
import consulo.application.Result;
20-
import consulo.language.editor.WriteCommandAction;
2121
import consulo.codeEditor.Editor;
22-
import consulo.project.Project;
22+
import consulo.java.localize.JavaRefactoringLocalize;
2323
import consulo.language.psi.PsiElement;
24-
import com.intellij.java.language.psi.PsiImportStaticStatement;
25-
import com.intellij.java.language.psi.PsiJavaCodeReferenceElement;
2624
import consulo.language.psi.util.PsiTreeUtil;
25+
import consulo.project.Project;
26+
import consulo.ui.annotation.RequiredUIAccess;
27+
import consulo.undoRedo.CommandProcessor;
28+
import consulo.undoRedo.UndoConfirmationPolicy;
29+
import jakarta.annotation.Nonnull;
2730

2831
import java.util.List;
2932

3033
import static com.intellij.java.language.impl.psi.util.ImportsUtil.collectReferencesThrough;
3134
import static com.intellij.java.language.impl.psi.util.ImportsUtil.replaceAllAndDeleteImport;
3235

3336
/**
34-
* User: anna
35-
* Date: 9/1/11
37+
* @author anna
38+
* @since 2011-09-01
3639
*/
3740
@ExtensionImpl
3841
public class InlineStaticImportHandler extends JavaInlineActionHandler {
42+
@Override
43+
public boolean canInlineElement(@Nonnull PsiElement element) {
44+
if (element.getContainingFile() == null) {
45+
return false;
46+
}
47+
return PsiTreeUtil.getParentOfType(element, PsiImportStaticStatement.class) != null;
48+
}
3949

40-
private static final String REFACTORING_NAME = "Expand static import";
41-
42-
@Override
43-
public boolean canInlineElement(PsiElement element) {
44-
if (element.getContainingFile() == null) return false;
45-
return PsiTreeUtil.getParentOfType(element, PsiImportStaticStatement.class) != null;
46-
}
50+
@Override
51+
@RequiredUIAccess
52+
public void inlineElement(Project project, Editor editor, PsiElement element) {
53+
PsiImportStaticStatement staticStatement = PsiTreeUtil.getParentOfType(element, PsiImportStaticStatement.class);
54+
List<PsiJavaCodeReferenceElement> referenceElements =
55+
collectReferencesThrough(element.getContainingFile(), null, staticStatement);
4756

48-
@Override
49-
public void inlineElement(Project project, Editor editor, PsiElement element) {
50-
final PsiImportStaticStatement staticStatement = PsiTreeUtil.getParentOfType(element, PsiImportStaticStatement.class);
51-
final List<PsiJavaCodeReferenceElement> referenceElements =
52-
collectReferencesThrough(element.getContainingFile(), null, staticStatement);
53-
new WriteCommandAction(project, REFACTORING_NAME){
54-
@Override
55-
protected void run(Result result) throws Throwable {
56-
replaceAllAndDeleteImport(referenceElements, null, staticStatement);
57-
}
58-
}.execute();
59-
}
57+
CommandProcessor.getInstance().newCommand()
58+
.project(project)
59+
.name(JavaRefactoringLocalize.actionExpandStaticImportText())
60+
.undoConfirmationPolicy(UndoConfirmationPolicy.DO_NOT_REQUEST_CONFIRMATION)
61+
.inWriteAction()
62+
.run(() -> replaceAllAndDeleteImport(referenceElements, null, staticStatement));
63+
}
6064
}

‎plugin/src/main/resources/LOCALIZE-LIB/en_US/consulo.java.JavaRefactoringLocalize.yaml‎

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ a.class.can.not.be.made.an.inner.class.of.one.of.it.s.decendents:
66
text: A class can not be made an inner class of one of it's decendents.
77
action.column.header:
88
text: Action
9+
action.expand.static.import.text:
10+
text: Expand Static Import
911
action.rename.file.description:
1012
text: Rename selected file
1113
action.rename.file.text:

0 commit comments

Comments
 (0)