From 49e2e5444d2a8e104fcf8c992b04d16dfea44b4b Mon Sep 17 00:00:00 2001 From: Dmitry Avdeev Date: Thu, 22 Jan 2015 14:54:13 +0300 Subject: [PATCH] AnnotateCapitalizationIntention --- .../codeInsight/intention/AddAnnotationFix.java | 5 ++--- .../intention/AddAnnotationPsiFix.java | 15 ++++++--------- .../LocalQuickFixOnPsiElement.java | 3 +-- .../AnnotateCapitalizationIntention.java | 16 +++++++++++----- 4 files changed, 20 insertions(+), 19 deletions(-) diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/intention/AddAnnotationFix.java b/java/java-analysis-impl/src/com/intellij/codeInsight/intention/AddAnnotationFix.java index 91d2440442ab..1d72ba7728af 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/intention/AddAnnotationFix.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/intention/AddAnnotationFix.java @@ -23,18 +23,17 @@ import com.intellij.psi.PsiModifierListOwner; import com.intellij.psi.PsiNameValuePair; import com.intellij.util.IncorrectOperationException; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; /** * @author ven */ public class AddAnnotationFix extends AddAnnotationPsiFix implements IntentionAction { - public AddAnnotationFix(@NotNull String fqn, @Nullable PsiModifierListOwner modifierListOwner, @NotNull String... annotationsToRemove) { + public AddAnnotationFix(@NotNull String fqn, @NotNull PsiModifierListOwner modifierListOwner, @NotNull String... annotationsToRemove) { this(fqn, modifierListOwner, PsiNameValuePair.EMPTY_ARRAY, annotationsToRemove); } public AddAnnotationFix(@NotNull String fqn, - @Nullable PsiModifierListOwner modifierListOwner, + @NotNull PsiModifierListOwner modifierListOwner, @NotNull PsiNameValuePair[] values, @NotNull String... annotationsToRemove) { super(fqn, modifierListOwner, values, annotationsToRemove); diff --git a/java/java-analysis-impl/src/com/intellij/codeInsight/intention/AddAnnotationPsiFix.java b/java/java-analysis-impl/src/com/intellij/codeInsight/intention/AddAnnotationPsiFix.java index bcd365b1d8f0..e5e4bb68d11e 100644 --- a/java/java-analysis-impl/src/com/intellij/codeInsight/intention/AddAnnotationPsiFix.java +++ b/java/java-analysis-impl/src/com/intellij/codeInsight/intention/AddAnnotationPsiFix.java @@ -37,10 +37,10 @@ public class AddAnnotationPsiFix extends LocalQuickFixOnPsiElement { protected final String myAnnotation; protected final String[] myAnnotationsToRemove; protected final PsiNameValuePair[] myPairs; // not used when registering local quick fix - protected String myText; + protected final String myText; public AddAnnotationPsiFix(@NotNull String fqn, - @Nullable PsiModifierListOwner modifierListOwner, + @NotNull PsiModifierListOwner modifierListOwner, @NotNull PsiNameValuePair[] values, @NotNull String... annotationsToRemove) { super(modifierListOwner); @@ -117,29 +117,26 @@ public class AddAnnotationPsiFix extends LocalQuickFixOnPsiElement { @NotNull PsiFile file, @NotNull PsiElement startElement, @NotNull PsiElement endElement) { + final PsiModifierListOwner myModifierListOwner = (PsiModifierListOwner)startElement; - invoke(project, file, (PsiModifierListOwner)startElement, myPairs); - } - - protected void invoke(@NotNull Project project, @NotNull PsiFile file, PsiModifierListOwner myModifierListOwner, PsiNameValuePair[] pairs) { + final ExternalAnnotationsManager annotationsManager = ExternalAnnotationsManager.getInstance(project); final PsiModifierList modifierList = myModifierListOwner.getModifierList(); LOG.assertTrue(modifierList != null); if (modifierList.findAnnotation(myAnnotation) != null) return; - final ExternalAnnotationsManager annotationsManager = ExternalAnnotationsManager.getInstance(project); final ExternalAnnotationsManager.AnnotationPlace annotationAnnotationPlace = annotationsManager.chooseAnnotationsPlace(myModifierListOwner); if (annotationAnnotationPlace == ExternalAnnotationsManager.AnnotationPlace.NOWHERE) return; if (annotationAnnotationPlace == ExternalAnnotationsManager.AnnotationPlace.EXTERNAL) { for (String fqn : myAnnotationsToRemove) { annotationsManager.deannotate(myModifierListOwner, fqn); } - annotationsManager.annotateExternally(myModifierListOwner, myAnnotation, file, pairs); + annotationsManager.annotateExternally(myModifierListOwner, myAnnotation, file, myPairs); } else { final PsiFile containingFile = myModifierListOwner.getContainingFile(); if (!FileModificationService.getInstance().preparePsiElementForWrite(containingFile)) return; removePhysicalAnnotations(myModifierListOwner, myAnnotationsToRemove); - PsiAnnotation inserted = addPhysicalAnnotation(myAnnotation, pairs, modifierList); + PsiAnnotation inserted = addPhysicalAnnotation(myAnnotation, myPairs, modifierList); JavaCodeStyleManager.getInstance(project).shortenClassReferences(inserted); if (containingFile != file) { UndoUtil.markPsiFileForUndo(file); diff --git a/platform/analysis-api/src/com/intellij/codeInspection/LocalQuickFixOnPsiElement.java b/platform/analysis-api/src/com/intellij/codeInspection/LocalQuickFixOnPsiElement.java index 26d0a4efeb62..404dc235f3ae 100644 --- a/platform/analysis-api/src/com/intellij/codeInspection/LocalQuickFixOnPsiElement.java +++ b/platform/analysis-api/src/com/intellij/codeInspection/LocalQuickFixOnPsiElement.java @@ -22,14 +22,13 @@ import com.intellij.psi.PsiFile; import com.intellij.psi.SmartPointerManager; import com.intellij.psi.SmartPsiElementPointer; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; public abstract class LocalQuickFixOnPsiElement implements LocalQuickFix { protected static final Logger LOG = Logger.getInstance("#com.intellij.codeInspection.LocalQuickFixAndIntentionAction"); protected final SmartPsiElementPointer myStartElement; protected final SmartPsiElementPointer myEndElement; - protected LocalQuickFixOnPsiElement(@Nullable PsiElement element) { + protected LocalQuickFixOnPsiElement(@NotNull PsiElement element) { this(element, element); } diff --git a/plugins/devkit/src/inspections/AnnotateCapitalizationIntention.java b/plugins/devkit/src/inspections/AnnotateCapitalizationIntention.java index 444c1b2324c9..45ebf47b036c 100644 --- a/plugins/devkit/src/inspections/AnnotateCapitalizationIntention.java +++ b/plugins/devkit/src/inspections/AnnotateCapitalizationIntention.java @@ -17,6 +17,7 @@ package org.jetbrains.idea.devkit.inspections; import com.intellij.codeInsight.AnnotationUtil; import com.intellij.codeInsight.intention.AddAnnotationFix; +import com.intellij.codeInsight.intention.IntentionAction; import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.command.WriteCommandAction; import com.intellij.openapi.editor.Editor; @@ -34,10 +35,9 @@ import org.jetbrains.annotations.Nullable; /** * @author Dmitry Avdeev */ -public class AnnotateCapitalizationIntention extends AddAnnotationFix { +public class AnnotateCapitalizationIntention implements IntentionAction { public AnnotateCapitalizationIntention() { - super(Nls.class.getName(), null); } @Override @@ -46,10 +46,16 @@ public class AnnotateCapitalizationIntention extends AddAnnotationFix { if (element == null || (!ApplicationManager.getApplication().isUnitTestMode() && element.getManager().isInProject(element)) || AnnotationUtil.findAnnotation(element, Nls.class.getName()) != null) return false; - myText = "Annotate capitalization type"; return true; } + @Nls + @NotNull + @Override + public String getText() { + return getFamilyName(); + } + @NotNull @Override public String getFamilyName() { @@ -57,7 +63,7 @@ public class AnnotateCapitalizationIntention extends AddAnnotationFix { } @Override - public void invoke(@NotNull final Project project, Editor editor, final PsiFile file) throws IncorrectOperationException { + public void invoke(@NotNull final Project project, final Editor editor, final PsiFile file) throws IncorrectOperationException { final PsiModifierListOwner modifierListOwner = getElement(editor, file); if (modifierListOwner == null) throw new IncorrectOperationException(); @@ -72,7 +78,7 @@ public class AnnotateCapitalizationIntention extends AddAnnotationFix { PsiAnnotation annotation = JavaPsiFacade.getInstance(project).getElementFactory() .createAnnotationFromText("@" + nls + "(capitalization = " + nls + ".Capitalization." + selectedValue.toString() + ")", modifierListOwner); - invoke(project, file, modifierListOwner, annotation.getParameterList().getAttributes()); + new AddAnnotationFix(Nls.class.getName(), modifierListOwner, annotation.getParameterList().getAttributes()).applyFix(); } }.execute(); return FINAL_CHOICE;