Delegated property fail
diff --git a/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt b/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt index e9e152d..f8f3e2e 100644 --- a/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt +++ b/idea/src/org/jetbrains/kotlin/idea/refactoring/kotlinRefactoringUtil.kt
@@ -9,6 +9,7 @@ import com.intellij.codeInsight.unwrap.RangeSplitter import com.intellij.codeInsight.unwrap.UnwrapHandler import com.intellij.ide.IdeBundle +import com.intellij.ide.util.PropertiesComponent import com.intellij.ide.util.PsiElementListCellRenderer import com.intellij.lang.injection.InjectedLanguageManager import com.intellij.lang.java.JavaLanguage @@ -95,6 +96,8 @@ import java.util.* import javax.swing.Icon import kotlin.math.min +import kotlin.properties.ReadWriteProperty +import kotlin.reflect.KProperty import org.jetbrains.kotlin.idea.core.util.getLineCount as newGetLineCount import org.jetbrains.kotlin.idea.core.util.toPsiDirectory as newToPsiDirectory @@ -1042,4 +1045,18 @@ ) fun VirtualFile.toPsiFile(project: Project): PsiFile? { return newToPsiFile(project) -} \ No newline at end of file +} + +internal class ConfigurationBooleanProperty(private val id: String, private val defaultValue: Boolean) : + ReadWriteProperty<Any?, Boolean> +{ + override operator fun setValue(thisRef: Any?, property: KProperty<*>, value: Boolean) { + if (!ApplicationManager.getApplication().isUnitTestMode) { + PropertiesComponent.getInstance().setValue(id, value, defaultValue) + } + } + + override operator fun getValue(thisRef: Any?, property: KProperty<*>) = + !ApplicationManager.getApplication().isUnitTestMode && + PropertiesComponent.getInstance().getBoolean(id, defaultValue) +}
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 96666e0..3d625af 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
@@ -8,7 +8,6 @@ import com.intellij.ide.util.PropertiesComponent import com.intellij.openapi.actionSystem.ActionManager import com.intellij.openapi.actionSystem.IdeActions -import com.intellij.openapi.application.ApplicationManager import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory import com.intellij.openapi.fileChooser.FileChooserFactory import com.intellij.openapi.keymap.KeymapUtil @@ -24,7 +23,6 @@ import com.intellij.refactoring.copy.CopyFilesOrDirectoriesHandler import com.intellij.refactoring.move.MoveCallback import com.intellij.refactoring.move.MoveHandler -import com.intellij.refactoring.util.CommonRefactoringUtil import com.intellij.ui.NonFocusableCheckBox import com.intellij.ui.RecentsManager import com.intellij.ui.TextFieldWithHistoryWithBrowseButton @@ -33,6 +31,7 @@ import com.intellij.util.ui.UIUtil import org.jetbrains.kotlin.idea.core.packageMatchesDirectoryOrImplicit import org.jetbrains.kotlin.idea.core.util.onTextChange +import org.jetbrains.kotlin.idea.refactoring.ConfigurationBooleanProperty import org.jetbrains.kotlin.idea.refactoring.isInKotlinAwareSourceRoot import org.jetbrains.kotlin.idea.refactoring.move.moveDeclarations.KotlinAwareMoveFilesOrDirectoriesProcessor import org.jetbrains.kotlin.idea.util.application.executeCommand @@ -49,12 +48,13 @@ companion object { private const val RECENT_KEYS = "MoveFile.RECENT_KEYS" private const val MOVE_FILES_OPEN_IN_EDITOR = "MoveFile.OpenInEditor" + private const val MOVE_FILES_SEARCH_REFERENCES = "MoveFile.SearchReferences" private const val HELP_ID = "refactoring.moveFile" } private val nameLabel = JBLabelDecorator.createJBLabelDecorator().setBold(true) private val targetDirectoryField = TextFieldWithHistoryWithBrowseButton() - private val searchReferencesCb = NonFocusableCheckBox("Search r${UIUtil.MNEMONIC}eferences").apply { isSelected = true } + private val searchReferencesCb = NonFocusableCheckBox("Search r${UIUtil.MNEMONIC}eferences") private val openInEditorCb = NonFocusableCheckBox("Open moved files in editor") private val updatePackageDirectiveCb = NonFocusableCheckBox() @@ -89,7 +89,8 @@ targetDirectoryField.setTextFieldPreferredWidth(CopyFilesOrDirectoriesDialog.MAX_PATH_LENGTH) Disposer.register(disposable, targetDirectoryField) - openInEditorCb.isSelected = isOpenInEditor() + openInEditorCb.isSelected = isOpenInEditor + searchReferencesCb.isSelected = isSearchReferences val shortcutText = KeymapUtil.getFirstKeyboardShortcutText(ActionManager.getInstance().getAction(IdeActions.ACTION_CODE_COMPLETION)) return FormBuilder.createFormBuilder() @@ -138,10 +139,9 @@ } } - private fun isOpenInEditor(): Boolean { - if (ApplicationManager.getApplication().isUnitTestMode) return false - return PropertiesComponent.getInstance().getBoolean(MOVE_FILES_OPEN_IN_EDITOR, false) - } + private var isOpenInEditor by ConfigurationBooleanProperty(MOVE_FILES_OPEN_IN_EDITOR, defaultValue = false) + + private var isSearchReferences by ConfigurationBooleanProperty(MOVE_FILES_SEARCH_REFERENCES, defaultValue = true) private fun validateOKButton() { isOKActionEnabled = targetDirectoryField.childComponent.text.isNotEmpty() @@ -192,7 +192,9 @@ processor.run() } - PropertiesComponent.getInstance().setValue(MOVE_FILES_OPEN_IN_EDITOR, openInEditorCb.isSelected, false) + isOpenInEditor = openInEditorCb.isSelected + isSearchReferences = searchReferencesCb.isSelected + RecentsManager.getInstance(project).registerRecentEntry(RECENT_KEYS, targetDirectoryField.childComponent.text) close(OK_EXIT_CODE, true)