From 89d3d8eed4081d53ac4e6ea89e3686ac058a01fc Mon Sep 17 00:00:00 2001 From: UNV Date: Sat, 29 Nov 2025 16:37:51 +0300 Subject: [PATCH] Some localizing and refactoring. --- ...lOnLocalVariableOrParameterInspection.java | 93 ++++++++----------- .../inline/InlineStaticImportHandler.java | 56 +++++------ .../consulo.java.JavaRefactoringLocalize.yaml | 2 + 3 files changed, 71 insertions(+), 80 deletions(-) diff --git a/plugin/src/main/java/com/intellij/java/impl/ig/style/UnnecessaryFinalOnLocalVariableOrParameterInspection.java b/plugin/src/main/java/com/intellij/java/impl/ig/style/UnnecessaryFinalOnLocalVariableOrParameterInspection.java index 35b9860f1f..1d44186ced 100644 --- a/plugin/src/main/java/com/intellij/java/impl/ig/style/UnnecessaryFinalOnLocalVariableOrParameterInspection.java +++ b/plugin/src/main/java/com/intellij/java/impl/ig/style/UnnecessaryFinalOnLocalVariableOrParameterInspection.java @@ -22,6 +22,7 @@ import com.siyeh.ig.InspectionGadgetsFix; import com.siyeh.ig.psiutils.VariableAccessUtils; import com.siyeh.localize.InspectionGadgetsLocalize; +import consulo.annotation.access.RequiredReadAction; import consulo.annotation.component.ExtensionImpl; import consulo.language.psi.PsiElement; import consulo.language.psi.util.PsiTreeUtil; @@ -30,8 +31,6 @@ import jakarta.annotation.Nullable; import javax.swing.*; -import javax.swing.event.ChangeEvent; -import javax.swing.event.ChangeListener; import java.awt.*; @ExtensionImpl @@ -51,11 +50,12 @@ public LocalizeValue getDisplayName() { return InspectionGadgetsLocalize.unnecessaryFinalOnLocalVariableOrParameterDisplayName(); } - @Override @Nonnull + @Override + @RequiredReadAction public String buildErrorString(Object... infos) { - final PsiVariable variable = (PsiVariable) infos[0]; - final String variableName = variable.getName(); + PsiVariable variable = (PsiVariable) infos[0]; + String variableName = variable.getName(); return variable instanceof PsiParameter ? InspectionGadgetsLocalize.unnecessaryFinalOnParameterProblemDescriptor(variableName).get() : InspectionGadgetsLocalize.unnecessaryFinalOnLocalVariableProblemDescriptor(variableName).get(); @@ -64,8 +64,8 @@ public String buildErrorString(Object... infos) { @Override @Nullable public JComponent createOptionsPanel() { - final JPanel panel = new JPanel(new GridBagLayout()); - final JCheckBox abstractOnlyCheckBox = + JPanel panel = new JPanel(new GridBagLayout()); + JCheckBox abstractOnlyCheckBox = new JCheckBox(InspectionGadgetsLocalize.unnecessaryFinalOnParameterOnlyInterfaceOption().get(), onlyWarnOnAbstractMethods) { @Override public void setEnabled(boolean b) { @@ -80,37 +80,26 @@ public void setEnabled(boolean b) { } }; abstractOnlyCheckBox.setEnabled(true); - abstractOnlyCheckBox.addChangeListener(new ChangeListener() { - @Override - public void stateChanged(ChangeEvent e) { - onlyWarnOnAbstractMethods = abstractOnlyCheckBox.isSelected(); - } - }); - final JCheckBox reportLocalVariablesCheckBox = + abstractOnlyCheckBox.addChangeListener(e -> onlyWarnOnAbstractMethods = abstractOnlyCheckBox.isSelected()); + JCheckBox reportLocalVariablesCheckBox = new JCheckBox(InspectionGadgetsLocalize.unnecessaryFinalReportLocalVariablesOption().get(), reportLocalVariables); - final JCheckBox reportParametersCheckBox = + JCheckBox reportParametersCheckBox = new JCheckBox(InspectionGadgetsLocalize.unnecessaryFinalReportParametersOption().get(), reportParameters); - reportLocalVariablesCheckBox.addChangeListener(new ChangeListener() { - @Override - public void stateChanged(ChangeEvent e) { - reportLocalVariables = reportLocalVariablesCheckBox.isSelected(); - if (!reportLocalVariables) { - reportParametersCheckBox.setSelected(true); - } + reportLocalVariablesCheckBox.addChangeListener(e -> { + reportLocalVariables = reportLocalVariablesCheckBox.isSelected(); + if (!reportLocalVariables) { + reportParametersCheckBox.setSelected(true); } }); - reportParametersCheckBox.addChangeListener(new ChangeListener() { - @Override - public void stateChanged(ChangeEvent e) { - reportParameters = reportParametersCheckBox.isSelected(); - if (!reportParameters) { - reportLocalVariablesCheckBox.setSelected(true); - } - abstractOnlyCheckBox.setEnabled(reportParameters); + reportParametersCheckBox.addChangeListener(e -> { + reportParameters = reportParametersCheckBox.isSelected(); + if (!reportParameters) { + reportLocalVariablesCheckBox.setSelected(true); } + abstractOnlyCheckBox.setEnabled(reportParameters); }); - final GridBagConstraints constraints = new GridBagConstraints(); + GridBagConstraints constraints = new GridBagConstraints(); constraints.anchor = GridBagConstraints.NORTHWEST; constraints.fill = GridBagConstraints.HORIZONTAL; constraints.weightx = 1.0; @@ -136,47 +125,43 @@ public InspectionGadgetsFix buildFix(Object... infos) { private class UnnecessaryFinalOnLocalVariableOrParameterVisitor extends BaseInspectionVisitor { @Override - public void visitDeclarationStatement(PsiDeclarationStatement statement) { + public void visitDeclarationStatement(@Nonnull PsiDeclarationStatement statement) { super.visitDeclarationStatement(statement); if (!reportLocalVariables) { return; } - final PsiElement[] declaredElements = statement.getDeclaredElements(); + PsiElement[] declaredElements = statement.getDeclaredElements(); if (declaredElements.length == 0) { return; } - for (final PsiElement declaredElement : declaredElements) { - if (!(declaredElement instanceof PsiLocalVariable)) { - return; - } - final PsiLocalVariable variable = (PsiLocalVariable) declaredElement; - if (!variable.hasModifierProperty(PsiModifier.FINAL)) { + for (PsiElement declaredElement : declaredElements) { + if (!(declaredElement instanceof PsiLocalVariable variable && variable.hasModifierProperty(PsiModifier.FINAL))) { return; } } - final PsiCodeBlock containingBlock = PsiTreeUtil.getParentOfType(statement, PsiCodeBlock.class); + PsiCodeBlock containingBlock = PsiTreeUtil.getParentOfType(statement, PsiCodeBlock.class); if (containingBlock == null) { return; } for (PsiElement declaredElement : declaredElements) { - final PsiLocalVariable variable = (PsiLocalVariable) declaredElement; + PsiLocalVariable variable = (PsiLocalVariable) declaredElement; if (VariableAccessUtils.variableIsUsedInInnerClass(variable, containingBlock)) { return; } } - final PsiLocalVariable variable = (PsiLocalVariable) statement.getDeclaredElements()[0]; + PsiLocalVariable variable = (PsiLocalVariable) statement.getDeclaredElements()[0]; registerModifierError(PsiModifier.FINAL, variable, variable, PsiModifier.FINAL); } @Override - public void visitMethod(PsiMethod method) { + public void visitMethod(@Nonnull PsiMethod method) { super.visitMethod(method); if (!reportParameters) { return; } - final PsiParameterList parameterList = method.getParameterList(); - final PsiParameter[] parameters = parameterList.getParameters(); - for (final PsiParameter parameter : parameters) { + PsiParameterList parameterList = method.getParameterList(); + PsiParameter[] parameters = parameterList.getParameters(); + for (PsiParameter parameter : parameters) { checkParameter(method, parameter); } } @@ -185,14 +170,14 @@ private void checkParameter(PsiMethod method, PsiParameter parameter) { if (!parameter.hasModifierProperty(PsiModifier.FINAL)) { return; } - final PsiClass containingClass = method.getContainingClass(); + PsiClass containingClass = method.getContainingClass(); if (containingClass != null) { if (containingClass.isInterface() || containingClass.isAnnotationType()) { registerModifierError(PsiModifier.FINAL, parameter, parameter, PsiModifier.FINAL); return; } } - if (method.hasModifierProperty(PsiModifier.ABSTRACT)) { + if (method.isAbstract()) { registerModifierError(PsiModifier.FINAL, parameter, parameter, PsiModifier.FINAL); return; } @@ -206,15 +191,15 @@ private void checkParameter(PsiMethod method, PsiParameter parameter) { } @Override - public void visitTryStatement(PsiTryStatement statement) { + public void visitTryStatement(@Nonnull PsiTryStatement statement) { super.visitTryStatement(statement); if (onlyWarnOnAbstractMethods || !reportParameters) { return; } - final PsiCatchSection[] catchSections = statement.getCatchSections(); + PsiCatchSection[] catchSections = statement.getCatchSections(); for (PsiCatchSection catchSection : catchSections) { - final PsiParameter parameter = catchSection.getParameter(); - final PsiCodeBlock catchBlock = catchSection.getCatchBlock(); + PsiParameter parameter = catchSection.getParameter(); + PsiCodeBlock catchBlock = catchSection.getCatchBlock(); if (parameter == null || catchBlock == null) { continue; } @@ -228,12 +213,12 @@ public void visitTryStatement(PsiTryStatement statement) { } @Override - public void visitForeachStatement(PsiForeachStatement statement) { + public void visitForeachStatement(@Nonnull PsiForeachStatement statement) { super.visitForeachStatement(statement); if (onlyWarnOnAbstractMethods || !reportParameters) { return; } - final PsiParameter parameter = statement.getIterationParameter(); + PsiParameter parameter = statement.getIterationParameter(); if (!parameter.hasModifierProperty(PsiModifier.FINAL)) { return; } diff --git a/plugin/src/main/java/com/intellij/java/impl/refactoring/inline/InlineStaticImportHandler.java b/plugin/src/main/java/com/intellij/java/impl/refactoring/inline/InlineStaticImportHandler.java index 9e34ddda54..e0f0d79331 100644 --- a/plugin/src/main/java/com/intellij/java/impl/refactoring/inline/InlineStaticImportHandler.java +++ b/plugin/src/main/java/com/intellij/java/impl/refactoring/inline/InlineStaticImportHandler.java @@ -15,15 +15,18 @@ */ package com.intellij.java.impl.refactoring.inline; +import com.intellij.java.language.psi.PsiImportStaticStatement; +import com.intellij.java.language.psi.PsiJavaCodeReferenceElement; import consulo.annotation.component.ExtensionImpl; -import consulo.application.Result; -import consulo.language.editor.WriteCommandAction; import consulo.codeEditor.Editor; -import consulo.project.Project; +import consulo.java.localize.JavaRefactoringLocalize; import consulo.language.psi.PsiElement; -import com.intellij.java.language.psi.PsiImportStaticStatement; -import com.intellij.java.language.psi.PsiJavaCodeReferenceElement; import consulo.language.psi.util.PsiTreeUtil; +import consulo.project.Project; +import consulo.ui.annotation.RequiredUIAccess; +import consulo.undoRedo.CommandProcessor; +import consulo.undoRedo.UndoConfirmationPolicy; +import jakarta.annotation.Nonnull; import java.util.List; @@ -31,30 +34,31 @@ import static com.intellij.java.language.impl.psi.util.ImportsUtil.replaceAllAndDeleteImport; /** - * User: anna - * Date: 9/1/11 + * @author anna + * @since 2011-09-01 */ @ExtensionImpl public class InlineStaticImportHandler extends JavaInlineActionHandler { + @Override + public boolean canInlineElement(@Nonnull PsiElement element) { + if (element.getContainingFile() == null) { + return false; + } + return PsiTreeUtil.getParentOfType(element, PsiImportStaticStatement.class) != null; + } - private static final String REFACTORING_NAME = "Expand static import"; - - @Override - public boolean canInlineElement(PsiElement element) { - if (element.getContainingFile() == null) return false; - return PsiTreeUtil.getParentOfType(element, PsiImportStaticStatement.class) != null; - } + @Override + @RequiredUIAccess + public void inlineElement(Project project, Editor editor, PsiElement element) { + PsiImportStaticStatement staticStatement = PsiTreeUtil.getParentOfType(element, PsiImportStaticStatement.class); + List referenceElements = + collectReferencesThrough(element.getContainingFile(), null, staticStatement); - @Override - public void inlineElement(Project project, Editor editor, PsiElement element) { - final PsiImportStaticStatement staticStatement = PsiTreeUtil.getParentOfType(element, PsiImportStaticStatement.class); - final List referenceElements = - collectReferencesThrough(element.getContainingFile(), null, staticStatement); - new WriteCommandAction(project, REFACTORING_NAME){ - @Override - protected void run(Result result) throws Throwable { - replaceAllAndDeleteImport(referenceElements, null, staticStatement); - } - }.execute(); - } + CommandProcessor.getInstance().newCommand() + .project(project) + .name(JavaRefactoringLocalize.actionExpandStaticImportText()) + .undoConfirmationPolicy(UndoConfirmationPolicy.DO_NOT_REQUEST_CONFIRMATION) + .inWriteAction() + .run(() -> replaceAllAndDeleteImport(referenceElements, null, staticStatement)); + } } diff --git a/plugin/src/main/resources/LOCALIZE-LIB/en_US/consulo.java.JavaRefactoringLocalize.yaml b/plugin/src/main/resources/LOCALIZE-LIB/en_US/consulo.java.JavaRefactoringLocalize.yaml index 1bf9fd567a..538f70a76a 100644 --- a/plugin/src/main/resources/LOCALIZE-LIB/en_US/consulo.java.JavaRefactoringLocalize.yaml +++ b/plugin/src/main/resources/LOCALIZE-LIB/en_US/consulo.java.JavaRefactoringLocalize.yaml @@ -6,6 +6,8 @@ a.class.can.not.be.made.an.inner.class.of.one.of.it.s.decendents: text: A class can not be made an inner class of one of it's decendents. action.column.header: text: Action +action.expand.static.import.text: + text: Expand Static Import action.rename.file.description: text: Rename selected file action.rename.file.text: