mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-18 09:34:34 +07:00
AnnotateCapitalizationIntention
This commit is contained in:
+2
-3
@@ -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);
|
||||
|
||||
+6
-9
@@ -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);
|
||||
|
||||
+1
-2
@@ -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<PsiElement> myStartElement;
|
||||
protected final SmartPsiElementPointer<PsiElement> myEndElement;
|
||||
|
||||
protected LocalQuickFixOnPsiElement(@Nullable PsiElement element) {
|
||||
protected LocalQuickFixOnPsiElement(@NotNull PsiElement element) {
|
||||
this(element, element);
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user