diff --git a/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/a/noImports.kt b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/a/noImports.kt new file mode 100644 index 00000000000..d901715b287 --- /dev/null +++ b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/a/noImports.kt @@ -0,0 +1,7 @@ +package a + +import b.A + +fun bar() { + val t: A = A() +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/a/onDemandTargetPackageImport.kt b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/a/onDemandTargetPackageImport.kt new file mode 100644 index 00000000000..a02f76f138e --- /dev/null +++ b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/a/onDemandTargetPackageImport.kt @@ -0,0 +1,7 @@ +package a + +import b.* + +fun bar() { + val t: A = A() +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/a/specificClassImport.kt b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/a/specificClassImport.kt new file mode 100644 index 00000000000..d9c40c2aa39 --- /dev/null +++ b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/a/specificClassImport.kt @@ -0,0 +1,7 @@ +package a + +import b.A as X + +fun bar() { + val t: X = X() +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/b/main.java b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/b/main.java new file mode 100644 index 00000000000..586ff0e9fd3 --- /dev/null +++ b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/b/main.java @@ -0,0 +1,5 @@ +package b; + +public class A { + +} diff --git a/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/b/noImports.kt b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/b/noImports.kt new file mode 100644 index 00000000000..11e0790c3bd --- /dev/null +++ b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/b/noImports.kt @@ -0,0 +1,5 @@ +package b + +fun bar() { + val t: A = A() +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/b/onDemandSourcePackageImport.kt b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/b/onDemandSourcePackageImport.kt new file mode 100644 index 00000000000..3700d2bbc00 --- /dev/null +++ b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/b/onDemandSourcePackageImport.kt @@ -0,0 +1,7 @@ +package b + +import a.* + +fun bar() { + val t: A = A() +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/b/specificClassImport.kt b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/b/specificClassImport.kt new file mode 100644 index 00000000000..98ebe2fe73e --- /dev/null +++ b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/b/specificClassImport.kt @@ -0,0 +1,7 @@ +package b + +import b.A as X + +fun bar() { + val t: X = X() +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/c/noImports.kt b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/c/noImports.kt new file mode 100644 index 00000000000..2c3b198bdd1 --- /dev/null +++ b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/c/noImports.kt @@ -0,0 +1,7 @@ +package c + +import b.A + +fun bar() { + val t: A = A() +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/c/onDemandSourcePackageImport.kt b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/c/onDemandSourcePackageImport.kt new file mode 100644 index 00000000000..622ab5ebf7f --- /dev/null +++ b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/c/onDemandSourcePackageImport.kt @@ -0,0 +1,8 @@ +package c + +import a.* +import b.A + +fun bar() { + val t: A = A() +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/c/onDemandTargetPackageImport.kt b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/c/onDemandTargetPackageImport.kt new file mode 100644 index 00000000000..d6319db3cb5 --- /dev/null +++ b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/c/onDemandTargetPackageImport.kt @@ -0,0 +1,7 @@ +package c + +import b.* + +fun bar() { + val t: A = A() +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/c/specificClassImport.kt b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/c/specificClassImport.kt new file mode 100644 index 00000000000..30a29b78d94 --- /dev/null +++ b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/after/c/specificClassImport.kt @@ -0,0 +1,7 @@ +package c + +import b.A as X + +fun bar() { + val t: X = X() +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/a/main.java b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/a/main.java new file mode 100644 index 00000000000..6c0a4148c85 --- /dev/null +++ b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/a/main.java @@ -0,0 +1,5 @@ +package a; + +public class A { + +} diff --git a/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/a/noImports.kt b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/a/noImports.kt new file mode 100644 index 00000000000..e879a7194b7 --- /dev/null +++ b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/a/noImports.kt @@ -0,0 +1,5 @@ +package a + +fun bar() { + val t: A = A() +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/a/onDemandTargetPackageImport.kt b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/a/onDemandTargetPackageImport.kt new file mode 100644 index 00000000000..a02f76f138e --- /dev/null +++ b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/a/onDemandTargetPackageImport.kt @@ -0,0 +1,7 @@ +package a + +import b.* + +fun bar() { + val t: A = A() +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/a/specificClassImport.kt b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/a/specificClassImport.kt new file mode 100644 index 00000000000..88970e2cedc --- /dev/null +++ b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/a/specificClassImport.kt @@ -0,0 +1,7 @@ +package a + +import a.A as X + +fun bar() { + val t: X = X() +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/b/noImports.kt b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/b/noImports.kt new file mode 100644 index 00000000000..7b86dd85a0a --- /dev/null +++ b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/b/noImports.kt @@ -0,0 +1,5 @@ +package b + +fun bar() { + val t: a.A = a.A() +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/b/onDemandSourcePackageImport.kt b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/b/onDemandSourcePackageImport.kt new file mode 100644 index 00000000000..3700d2bbc00 --- /dev/null +++ b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/b/onDemandSourcePackageImport.kt @@ -0,0 +1,7 @@ +package b + +import a.* + +fun bar() { + val t: A = A() +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/b/specificClassImport.kt b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/b/specificClassImport.kt new file mode 100644 index 00000000000..29b95b10227 --- /dev/null +++ b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/b/specificClassImport.kt @@ -0,0 +1,7 @@ +package b + +import a.A as X + +fun bar() { + val t: X = X() +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/c/noImports.kt b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/c/noImports.kt new file mode 100644 index 00000000000..e91854bf17b --- /dev/null +++ b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/c/noImports.kt @@ -0,0 +1,5 @@ +package c + +fun bar() { + val t: a.A = a.A() +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/c/onDemandSourcePackageImport.kt b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/c/onDemandSourcePackageImport.kt new file mode 100644 index 00000000000..e916cd31151 --- /dev/null +++ b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/c/onDemandSourcePackageImport.kt @@ -0,0 +1,7 @@ +package c + +import a.* + +fun bar() { + val t: A = A() +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/c/onDemandTargetPackageImport.kt b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/c/onDemandTargetPackageImport.kt new file mode 100644 index 00000000000..da44a2f2b8f --- /dev/null +++ b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/c/onDemandTargetPackageImport.kt @@ -0,0 +1,7 @@ +package c + +import b.* + +fun bar() { + val t: a.A = a.A() +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/c/specificClassImport.kt b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/c/specificClassImport.kt new file mode 100644 index 00000000000..9daee3a1de9 --- /dev/null +++ b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/before/c/specificClassImport.kt @@ -0,0 +1,7 @@ +package c + +import a.A as X + +fun bar() { + val t: X = X() +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/moveTopLevelClassToAnotherPackage.test b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/moveTopLevelClassToAnotherPackage.test new file mode 100644 index 00000000000..0b2773ca291 --- /dev/null +++ b/idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/moveTopLevelClassToAnotherPackage.test @@ -0,0 +1,5 @@ +{ + "mainFile": "a/main.java", + "type": "MOVE_TOP_LEVEL_CLASSES", + "targetPackage": "b" +} \ No newline at end of file diff --git a/idea/testData/refactoring/move/java/movePackage/movePackageToAnotherPackage/after/b/a/main.java b/idea/testData/refactoring/move/java/movePackage/movePackageToAnotherPackage/after/b/a/main.java new file mode 100644 index 00000000000..940f111ddbf --- /dev/null +++ b/idea/testData/refactoring/move/java/movePackage/movePackageToAnotherPackage/after/b/a/main.java @@ -0,0 +1,5 @@ +package b.a; + +public class A { + +} diff --git a/idea/testData/refactoring/move/java/movePackage/movePackageToAnotherPackage/after/c/noImports.kt b/idea/testData/refactoring/move/java/movePackage/movePackageToAnotherPackage/after/c/noImports.kt new file mode 100644 index 00000000000..ffb4594cf64 --- /dev/null +++ b/idea/testData/refactoring/move/java/movePackage/movePackageToAnotherPackage/after/c/noImports.kt @@ -0,0 +1,5 @@ +import b.a.A + +fun bar() { + val t: A = A() +} diff --git a/idea/testData/refactoring/move/java/movePackage/movePackageToAnotherPackage/after/c/onDemandSourcePackageImport.kt b/idea/testData/refactoring/move/java/movePackage/movePackageToAnotherPackage/after/c/onDemandSourcePackageImport.kt new file mode 100644 index 00000000000..f75d753c9a9 --- /dev/null +++ b/idea/testData/refactoring/move/java/movePackage/movePackageToAnotherPackage/after/c/onDemandSourcePackageImport.kt @@ -0,0 +1,5 @@ +import b.a.* + +fun bar() { + val t: A = A() +} diff --git a/idea/testData/refactoring/move/java/movePackage/movePackageToAnotherPackage/after/c/specificClassImport.kt b/idea/testData/refactoring/move/java/movePackage/movePackageToAnotherPackage/after/c/specificClassImport.kt new file mode 100644 index 00000000000..fcd323dae83 --- /dev/null +++ b/idea/testData/refactoring/move/java/movePackage/movePackageToAnotherPackage/after/c/specificClassImport.kt @@ -0,0 +1,5 @@ +import b.a.A as X + +fun bar() { + val t: X = X() +} diff --git a/idea/testData/refactoring/move/java/movePackage/movePackageToAnotherPackage/before/a/main.java b/idea/testData/refactoring/move/java/movePackage/movePackageToAnotherPackage/before/a/main.java new file mode 100644 index 00000000000..493b8e92bfc --- /dev/null +++ b/idea/testData/refactoring/move/java/movePackage/movePackageToAnotherPackage/before/a/main.java @@ -0,0 +1,5 @@ +package a; + +public class A { + +} diff --git a/idea/testData/refactoring/move/java/movePackage/movePackageToAnotherPackage/before/c/noImports.kt b/idea/testData/refactoring/move/java/movePackage/movePackageToAnotherPackage/before/c/noImports.kt new file mode 100644 index 00000000000..5dfd51b7ddc --- /dev/null +++ b/idea/testData/refactoring/move/java/movePackage/movePackageToAnotherPackage/before/c/noImports.kt @@ -0,0 +1,3 @@ +fun bar() { + val t: a.A = a.A() +} diff --git a/idea/testData/refactoring/move/java/movePackage/movePackageToAnotherPackage/before/c/onDemandSourcePackageImport.kt b/idea/testData/refactoring/move/java/movePackage/movePackageToAnotherPackage/before/c/onDemandSourcePackageImport.kt new file mode 100644 index 00000000000..7c46f5487b5 --- /dev/null +++ b/idea/testData/refactoring/move/java/movePackage/movePackageToAnotherPackage/before/c/onDemandSourcePackageImport.kt @@ -0,0 +1,5 @@ +import a.* + +fun bar() { + val t: A = A() +} diff --git a/idea/testData/refactoring/move/java/movePackage/movePackageToAnotherPackage/before/c/specificClassImport.kt b/idea/testData/refactoring/move/java/movePackage/movePackageToAnotherPackage/before/c/specificClassImport.kt new file mode 100644 index 00000000000..933d6575eea --- /dev/null +++ b/idea/testData/refactoring/move/java/movePackage/movePackageToAnotherPackage/before/c/specificClassImport.kt @@ -0,0 +1,5 @@ +import a.A as X + +fun bar() { + val t: X = X() +} diff --git a/idea/testData/refactoring/move/java/movePackage/movePackageToAnotherPackage/movePackageToAnotherPackage.test b/idea/testData/refactoring/move/java/movePackage/movePackageToAnotherPackage/movePackageToAnotherPackage.test new file mode 100644 index 00000000000..48a5c17d820 --- /dev/null +++ b/idea/testData/refactoring/move/java/movePackage/movePackageToAnotherPackage/movePackageToAnotherPackage.test @@ -0,0 +1,6 @@ +{ + "mainFile": "a/main.java", + "type": "MOVE_PACKAGES", + "sourcePackage": "a", + "targetPackage": "b" +} diff --git a/idea/tests/org/jetbrains/jet/plugin/refactoring/move/AbstractJetMoveTest.kt b/idea/tests/org/jetbrains/jet/plugin/refactoring/move/AbstractJetMoveTest.kt index 9dc25ae5e08..d019eac7ef8 100644 --- a/idea/tests/org/jetbrains/jet/plugin/refactoring/move/AbstractJetMoveTest.kt +++ b/idea/tests/org/jetbrains/jet/plugin/refactoring/move/AbstractJetMoveTest.kt @@ -37,6 +37,11 @@ import com.intellij.openapi.application.ApplicationManager import com.intellij.psi.PsiDocumentManager import com.intellij.openapi.util.Computable import org.jetbrains.jet.JetTestUtils +import com.intellij.refactoring.move.moveClassesOrPackages.MoveClassesOrPackagesProcessor +import com.intellij.refactoring.move.moveClassesOrPackages.MultipleRootsMoveDestination +import com.intellij.refactoring.PackageWrapper +import com.intellij.psi.JavaPsiFacade +import com.intellij.psi.PsiClass import com.intellij.psi.PsiFile import com.intellij.psi.PsiManager @@ -140,7 +145,40 @@ enum class MoveAction { options.setMemberVisibility(visibility) } - MoveMembersProcessor(mainFile.getProject(), options).run() + MoveMembersProcessor(elementAtCaret.getProject(), options).run() + } + } + + MOVE_TOP_LEVEL_CLASSES { + override fun runRefactoring(mainFile: PsiFile, elementAtCaret: PsiElement?, config: JsonObject) { + val classToMove = elementAtCaret!!.getParentByType(javaClass())!! + val targetPackage = config.getString("targetPackage") + + MoveClassesOrPackagesProcessor( + project = mainFile.getProject(), + elements = array(classToMove), + moveDestination = MultipleRootsMoveDestination(PackageWrapper(mainFile.getManager(), targetPackage)), + searchInComments = false, + searchInNonJavaFiles = true, + moveCallback = null + ).run() + } + } + + MOVE_PACKAGES { + override fun runRefactoring(mainFile: PsiFile, elementAtCaret: PsiElement?, config: JsonObject) { + val project = mainFile.getProject() + val sourcePackage = config.getString("sourcePackage") + val targetPackage = config.getString("targetPackage") + + MoveClassesOrPackagesProcessor( + project = project, + elements = array(JavaPsiFacade.getInstance(project).findPackage(sourcePackage)!!), + moveDestination = MultipleRootsMoveDestination(PackageWrapper(mainFile.getManager(), targetPackage)), + searchInComments = false, + searchInNonJavaFiles = true, + moveCallback = null + ).run() } } diff --git a/idea/tests/org/jetbrains/jet/plugin/refactoring/move/JetMoveTestGenerated.java b/idea/tests/org/jetbrains/jet/plugin/refactoring/move/JetMoveTestGenerated.java index d50c69e4954..01b859a22fa 100644 --- a/idea/tests/org/jetbrains/jet/plugin/refactoring/move/JetMoveTestGenerated.java +++ b/idea/tests/org/jetbrains/jet/plugin/refactoring/move/JetMoveTestGenerated.java @@ -66,6 +66,11 @@ public class JetMoveTestGenerated extends AbstractJetMoveTest { doTest("idea/testData/refactoring/move/java/moveClass/moveAsMember/moveClassToTopLevelClassOfAnotherPackage/moveClassToTopLevelClassOfAnotherPackage.test"); } + @TestMetadata("java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/moveTopLevelClassToAnotherPackage.test") + public void testJava_moveClass_moveTop_moveTopLevelClassToAnotherPackage_MoveTopLevelClassToAnotherPackage() throws Exception { + doTest("idea/testData/refactoring/move/java/moveClass/moveTop/moveTopLevelClassToAnotherPackage/moveTopLevelClassToAnotherPackage.test"); + } + @TestMetadata("java/moveField/moveFieldToExternalNestedClass/moveFieldToExternalNestedClass.test") public void testJava_moveField_moveFieldToExternalNestedClass_MoveFieldToExternalNestedClass() throws Exception { doTest("idea/testData/refactoring/move/java/moveField/moveFieldToExternalNestedClass/moveFieldToExternalNestedClass.test"); @@ -126,4 +131,9 @@ public class JetMoveTestGenerated extends AbstractJetMoveTest { doTest("idea/testData/refactoring/move/java/moveMethod/moveMethodToTopLevelClassOfAnotherPackage/moveMethodToTopLevelClassOfAnotherPackage.test"); } + @TestMetadata("java/movePackage/movePackageToAnotherPackage/movePackageToAnotherPackage.test") + public void testJava_movePackage_movePackageToAnotherPackage_MovePackageToAnotherPackage() throws Exception { + doTest("idea/testData/refactoring/move/java/movePackage/movePackageToAnotherPackage/movePackageToAnotherPackage.test"); + } + }