IDEA-66936 move classes with static and aliased imports

This commit is contained in:
Maxim Medvedev
2011-03-31 16:01:44 +04:00
parent 658b5eee39
commit 11b37cbb63
20 changed files with 127 additions and 22 deletions
@@ -18,10 +18,13 @@ package com.intellij.refactoring.move.moveClassesOrPackages;
import com.intellij.openapi.extensions.ExtensionPointName;
import com.intellij.psi.PsiClass;
import com.intellij.psi.PsiDirectory;
import com.intellij.usageView.UsageInfo;
import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import java.util.Collection;
/**
* @author Maxim.Medvedev
*/
@@ -43,5 +46,7 @@ public interface MoveClassHandler {
* @param clazz psiClass
* @return null, if this instance of FileNameForPsiProvider cannot provide name for clazz
*/
String getName(PsiClass clazz);
String getName(PsiClass clazz);
void preprocessUsages(Collection<UsageInfo> results);
}
@@ -61,17 +61,21 @@ public class MoveClassesOrPackagesUtil {
for (PsiReference reference : ReferencesSearch.search(element, projectScope, false)) {
TextRange range = reference.getRangeInElement();
if (foundReferences.contains(reference)) continue;
results.add(
new MoveRenameUsageInfo(reference.getElement(), reference, range.getStartOffset(), range.getEndOffset(),
element, false));
results.add(new MoveRenameUsageInfo(reference.getElement(), reference, range.getStartOffset(), range.getEndOffset(), element, false));
foundReferences.add(reference);
}
findNonCodeUsages(searchInStringsAndComments, searchInNonJavaFiles, element, newQName, results);
preprocessUsages(results);
return results.toArray(new UsageInfo[results.size()]);
}
private static void preprocessUsages(ArrayList<UsageInfo> results) {
for (MoveClassHandler handler : MoveClassHandler.EP_NAME.getExtensions()) {
handler.preprocessUsages(results);
}
}
private static String getQualfiedName(final PsiElement element) {
final String oldQName;
if (element instanceof PsiClass) {
@@ -21,9 +21,11 @@ import com.intellij.openapi.fileTypes.StdFileTypes;
import com.intellij.psi.*;
import com.intellij.psi.javadoc.PsiDocComment;
import com.intellij.psi.util.PsiTreeUtil;
import com.intellij.usageView.UsageInfo;
import com.intellij.util.IncorrectOperationException;
import org.jetbrains.annotations.NotNull;
import java.util.Collection;
import java.util.HashSet;
import java.util.Set;
@@ -134,4 +136,8 @@ public class MoveJavaClassHandler implements MoveClassHandler {
if (!(file instanceof PsiJavaFile)) return null;
return ((PsiJavaFile)file).getClasses().length > 1 ? clazz.getName() + "." + StdFileTypes.JAVA.getDefaultExtension() : file.getName();
}
@Override
public void preprocessUsages(Collection<UsageInfo> results) {
}
}