mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-04-18 12:31:26 +07:00
[intention-preview] ConvertInterfaceToClassFix
GitOrigin-RevId: 0eaa24c14a74ead8fcd085958ea6a1530176c9e8
This commit is contained in:
committed by
intellij-monorepo-bot
parent
068edf649a
commit
98ae394300
@@ -4,6 +4,7 @@ package com.intellij.codeInsight.daemon.impl.quickfix;
|
||||
import com.intellij.codeInsight.AnnotationUtil;
|
||||
import com.intellij.codeInsight.FileModificationService;
|
||||
import com.intellij.codeInsight.intention.PriorityAction;
|
||||
import com.intellij.codeInsight.intention.preview.IntentionPreviewInfo;
|
||||
import com.intellij.codeInspection.LocalQuickFixAndIntentionActionOnPsiElement;
|
||||
import com.intellij.codeInspection.util.IntentionFamilyName;
|
||||
import com.intellij.codeInspection.util.IntentionName;
|
||||
@@ -17,6 +18,7 @@ import com.intellij.psi.presentation.java.ClassPresentationUtil;
|
||||
import com.intellij.psi.search.SearchScope;
|
||||
import com.intellij.psi.search.searches.ClassInheritorsSearch;
|
||||
import com.intellij.psi.search.searches.FunctionalExpressionSearch;
|
||||
import com.intellij.psi.util.PsiTreeUtil;
|
||||
import com.intellij.psi.util.PsiUtil;
|
||||
import com.intellij.refactoring.BaseRefactoringProcessor;
|
||||
import com.intellij.refactoring.ui.ConflictsDialog;
|
||||
@@ -76,6 +78,23 @@ public class ConvertInterfaceToClassFix extends LocalQuickFixAndIntentionActionO
|
||||
return IntentionPowerPackBundle.message("convert.interface.to.class.intention.family.name");
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull IntentionPreviewInfo generatePreview(@NotNull Project project, @NotNull Editor editor, @NotNull PsiFile copyFile) {
|
||||
PsiElement element = myStartElement.getElement();
|
||||
if (!(element instanceof PsiClass psiClass && psiClass.isInterface())) {
|
||||
return IntentionPreviewInfo.EMPTY;
|
||||
}
|
||||
PsiFile file = psiClass.getContainingFile();
|
||||
if (copyFile.getOriginalFile() == file) {
|
||||
PsiClass elementInCopy = PsiTreeUtil.findSameElementInCopy(psiClass, copyFile);
|
||||
changeInterfaceToClass(elementInCopy);
|
||||
moveExtendsToImplements(elementInCopy);
|
||||
return IntentionPreviewInfo.DIFF;
|
||||
}
|
||||
//something strange happens
|
||||
return IntentionPreviewInfo.EMPTY;
|
||||
}
|
||||
|
||||
public static void convert(@NotNull PsiClass anInterface) {
|
||||
final SearchScope searchScope = anInterface.getUseScope();
|
||||
final Collection<PsiClass> inheritors = ClassInheritorsSearch.search(anInterface, searchScope, false).findAll();
|
||||
|
||||
Reference in New Issue
Block a user