From 2e4f46045e55fb6a705a7b1b70d2900262078603 Mon Sep 17 00:00:00 2001 From: Mikhail Glukhikh Date: Mon, 27 Aug 2018 17:21:13 +0300 Subject: [PATCH] Kotlin migration: extract data context into a function, check it on null The extraction itself is needed due to different behaviour of related IDEA functions in different platforms. Check on null is needed because `createFromAnAction` last argument cannot be null, otherwise we will get an exception. Partial fix of KT-26399 --- .../KotlinMigrationProjectComponent.kt | 9 +++++---- .../kotlin/idea/configuration/MigrationUtils.kt | 13 +++++++++++++ 2 files changed, 18 insertions(+), 4 deletions(-) create mode 100644 idea/src/org/jetbrains/kotlin/idea/configuration/MigrationUtils.kt diff --git a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinMigrationProjectComponent.kt b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinMigrationProjectComponent.kt index e6b3650f46c..8af45e59cf2 100644 --- a/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinMigrationProjectComponent.kt +++ b/idea/src/org/jetbrains/kotlin/idea/configuration/KotlinMigrationProjectComponent.kt @@ -5,7 +5,6 @@ package org.jetbrains.kotlin.idea.configuration -import com.intellij.ide.DataManager import com.intellij.openapi.actionSystem.ActionManager import com.intellij.openapi.actionSystem.ActionPlaces import com.intellij.openapi.actionSystem.AnActionEvent @@ -94,10 +93,12 @@ class KotlinMigrationProjectComponent(val project: Project) { if (migrationNotificationDialog.isOK) { val action = ActionManager.getInstance().getAction(CodeMigrationAction.ACTION_ID) - val dataContext = DataManager.getInstance().dataContextFromFocus.result - val actionEvent = AnActionEvent.createFromAnAction(action, null, ActionPlaces.ACTION_SEARCH, dataContext) + val dataContext = getDataContextFromDialog(migrationNotificationDialog) + if (dataContext != null) { + val actionEvent = AnActionEvent.createFromAnAction(action, null, ActionPlaces.ACTION_SEARCH, dataContext) - action.actionPerformed(actionEvent) + action.actionPerformed(actionEvent) + } } } } diff --git a/idea/src/org/jetbrains/kotlin/idea/configuration/MigrationUtils.kt b/idea/src/org/jetbrains/kotlin/idea/configuration/MigrationUtils.kt new file mode 100644 index 00000000000..b9d5bd1ef39 --- /dev/null +++ b/idea/src/org/jetbrains/kotlin/idea/configuration/MigrationUtils.kt @@ -0,0 +1,13 @@ +/* + * 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.configuration + +import com.intellij.ide.DataManager +import com.intellij.openapi.actionSystem.DataContext +import com.intellij.openapi.ui.DialogWrapper + +@Suppress("UNUSED_PARAMETER") +internal fun getDataContextFromDialog(wrapper: DialogWrapper): DataContext? = DataManager.getInstance().dataContextFromFocus.result \ No newline at end of file