mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
rename package: do not replace dir with corresponding package when package was already processed
move classes from dir: update file refs
This commit is contained in:
@@ -68,10 +68,6 @@ public class RenamePsiDirectoryProcessor extends RenamePsiElementProcessor {
|
||||
@NotNull
|
||||
@Override
|
||||
public Collection<PsiReference> findReferences(PsiElement element) {
|
||||
final PsiPackage aPackage = JavaDirectoryService.getInstance().getPackage((PsiDirectory) element);
|
||||
if (aPackage != null) {
|
||||
return ReferencesSearch.search(aPackage, element.getUseScope()).findAll();
|
||||
}
|
||||
return ReferencesSearch.search(element).findAll();
|
||||
}
|
||||
|
||||
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
package pack2;
|
||||
|
||||
import pack1.*;
|
||||
import target.pack1.S1;
|
||||
|
||||
public class UsagesFromBoth {
|
||||
S1 s1;
|
||||
S2 s2;
|
||||
}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
package target.pack1;
|
||||
|
||||
public class S1{}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
package pack1;
|
||||
|
||||
public class S2{}
|
||||
+9
@@ -0,0 +1,9 @@
|
||||
package pack2;
|
||||
|
||||
import pack1.*;
|
||||
import target.pack1.S1;
|
||||
|
||||
public class UsagesFromBoth2 {
|
||||
S1 s1;
|
||||
S2 s2;
|
||||
}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
<root xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<xi:include href="../../src1/target/pack1/S1.java" xpointer="xpointer(/components/*)"/>
|
||||
</root>
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
package pack1;
|
||||
|
||||
public class S1{}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
package pack2;
|
||||
|
||||
import pack1.*;
|
||||
|
||||
public class UsagesFromBoth {
|
||||
S1 s1;
|
||||
S2 s2;
|
||||
}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
package pack1;
|
||||
|
||||
public class S2{}
|
||||
+8
@@ -0,0 +1,8 @@
|
||||
package pack2;
|
||||
|
||||
import pack1.*;
|
||||
|
||||
public class UsagesFromBoth2 {
|
||||
S1 s1;
|
||||
S2 s2;
|
||||
}
|
||||
+3
@@ -0,0 +1,3 @@
|
||||
<root xmlns:xi="http://www.w3.org/2001/XInclude">
|
||||
<xi:include href="../../src1/pack1/S1.java" xpointer="xpointer(/components/*)"/>
|
||||
</root>
|
||||
@@ -63,6 +63,10 @@ public class MovePackageAsDirectoryTest extends MultiFileTestCase {
|
||||
doTest(createAction("pack1", "target"));
|
||||
}
|
||||
|
||||
public void testXmlDirRefs() throws Exception {
|
||||
doTest(createAction("pack1", "target"));
|
||||
}
|
||||
|
||||
private PerformAction createAction(final String packageName, final String targetPackageName) {
|
||||
return new PerformAction() {
|
||||
@Override
|
||||
|
||||
+49
-6
@@ -3,13 +3,18 @@ package com.intellij.refactoring.move.moveClassesOrPackages;
|
||||
import com.intellij.openapi.extensions.ExtensionPointName;
|
||||
import com.intellij.openapi.extensions.Extensions;
|
||||
import com.intellij.openapi.project.Project;
|
||||
import com.intellij.openapi.util.ProperTextRange;
|
||||
import com.intellij.psi.PsiDirectory;
|
||||
import com.intellij.psi.PsiElement;
|
||||
import com.intellij.psi.PsiFile;
|
||||
import com.intellij.psi.PsiReference;
|
||||
import com.intellij.psi.search.searches.ReferencesSearch;
|
||||
import com.intellij.refactoring.listeners.RefactoringElementListener;
|
||||
import com.intellij.refactoring.move.moveFilesOrDirectories.MoveFileHandler;
|
||||
import com.intellij.refactoring.move.moveFilesOrDirectories.MoveFilesOrDirectoriesUtil;
|
||||
import com.intellij.usageView.UsageInfo;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.Collection;
|
||||
import java.util.List;
|
||||
@@ -45,8 +50,29 @@ public abstract class MoveDirectoryWithClassesHelper {
|
||||
public static class Default extends MoveDirectoryWithClassesHelper {
|
||||
|
||||
@Override
|
||||
public void findUsages(Collection<PsiFile> filesToMove, PsiDirectory[] directoriesToMove, Collection<UsageInfo> result,
|
||||
boolean searchInComments, boolean searchInNonJavaFiles, Project project) {
|
||||
public void findUsages(Collection<PsiFile> filesToMove,
|
||||
PsiDirectory[] directoriesToMove,
|
||||
Collection<UsageInfo> result,
|
||||
boolean searchInComments,
|
||||
boolean searchInNonJavaFiles,
|
||||
Project project) {
|
||||
for (PsiFile file : filesToMove) {
|
||||
for (PsiReference reference : ReferencesSearch.search(file)) {
|
||||
result.add(new MyUsageInfo(reference, file));
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postProcessUsages(UsageInfo[] usages) {
|
||||
for (UsageInfo usage : usages) {
|
||||
if (usage instanceof MyUsageInfo) {
|
||||
PsiReference reference = usage.getReference();
|
||||
if (reference != null) {
|
||||
reference.bindToElement(((MyUsageInfo)usage).myFile);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -71,10 +97,6 @@ public abstract class MoveDirectoryWithClassesHelper {
|
||||
return true;
|
||||
}
|
||||
|
||||
@Override
|
||||
public void postProcessUsages(UsageInfo[] usages) {
|
||||
}
|
||||
|
||||
@Override
|
||||
public void beforeMove(PsiFile psiFile) {
|
||||
}
|
||||
@@ -82,5 +104,26 @@ public abstract class MoveDirectoryWithClassesHelper {
|
||||
@Override
|
||||
public void afterMove(PsiElement newElement) {
|
||||
}
|
||||
|
||||
private static class MyUsageInfo extends UsageInfo {
|
||||
private final PsiFile myFile;
|
||||
|
||||
public MyUsageInfo(@NotNull PsiReference reference, PsiFile file) {
|
||||
super(reference);
|
||||
myFile = file;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
public PsiReference getReference() {
|
||||
PsiElement element = getElement();
|
||||
if (element == null) {
|
||||
return null;
|
||||
}
|
||||
else {
|
||||
final ProperTextRange rangeInElement = getRangeInElement();
|
||||
return rangeInElement != null ? element.findReferenceAt(rangeInElement.getStartOffset()) : element.getReference();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user