diff --git a/idea/src/META-INF/plugin.xml b/idea/src/META-INF/plugin.xml
index 438251e6ffd..c44273b2ddc 100644
--- a/idea/src/META-INF/plugin.xml
+++ b/idea/src/META-INF/plugin.xml
@@ -117,6 +117,11 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
+
+
+
+
diff --git a/idea/src/META-INF/plugin.xml.172 b/idea/src/META-INF/plugin.xml.172
index 27cfa4cc048..76d29c25190 100644
--- a/idea/src/META-INF/plugin.xml.172
+++ b/idea/src/META-INF/plugin.xml.172
@@ -117,6 +117,11 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
+
+
+
+
diff --git a/idea/src/META-INF/plugin.xml.173 b/idea/src/META-INF/plugin.xml.173
index 14fa467c112..694fcda736b 100644
--- a/idea/src/META-INF/plugin.xml.173
+++ b/idea/src/META-INF/plugin.xml.173
@@ -117,6 +117,11 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
+
+
+
+
diff --git a/idea/src/META-INF/plugin.xml.182 b/idea/src/META-INF/plugin.xml.182
index 76a34ad2796..f7dceb6749f 100644
--- a/idea/src/META-INF/plugin.xml.182
+++ b/idea/src/META-INF/plugin.xml.182
@@ -118,6 +118,11 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
+
+
+
+
diff --git a/idea/src/META-INF/plugin.xml.as31 b/idea/src/META-INF/plugin.xml.as31
index bd508749395..3f778c6c6f5 100644
--- a/idea/src/META-INF/plugin.xml.as31
+++ b/idea/src/META-INF/plugin.xml.as31
@@ -117,6 +117,11 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
+
+
+
+
diff --git a/idea/src/META-INF/plugin.xml.as32 b/idea/src/META-INF/plugin.xml.as32
index fd0c1a1c30a..a0b9bce6133 100644
--- a/idea/src/META-INF/plugin.xml.as32
+++ b/idea/src/META-INF/plugin.xml.as32
@@ -117,6 +117,11 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
+
+
+
+
diff --git a/idea/src/META-INF/plugin.xml.as33 b/idea/src/META-INF/plugin.xml.as33
index d9b3e13d5cb..4f112b3e082 100644
--- a/idea/src/META-INF/plugin.xml.as33
+++ b/idea/src/META-INF/plugin.xml.as33
@@ -116,6 +116,11 @@ The Kotlin plugin provides language support in IntelliJ IDEA and Android Studio.
+
+
+
+
diff --git a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinMigrationProjectComponent.kt b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinMigrationProjectComponent.kt
index bc5075f65ad..c421541ea33 100644
--- a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinMigrationProjectComponent.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinMigrationProjectComponent.kt
@@ -26,6 +26,7 @@ import org.jetbrains.kotlin.idea.configuration.ui.MigrationNotificationDialog
import org.jetbrains.kotlin.idea.framework.GRADLE_SYSTEM_ID
import org.jetbrains.kotlin.idea.framework.MAVEN_SYSTEM_ID
import org.jetbrains.kotlin.idea.migration.CodeMigrationAction
+import org.jetbrains.kotlin.idea.migration.CodeMigrationToggleAction
import org.jetbrains.kotlin.idea.project.languageVersionSettings
import org.jetbrains.kotlin.idea.util.application.runReadAction
import org.jetbrains.kotlin.idea.versions.LibInfo
@@ -43,11 +44,19 @@ class KotlinMigrationProjectComponent(val project: Project) {
@Synchronized
fun onImportAboutToStart() {
+ if (!CodeMigrationToggleAction.isEnabled(project)) {
+ return
+ }
+
old = MigrationState.build(project)
}
@Synchronized
fun onImportFinished() {
+ if (!CodeMigrationToggleAction.isEnabled(project)) {
+ return
+ }
+
new = MigrationState.build(project)
val migrationInfo = prepareMigrationInfo(old, new) ?: return
diff --git a/idea/src/org/jetbrains/kotlin/idea/configuration/ui/MigrationNotificationDialog.kt b/idea/src/org/jetbrains/kotlin/idea/configuration/ui/MigrationNotificationDialog.kt
index baa9e3bf3da..adf119b3102 100644
--- a/idea/src/org/jetbrains/kotlin/idea/configuration/ui/MigrationNotificationDialog.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/configuration/ui/MigrationNotificationDialog.kt
@@ -3,9 +3,10 @@ package org.jetbrains.kotlin.idea.configuration.ui
import com.intellij.openapi.project.Project
import com.intellij.openapi.ui.DialogWrapper
import org.jetbrains.kotlin.idea.configuration.MigrationInfo
+import org.jetbrains.kotlin.idea.migration.CodeMigrationToggleAction
import javax.swing.JComponent
-internal class MigrationNotificationDialog(project: Project?, migrationInfo: MigrationInfo) : DialogWrapper(project, false) {
+internal class MigrationNotificationDialog(val project: Project, migrationInfo: MigrationInfo) : DialogWrapper(project, false) {
private val form = MigrationNotificationForm()
init {
@@ -21,12 +22,20 @@ internal class MigrationNotificationDialog(project: Project?, migrationInfo: Mig
form.apiVersionInfo.isVisible = migrationInfo.oldApiVersion != migrationInfo.newApiVersion
form.apiVersionInfo.text = "API version: ${migrationInfo.oldApiVersion} to ${migrationInfo.newApiVersion}"
+ form.disableMigrationDetectionCheckBox.isSelected = !CodeMigrationToggleAction.isEnabled(project)
+
init()
}
override fun createCenterPanel(): JComponent = form.mainPanel
private fun saveSettings() {
+ CodeMigrationToggleAction.setEnabled(project, !form.disableMigrationDetectionCheckBox.isSelected)
+ }
+
+ override fun doCancelAction() {
+ saveSettings()
+ super.doCancelAction()
}
override fun doOKAction() {
diff --git a/idea/src/org/jetbrains/kotlin/idea/configuration/ui/MigrationNotificationForm.form b/idea/src/org/jetbrains/kotlin/idea/configuration/ui/MigrationNotificationForm.form
index 20b432c1673..41a24890e0a 100644
--- a/idea/src/org/jetbrains/kotlin/idea/configuration/ui/MigrationNotificationForm.form
+++ b/idea/src/org/jetbrains/kotlin/idea/configuration/ui/MigrationNotificationForm.form
@@ -76,7 +76,7 @@
-
+
diff --git a/idea/src/org/jetbrains/kotlin/idea/migration/CodeMigrationAction.kt b/idea/src/org/jetbrains/kotlin/idea/migration/CodeMigrationAction.kt
index ce86c102c0f..aedb5862b90 100644
--- a/idea/src/org/jetbrains/kotlin/idea/migration/CodeMigrationAction.kt
+++ b/idea/src/org/jetbrains/kotlin/idea/migration/CodeMigrationAction.kt
@@ -5,7 +5,18 @@
package org.jetbrains.kotlin.idea.migration
+import com.intellij.openapi.actionSystem.AnActionEvent
+
class CodeMigrationAction : CodeInspectionAction("Code Migration", "Code migration") {
+ override fun update(e: AnActionEvent?) {
+ super.update(e)
+
+ val project = e?.project
+ if (project != null) {
+ e.presentation.isEnabledAndVisible = CodeMigrationToggleAction.isEnabled(project)
+ }
+ }
+
override fun getHelpTopic(): String {
return "reference.dialogs.cleanup.scope"
}
diff --git a/idea/src/org/jetbrains/kotlin/idea/migration/CodeMigrationToggleAction.kt b/idea/src/org/jetbrains/kotlin/idea/migration/CodeMigrationToggleAction.kt
new file mode 100644
index 00000000000..d162da21e7a
--- /dev/null
+++ b/idea/src/org/jetbrains/kotlin/idea/migration/CodeMigrationToggleAction.kt
@@ -0,0 +1,36 @@
+/*
+ * Copyright 2010-2018 JetBrains s.r.o. Use of this source code is governed by the Apache 2.0 license
+ * that can be found in the license/LICENSE.txt file.
+ */
+
+package org.jetbrains.kotlin.idea.migration
+
+import com.intellij.ide.util.PropertiesComponent
+import com.intellij.openapi.actionSystem.AnActionEvent
+import com.intellij.openapi.actionSystem.ToggleAction
+import com.intellij.openapi.project.Project
+
+class CodeMigrationToggleAction : ToggleAction() {
+ override fun isSelected(e: AnActionEvent): Boolean {
+ val project = e.project ?: return false
+ return isEnabled(project)
+ }
+
+ override fun setSelected(e: AnActionEvent, state: Boolean) {
+ val project = e.project ?: return
+ setEnabled(project, state)
+ }
+
+ companion object {
+ private const val MIGRATION_OPTION = "kotlin.migration.detection.enabled"
+
+ fun setEnabled(project: Project, state: Boolean) {
+ PropertiesComponent.getInstance(project).setValue(MIGRATION_OPTION, state, true)
+ }
+
+ fun isEnabled(project: Project): Boolean {
+ return PropertiesComponent.getInstance(project).getBoolean(MIGRATION_OPTION, true)
+ }
+ }
+}
+