IDEA-115761 MakeInnerClassOf refactoring should probably exclude target classes from GeneratedSources roots

This commit is contained in:
nik
2013-12-24 17:56:11 +04:00
parent d5de3de366
commit b100613376
2 changed files with 23 additions and 1 deletions
@@ -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);
}
}
}
@@ -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();