From b100613376819127640c25541ddfe1057a10b310 Mon Sep 17 00:00:00 2001 From: nik Date: Tue, 24 Dec 2013 16:19:33 +0400 Subject: [PATCH] IDEA-115761 MakeInnerClassOf refactoring should probably exclude target classes from GeneratedSources roots --- .../openapi/roots/JavaProjectRootsUtil.java | 20 +++++++++++++++++++ .../MoveClassesOrPackagesDialog.java | 4 +++- 2 files changed, 23 insertions(+), 1 deletion(-) diff --git a/java/java-impl/src/com/intellij/openapi/roots/JavaProjectRootsUtil.java b/java/java-impl/src/com/intellij/openapi/roots/JavaProjectRootsUtil.java index cecab4e02d2b..f7666eb21ffb 100644 --- a/java/java-impl/src/com/intellij/openapi/roots/JavaProjectRootsUtil.java +++ b/java/java-impl/src/com/intellij/openapi/roots/JavaProjectRootsUtil.java @@ -6,6 +6,8 @@ import com.intellij.openapi.project.Project; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiCodeFragment; import com.intellij.psi.PsiFile; +import com.intellij.psi.search.DelegatingGlobalSearchScope; +import com.intellij.psi.search.GlobalSearchScope; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -69,4 +71,22 @@ public class JavaProjectRootsUtil { } return false; } + + public static GlobalSearchScope getScopeWithoutGeneratedSources(@NotNull GlobalSearchScope baseScope, @NotNull Project project) { + return new NonGeneratedSourceScope(baseScope, project); + } + + private static class NonGeneratedSourceScope extends DelegatingGlobalSearchScope { + @NotNull private final Project myProject; + + private NonGeneratedSourceScope(@NotNull GlobalSearchScope baseScope, @NotNull Project project) { + super(baseScope); + myProject = project; + } + + @Override + public boolean contains(@NotNull VirtualFile file) { + return super.contains(file) && !isInGeneratedCode(file, myProject); + } + } } diff --git a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesDialog.java b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesDialog.java index b80b4e8c20a0..c5caa4c9c240 100644 --- a/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesDialog.java +++ b/java/java-impl/src/com/intellij/refactoring/move/moveClassesOrPackages/MoveClassesOrPackagesDialog.java @@ -32,6 +32,7 @@ import com.intellij.openapi.ui.Messages; import com.intellij.openapi.util.Pass; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.*; +import com.intellij.psi.search.GlobalSearchScope; import com.intellij.psi.search.ProjectScope; import com.intellij.psi.util.PsiTreeUtil; import com.intellij.psi.util.PsiUtilCore; @@ -175,7 +176,8 @@ public class MoveClassesOrPackagesDialog extends RefactoringDialog { myWithBrowseButtonReference = createPackageChooser(); myClassPackageChooser = createPackageChooser(); - myInnerClassChooser = new ClassNameReferenceEditor(myProject, null, ProjectScope.getProjectScope(myProject)); + GlobalSearchScope scope = JavaProjectRootsUtil.getScopeWithoutGeneratedSources(ProjectScope.getProjectScope(myProject), myProject); + myInnerClassChooser = new ClassNameReferenceEditor(myProject, null, scope); myInnerClassChooser.addDocumentListener(new DocumentAdapter() { public void documentChanged(DocumentEvent e) { validateButtons();