move: move inner class with other files with its top level only (EA-33583 - CCE: JavaMoveFilesOrDirectoriesHandler.obtainContainingFile)

This commit is contained in:
anna
2012-02-08 19:41:18 +01:00
parent 7f34d2b6f3
commit 1e784542b8
@@ -24,6 +24,7 @@ import com.intellij.openapi.project.Project;
import com.intellij.psi.*;
import com.intellij.psi.impl.file.JavaDirectoryServiceImpl;
import com.intellij.psi.search.GlobalSearchScope;
import com.intellij.psi.util.PsiUtil;
import com.intellij.psi.util.PsiUtilBase;
import com.intellij.refactoring.move.MoveCallback;
import com.intellij.util.ArrayUtil;
@@ -76,9 +77,12 @@ public class JavaMoveFilesOrDirectoriesHandler extends MoveFilesOrDirectoriesHan
@Override
protected void run(Result<PsiElement[]> result) throws Throwable {
final List<PsiElement> adjustedElements = new ArrayList<PsiElement>();
for (PsiElement element : elements) {
for (int i = 0, length = elements.length; i < length; i++) {
PsiElement element = elements[i];
if (element instanceof PsiClass) {
final PsiFile containingFile = obtainContainingFile(element, elements);
final PsiClass topLevelClass = PsiUtil.getTopLevelClass(element);
elements[i] = topLevelClass;
final PsiFile containingFile = obtainContainingFile(topLevelClass, elements);
if (containingFile != null && !adjustedElements.contains(containingFile)) {
adjustedElements.add(containingFile);
}