From e604707450d3bf24034d0e2c66c831745773a101 Mon Sep 17 00:00:00 2001 From: Alexey Sedunov Date: Tue, 20 Mar 2018 21:37:21 +0300 Subject: [PATCH] Move: Support "Search references" option in dialogs --- ...otlinAwareMoveFilesOrDirectoriesProcessor.kt | 3 ++- .../MoveKotlinDeclarationsProcessor.kt | 5 +++-- .../KotlinAwareMoveFilesOrDirectoriesDialog.kt | 6 +++++- .../MoveKotlinTopLevelDeclarationsDialog.form | 17 +++++++++++++---- .../MoveKotlinTopLevelDeclarationsDialog.java | 7 ++++++- .../idea/refactoring/move/moveFilesUtil.kt | 1 + .../idea/refactoring/move/AbstractMoveTest.kt | 1 + 7 files changed, 31 insertions(+), 9 deletions(-) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/KotlinAwareMoveFilesOrDirectoriesProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/KotlinAwareMoveFilesOrDirectoriesProcessor.kt index dc9c8e18883..ce875bc9dcf 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/KotlinAwareMoveFilesOrDirectoriesProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/KotlinAwareMoveFilesOrDirectoriesProcessor.kt @@ -36,6 +36,7 @@ class KotlinAwareMoveFilesOrDirectoriesProcessor @JvmOverloads constructor ( project: Project, private val elementsToMove: List, private val targetDirectory: PsiDirectory, + private val searchReferences: Boolean, searchInComments: Boolean, searchInNonJavaFiles: Boolean, moveCallback: MoveCallback?, @@ -55,7 +56,7 @@ class KotlinAwareMoveFilesOrDirectoriesProcessor @JvmOverloads constructor ( override fun findUsages(): Array { try { markScopeToMove(elementsToMove) - return super.findUsages() + return if (searchReferences) super.findUsages() else UsageInfo.EMPTY_ARRAY } finally { markScopeToMove(null) diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveKotlinDeclarationsProcessor.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveKotlinDeclarationsProcessor.kt index 41924de66cf..60b456958f7 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveKotlinDeclarationsProcessor.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/MoveKotlinDeclarationsProcessor.kt @@ -103,7 +103,8 @@ class MoveDeclarationsDescriptor @JvmOverloads constructor( val moveCallback: MoveCallback? = null, val openInEditor: Boolean = false, val allElementsToMove: List? = null, - val analyzeConflicts: Boolean = true + val analyzeConflicts: Boolean = true, + val searchReferences: Boolean = true ) class ConflictUsageInfo(element: PsiElement, val messages: Collection) : UsageInfo(element) @@ -156,7 +157,7 @@ class MoveKotlinDeclarationsProcessor( fun getConflictsAsUsages(): List = conflicts.entrySet().map { ConflictUsageInfo(it.key, it.value) } public override fun findUsages(): Array { - if (elementsToMove.isEmpty()) return UsageInfo.EMPTY_ARRAY + if (!descriptor.searchReferences || elementsToMove.isEmpty()) return UsageInfo.EMPTY_ARRAY val newContainerName = descriptor.moveTarget.targetContainerFqName?.asString() ?: "" diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/KotlinAwareMoveFilesOrDirectoriesDialog.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/KotlinAwareMoveFilesOrDirectoriesDialog.kt index d196e7a713b..db82db238ed 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/KotlinAwareMoveFilesOrDirectoriesDialog.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/KotlinAwareMoveFilesOrDirectoriesDialog.kt @@ -14,7 +14,6 @@ import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory import com.intellij.openapi.fileChooser.FileChooserFactory import com.intellij.openapi.help.HelpManager import com.intellij.openapi.keymap.KeymapUtil -import com.intellij.openapi.project.DumbModePermission import com.intellij.openapi.project.DumbService import com.intellij.openapi.project.Project import com.intellij.openapi.ui.DialogWrapper @@ -53,6 +52,7 @@ class KotlinAwareMoveFilesOrDirectoriesDialog( private val nameLabel = JBLabelDecorator.createJBLabelDecorator().setBold(true) private val targetDirectoryField = TextFieldWithHistoryWithBrowseButton() + private val searchReferencesCb = NonFocusableCheckBox("Search ${UIUtil.MNEMONIC}references").apply { isSelected = true } private val openInEditorCb = NonFocusableCheckBox("Open moved files in editor") private val updatePackageDirectiveCb = NonFocusableCheckBox() @@ -68,6 +68,9 @@ class KotlinAwareMoveFilesOrDirectoriesDialog( val updatePackageDirective: Boolean get() = updatePackageDirectiveCb.isSelected + val searchReferences: Boolean + get() = searchReferencesCb.isSelected + override fun createActions() = arrayOf(okAction, cancelAction, helpAction) override fun getPreferredFocusedComponent() = targetDirectoryField.childComponent @@ -102,6 +105,7 @@ class KotlinAwareMoveFilesOrDirectoriesDialog( .addComponent(nameLabel) .addLabeledComponent(RefactoringBundle.message("move.files.to.directory.label"), targetDirectoryField, UIUtil.LARGE_VGAP) .addTooltip(RefactoringBundle.message("path.completion.shortcut", shortcutText)) + .addComponentToRightColumn(searchReferencesCb, UIUtil.LARGE_VGAP) .addComponentToRightColumn(openInEditorCb, UIUtil.LARGE_VGAP) .addComponentToRightColumn(updatePackageDirectiveCb, UIUtil.LARGE_VGAP) .panel diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/MoveKotlinTopLevelDeclarationsDialog.form b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/MoveKotlinTopLevelDeclarationsDialog.form index 8f750cbbf14..656468c3f24 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/MoveKotlinTopLevelDeclarationsDialog.form +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/MoveKotlinTopLevelDeclarationsDialog.form @@ -2,7 +2,7 @@
- + @@ -116,7 +116,7 @@ - + @@ -126,7 +126,7 @@ - + @@ -135,13 +135,22 @@ - + + + + + + + + + + diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/MoveKotlinTopLevelDeclarationsDialog.java b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/MoveKotlinTopLevelDeclarationsDialog.java index 031fd729273..e269b2edc46 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/MoveKotlinTopLevelDeclarationsDialog.java +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveDeclarations/ui/MoveKotlinTopLevelDeclarationsDialog.java @@ -94,6 +94,7 @@ public class MoveKotlinTopLevelDeclarationsDialog extends RefactoringDialog { private JTextField tfFileNameInPackage; private JCheckBox cbSpecifyFileNameInPackage; private JCheckBox cbUpdatePackageDirective; + private JCheckBox cbSearchReferences; private KotlinMemberSelectionTable memberTable; public MoveKotlinTopLevelDeclarationsDialog( @NotNull Project project, @@ -747,6 +748,7 @@ public class MoveKotlinTopLevelDeclarationsDialog extends RefactoringDialog { : new KotlinAwareMoveFilesOrDirectoriesProcessor(myProject, sourceFiles, targetDirectory, + cbSearchReferences.isSelected(), isSearchInComments(), isSearchInNonJavaFiles(), moveCallback); @@ -777,7 +779,10 @@ public class MoveKotlinTopLevelDeclarationsDialog extends RefactoringDialog { false, deleteSourceFile, moveCallback, - false + false, + null, + true, + cbSearchReferences.isSelected() ); invokeRefactoring(new MoveKotlinDeclarationsProcessor(options, Mover.Default.INSTANCE)); } diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveFilesUtil.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveFilesUtil.kt index d2fd92562ee..8b53495049f 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveFilesUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/move/moveFilesUtil.kt @@ -82,6 +82,7 @@ fun invokeMoveFilesOrDirectoriesRefactoring( project, elementsToMove as List, selectedDir, + moveDialog?.searchReferences ?: true, false, false, moveCallback, diff --git a/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/AbstractMoveTest.kt b/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/AbstractMoveTest.kt index 8f043d91650..83e02087d1b 100644 --- a/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/AbstractMoveTest.kt +++ b/idea/tests/org/jetbrains/kotlin/idea/refactoring/move/AbstractMoveTest.kt @@ -211,6 +211,7 @@ enum class MoveAction : AbstractMultifileRefactoringTest.RefactoringAction { project, elementsToMove, targetDir, + true, searchInComments = true, searchInNonJavaFiles = true, moveCallback = null