public InlineSuperClassRefactoringProcessor( Project project, PsiClass superClass, final PsiClass... targetClasses) { super(project); mySuperClass = superClass; myTargetClasses = targetClasses; MemberInfoStorage memberInfoStorage = new MemberInfoStorage( mySuperClass, new MemberInfo.Filter<PsiMember>() { public boolean includeMember(PsiMember element) { return true; } }); final List<MemberInfo> members = memberInfoStorage.getClassMemberInfos(mySuperClass); for (MemberInfo member : members) { member.setChecked(true); } myMemberInfos = members.toArray(new MemberInfo[members.size()]); }
public void invoke( @NotNull final Project project, @NotNull PsiElement[] elements, DataContext dataContext) { if (elements.length != 1) return; PsiElement element = elements[0]; PsiClass aClass; PsiElement aMember = null; if (element instanceof PsiClass) { aClass = (PsiClass) element; } else if (element instanceof PsiMethod) { aClass = ((PsiMethod) element).getContainingClass(); aMember = element; } else if (element instanceof PsiField) { aClass = ((PsiField) element).getContainingClass(); aMember = element; } else return; if (!CommonRefactoringUtil.checkReadOnlyStatus(project, aClass)) return; MemberInfoStorage memberInfoStorage = new MemberInfoStorage( aClass, new MemberInfo.Filter<PsiMember>() { public boolean includeMember(PsiMember element) { return !(element instanceof PsiEnumConstant); } }); List<MemberInfo> members = memberInfoStorage.getClassMemberInfos(aClass); PsiManager manager = aClass.getManager(); for (MemberInfoBase<PsiMember> member : members) { if (manager.areElementsEquivalent(member.getMember(), aMember)) { member.setChecked(true); break; } } PushDownDialog dialog = new PushDownDialog(project, members.toArray(new MemberInfo[members.size()]), aClass); dialog.show(); }