mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
extract superclass: hide implements base type from chooser for anonymous classes; fixed implements/extends list in the generated superclass
This commit is contained in:
+10
-2
@@ -78,8 +78,16 @@ public class ExtractSuperClassUtil {
|
||||
final PsiReferenceList subClassExtends = subclass.getExtendsList();
|
||||
if (subClassExtends != null) {
|
||||
copyPsiReferenceList(subClassExtends, superclass.getExtendsList());
|
||||
} else if (subclass instanceof PsiAnonymousClass) {
|
||||
superclass.getExtendsList().add(((PsiAnonymousClass)subclass).getBaseClassReference());
|
||||
}
|
||||
else if (subclass instanceof PsiAnonymousClass) {
|
||||
PsiJavaCodeReferenceElement classReference = ((PsiAnonymousClass)subclass).getBaseClassReference();
|
||||
PsiElement baseClass = classReference.resolve();
|
||||
if (baseClass instanceof PsiClass && ((PsiClass)baseClass).isInterface()) {
|
||||
superclass.getImplementsList().add(classReference);
|
||||
}
|
||||
else {
|
||||
superclass.getExtendsList().add(classReference);
|
||||
}
|
||||
}
|
||||
|
||||
// create constructors if neccesary
|
||||
|
||||
+7
-1
@@ -40,6 +40,7 @@ import com.intellij.refactoring.util.DocCommentPolicy;
|
||||
import com.intellij.refactoring.util.classMembers.MemberInfo;
|
||||
import com.intellij.util.ArrayUtil;
|
||||
import com.intellij.util.IncorrectOperationException;
|
||||
import com.intellij.util.containers.ContainerUtil;
|
||||
import com.intellij.util.containers.MultiMap;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
|
||||
@@ -98,13 +99,18 @@ public class ExtractSuperclassHandler implements RefactoringActionHandler, Extra
|
||||
}
|
||||
|
||||
|
||||
final List<MemberInfo> memberInfos = MemberInfo.extractClassMembers(mySubclass, new MemberInfo.Filter<PsiMember>() {
|
||||
List<MemberInfo> memberInfos = MemberInfo.extractClassMembers(mySubclass, new MemberInfo.Filter<PsiMember>() {
|
||||
@Override
|
||||
public boolean includeMember(PsiMember element) {
|
||||
return true;
|
||||
}
|
||||
}, false);
|
||||
|
||||
if (mySubclass instanceof PsiAnonymousClass) {
|
||||
memberInfos = ContainerUtil.filter(memberInfos, memberInfo -> !(memberInfo.getMember() instanceof PsiClass &&
|
||||
memberInfo.getOverrides() != null));
|
||||
}
|
||||
|
||||
final ExtractSuperclassDialog dialog =
|
||||
new ExtractSuperclassDialog(project, mySubclass, memberInfos, this);
|
||||
if (!dialog.showAndGet() || !dialog.isExtractSuperclass()) {
|
||||
|
||||
+1
-1
@@ -1,2 +1,2 @@
|
||||
public abstract class TestSubclass extends Runnable {
|
||||
public abstract class TestSubclass implements Runnable {
|
||||
}
|
||||
Reference in New Issue
Block a user