Skip to content

Commit e9d9b77

Browse files
committed
Localizing quick fixes (part 2).
1 parent 10e2bc5 commit e9d9b77

9 files changed

Lines changed: 518 additions & 517 deletions

File tree

java-analysis-api/src/main/java/com/intellij/java/analysis/codeInsight/intention/QuickFixFactory.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -508,7 +508,7 @@ public abstract LocalQuickFixAndIntentionActionOnPsiElement createAccessStaticVi
508508
public abstract IntentionAction createAddMissingEnumBranchesFix(@Nonnull PsiSwitchBlock switchBlock, @Nonnull Set<String> missingCases);
509509

510510
@Nonnull
511-
public abstract IntentionAction createAddSwitchDefaultFix(@Nonnull PsiSwitchBlock switchBlock, @Nullable String message);
511+
public abstract IntentionAction createAddSwitchDefaultFix(@Nonnull PsiSwitchBlock switchBlock, @Nonnull LocalizeValue message);
512512

513513
@Nonnull
514514
public abstract IntentionAction createWrapSwitchRuleStatementsIntoBlockFix(PsiSwitchLabeledRuleStatement rule);

java-analysis-impl/src/main/java/com/intellij/java/analysis/impl/codeInsight/daemon/impl/analysis/HighlightUtil.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2532,7 +2532,7 @@ public static Collection<HighlightInfo> checkSwitchLabelValues(@Nonnull PsiSwitc
25322532
if (!missingConstants.isEmpty()) {
25332533
hlBuilder.registerFix(factory.createAddMissingEnumBranchesFix(switchBlock, missingConstants));
25342534
}
2535-
hlBuilder.registerFix(factory.createAddSwitchDefaultFix(switchBlock, null));
2535+
hlBuilder.registerFix(factory.createAddSwitchDefaultFix(switchBlock, LocalizeValue.empty()));
25362536
results.add(hlBuilder.create());
25372537
}
25382538
}

plugin/src/main/java/com/intellij/java/impl/codeInsight/daemon/impl/quickfix/OptimizeImportsFix.java

Lines changed: 33 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -18,45 +18,50 @@
1818
import com.intellij.java.language.psi.PsiJavaFile;
1919
import com.intellij.java.language.psi.codeStyle.JavaCodeStyleManager;
2020
import consulo.codeEditor.Editor;
21-
import consulo.java.analysis.impl.JavaQuickFixBundle;
21+
import consulo.java.analysis.impl.localize.JavaQuickFixLocalize;
2222
import consulo.language.editor.FileModificationService;
2323
import consulo.language.editor.intention.SyntheticIntentionAction;
2424
import consulo.language.psi.PsiFile;
2525
import consulo.language.util.IncorrectOperationException;
26+
import consulo.localize.LocalizeValue;
2627
import consulo.logging.Logger;
2728
import consulo.project.Project;
2829

2930
import jakarta.annotation.Nonnull;
3031

3132
public class OptimizeImportsFix implements SyntheticIntentionAction {
32-
private static final Logger LOG = Logger.getInstance(OptimizeImportsFix.class);
33-
34-
@Override
35-
@Nonnull
36-
public String getText() {
37-
return JavaQuickFixBundle.message("optimize.imports.fix");
38-
}
39-
40-
@Override
41-
public boolean isAvailable(@Nonnull Project project, Editor editor, PsiFile file) {
42-
return file.getManager().isInProject(file) && file instanceof PsiJavaFile;
43-
}
44-
45-
@Override
46-
public void invoke(@Nonnull Project project, Editor editor, PsiFile file) {
47-
if (!(file instanceof PsiJavaFile)) return;
48-
if (!FileModificationService.getInstance().prepareFileForWrite(file)) return;
49-
50-
try {
51-
JavaCodeStyleManager.getInstance(project).optimizeImports(file);
33+
private static final Logger LOG = Logger.getInstance(OptimizeImportsFix.class);
34+
35+
@Nonnull
36+
@Override
37+
public LocalizeValue getText() {
38+
return JavaQuickFixLocalize.optimizeImportsFix();
39+
}
40+
41+
@Override
42+
public boolean isAvailable(@Nonnull Project project, Editor editor, PsiFile file) {
43+
return file.getManager().isInProject(file) && file instanceof PsiJavaFile;
5244
}
53-
catch (IncorrectOperationException e) {
54-
LOG.error(e);
45+
46+
@Override
47+
public void invoke(@Nonnull Project project, Editor editor, PsiFile file) {
48+
if (!(file instanceof PsiJavaFile)) {
49+
return;
50+
}
51+
if (!FileModificationService.getInstance().prepareFileForWrite(file)) {
52+
return;
53+
}
54+
55+
try {
56+
JavaCodeStyleManager.getInstance(project).optimizeImports(file);
57+
}
58+
catch (IncorrectOperationException e) {
59+
LOG.error(e);
60+
}
5561
}
56-
}
5762

58-
@Override
59-
public boolean startInWriteAction() {
60-
return true;
61-
}
63+
@Override
64+
public boolean startInWriteAction() {
65+
return true;
66+
}
6267
}

plugin/src/main/java/com/intellij/java/impl/codeInsight/intention/impl/config/QuickFixFactoryImpl.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -761,7 +761,7 @@ public IntentionAction createOptimizeImportsFix(final boolean onTheFly) {
761761
return new SyntheticIntentionAction() {
762762
@Nonnull
763763
@Override
764-
public String getText() {
764+
public LocalizeValue getText() {
765765
return fix.getText();
766766
}
767767

@@ -855,7 +855,7 @@ public LocalQuickFixAndIntentionActionOnPsiElement createDeleteFix(@Nonnull PsiE
855855

856856
@Nonnull
857857
public LocalQuickFixAndIntentionActionOnPsiElement createDeleteFix(@Nonnull PsiElement element, @Nonnull LocalizeValue text) {
858-
return new DeleteElementFix(element, text.get());
858+
return new DeleteElementFix(element, text);
859859
}
860860

861861
@Nonnull
@@ -1042,7 +1042,7 @@ public IntentionAction createAddMissingEnumBranchesFix(@Nonnull PsiSwitchBlock s
10421042

10431043
@Nonnull
10441044
@Override
1045-
public IntentionAction createAddSwitchDefaultFix(@Nonnull PsiSwitchBlock switchBlock, @Nullable String message) {
1045+
public IntentionAction createAddSwitchDefaultFix(@Nonnull PsiSwitchBlock switchBlock, @Nonnull LocalizeValue message) {
10461046
return new CreateDefaultBranchFix(switchBlock, message);
10471047
}
10481048

plugin/src/main/java/com/intellij/java/impl/codeInspection/inheritance/ChangeSuperClassFix.java

Lines changed: 82 additions & 85 deletions
Original file line numberDiff line numberDiff line change
@@ -21,110 +21,107 @@
2121
import consulo.language.editor.WriteCommandAction;
2222
import consulo.language.editor.inspection.LocalQuickFix;
2323
import consulo.language.editor.inspection.ProblemDescriptor;
24-
import consulo.language.editor.inspection.localize.InspectionLocalize;
2524
import consulo.language.editor.intention.LowPriorityAction;
2625
import consulo.language.psi.PsiElement;
26+
import consulo.localize.LocalizeValue;
2727
import consulo.project.Project;
28-
import org.jetbrains.annotations.TestOnly;
29-
3028
import jakarta.annotation.Nonnull;
29+
import org.jetbrains.annotations.TestOnly;
3130

3231
/**
3332
* @author Dmitry Batkovich <dmitry.batkovich@jetbrains.com>
3433
*/
3534
public class ChangeSuperClassFix implements LocalQuickFix {
36-
@Nonnull
37-
private final PsiClass myNewSuperClass;
38-
@Nonnull
39-
private final PsiClass myOldSuperClass;
40-
private final int myPercent;
35+
@Nonnull
36+
private final PsiClass myNewSuperClass;
37+
@Nonnull
38+
private final PsiClass myOldSuperClass;
39+
private final int myPercent;
4140

42-
public ChangeSuperClassFix(@Nonnull final PsiClass newSuperClass, final int percent, @Nonnull final PsiClass oldSuperClass) {
43-
myNewSuperClass = newSuperClass;
44-
myOldSuperClass = oldSuperClass;
45-
myPercent = percent;
46-
}
41+
public ChangeSuperClassFix(@Nonnull final PsiClass newSuperClass, final int percent, @Nonnull final PsiClass oldSuperClass) {
42+
myNewSuperClass = newSuperClass;
43+
myOldSuperClass = oldSuperClass;
44+
myPercent = percent;
45+
}
4746

48-
@Nonnull
49-
@TestOnly
50-
public PsiClass getNewSuperClass() {
51-
return myNewSuperClass;
52-
}
47+
@Nonnull
48+
@TestOnly
49+
public PsiClass getNewSuperClass() {
50+
return myNewSuperClass;
51+
}
5352

54-
@TestOnly
55-
public int getPercent() {
56-
return myPercent;
57-
}
53+
@TestOnly
54+
public int getPercent() {
55+
return myPercent;
56+
}
5857

59-
@Nonnull
60-
@Override
61-
public String getName() {
62-
return String.format("Make extends '%s' - %s%%", myNewSuperClass.getQualifiedName(), myPercent);
63-
}
58+
@Nonnull
59+
@Override
60+
public LocalizeValue getName() {
61+
return LocalizeValue.localizeTODO(String.format("Make extends '%s' - %s%%", myNewSuperClass.getQualifiedName(), myPercent));
62+
}
6463

65-
@Nonnull
66-
@Override
67-
public String getFamilyName() {
68-
return InspectionLocalize.groupNamesInheritanceIssues().get();
69-
}
64+
@Override
65+
public void applyFix(@Nonnull final Project project, @Nonnull final ProblemDescriptor problemDescriptor) {
66+
changeSuperClass((PsiClass) problemDescriptor.getPsiElement(), myOldSuperClass, myNewSuperClass);
67+
}
7068

71-
@Override
72-
public void applyFix(@Nonnull final Project project, @Nonnull final ProblemDescriptor problemDescriptor) {
73-
changeSuperClass((PsiClass)problemDescriptor.getPsiElement(), myOldSuperClass, myNewSuperClass);
74-
}
69+
/**
70+
* myOldSuperClass and myNewSuperClass can be interfaces or classes in any combination
71+
* <p/>
72+
* 1. not checks that myOldSuperClass is really super of aClass
73+
* 2. not checks that myNewSuperClass not exists in currently existed supers
74+
*/
75+
private static void changeSuperClass(
76+
@Nonnull final PsiClass aClass,
77+
@Nonnull final PsiClass oldSuperClass,
78+
@Nonnull final PsiClass newSuperClass
79+
) {
80+
if (!FileModificationService.getInstance().preparePsiElementForWrite(aClass)) {
81+
return;
82+
}
7583

76-
/**
77-
* myOldSuperClass and myNewSuperClass can be interfaces or classes in any combination
78-
* <p/>
79-
* 1. not checks that myOldSuperClass is really super of aClass
80-
* 2. not checks that myNewSuperClass not exists in currently existed supers
81-
*/
82-
private static void changeSuperClass(@Nonnull final PsiClass aClass,
83-
@Nonnull final PsiClass oldSuperClass,
84-
@Nonnull final PsiClass newSuperClass) {
85-
if (!FileModificationService.getInstance().preparePsiElementForWrite(aClass)) return;
84+
new WriteCommandAction.Simple(newSuperClass.getProject(), aClass.getContainingFile()) {
85+
@Override
86+
protected void run() throws Throwable {
87+
PsiElementFactory factory = JavaPsiFacade.getInstance(aClass.getProject()).getElementFactory();
88+
if (aClass instanceof PsiAnonymousClass) {
89+
((PsiAnonymousClass) aClass).getBaseClassReference().replace(factory.createClassReferenceElement(newSuperClass));
90+
}
91+
else if (oldSuperClass.isInterface()) {
92+
final PsiReferenceList interfaceList = aClass.getImplementsList();
93+
if (interfaceList != null) {
94+
for (final PsiJavaCodeReferenceElement interfaceRef : interfaceList.getReferenceElements()) {
95+
final PsiElement aInterface = interfaceRef.resolve();
96+
if (aInterface != null && aInterface.isEquivalentTo(oldSuperClass)) {
97+
interfaceRef.delete();
98+
}
99+
}
100+
}
86101

87-
new WriteCommandAction.Simple(newSuperClass.getProject(), aClass.getContainingFile()) {
88-
@Override
89-
protected void run() throws Throwable {
90-
PsiElementFactory factory = JavaPsiFacade.getInstance(aClass.getProject()).getElementFactory();
91-
if (aClass instanceof PsiAnonymousClass) {
92-
((PsiAnonymousClass)aClass).getBaseClassReference().replace(factory.createClassReferenceElement(newSuperClass));
93-
}
94-
else if (oldSuperClass.isInterface()) {
95-
final PsiReferenceList interfaceList = aClass.getImplementsList();
96-
if (interfaceList != null) {
97-
for (final PsiJavaCodeReferenceElement interfaceRef : interfaceList.getReferenceElements()) {
98-
final PsiElement aInterface = interfaceRef.resolve();
99-
if (aInterface != null && aInterface.isEquivalentTo(oldSuperClass)) {
100-
interfaceRef.delete();
101-
}
102+
final PsiReferenceList extendsList = aClass.getExtendsList();
103+
if (extendsList != null) {
104+
final PsiJavaCodeReferenceElement newClassReference = factory.createClassReferenceElement(newSuperClass);
105+
if (extendsList.getReferenceElements().length == 0) {
106+
extendsList.add(newClassReference);
107+
}
108+
}
109+
}
110+
else {
111+
final PsiReferenceList extendsList = aClass.getExtendsList();
112+
if (extendsList != null && extendsList.getReferenceElements().length == 1) {
113+
extendsList.getReferenceElements()[0].delete();
114+
PsiElement ref = extendsList.add(factory.createClassReferenceElement(newSuperClass));
115+
JavaCodeStyleManager.getInstance(aClass.getProject()).shortenClassReferences(ref);
116+
}
117+
}
102118
}
103-
}
119+
}.execute();
120+
}
104121

105-
final PsiReferenceList extendsList = aClass.getExtendsList();
106-
if (extendsList != null) {
107-
final PsiJavaCodeReferenceElement newClassReference = factory.createClassReferenceElement(newSuperClass);
108-
if (extendsList.getReferenceElements().length == 0) {
109-
extendsList.add(newClassReference);
110-
}
111-
}
112-
}
113-
else {
114-
final PsiReferenceList extendsList = aClass.getExtendsList();
115-
if (extendsList != null && extendsList.getReferenceElements().length == 1) {
116-
extendsList.getReferenceElements()[0].delete();
117-
PsiElement ref = extendsList.add(factory.createClassReferenceElement(newSuperClass));
118-
JavaCodeStyleManager.getInstance(aClass.getProject()).shortenClassReferences(ref);
119-
}
122+
public static class LowPriority extends ChangeSuperClassFix implements LowPriorityAction {
123+
public LowPriority(@Nonnull final PsiClass newSuperClass, final int percent, @Nonnull final PsiClass oldSuperClass) {
124+
super(newSuperClass, percent, oldSuperClass);
120125
}
121-
}
122-
}.execute();
123-
}
124-
125-
public static class LowPriority extends ChangeSuperClassFix implements LowPriorityAction {
126-
public LowPriority(@Nonnull final PsiClass newSuperClass, final int percent, @Nonnull final PsiClass oldSuperClass) {
127-
super(newSuperClass, percent, oldSuperClass);
128126
}
129-
}
130127
}

0 commit comments

Comments
 (0)