From 468c869c0c05172b2aba1c35614a776d919e7d57 Mon Sep 17 00:00:00 2001 From: Natalia Ukhorskaya Date: Wed, 24 Feb 2016 14:20:08 +0300 Subject: [PATCH] Show notification for files converted to Kotlin after project sync --- .../actions/KotlinNewActivityNotification.kt | 40 +++++++++++++++++++ .../actions/NewKotlinActivityAction.kt | 11 +++-- idea/src/META-INF/android.xml | 2 + 3 files changed, 50 insertions(+), 3 deletions(-) create mode 100644 idea/kotlin-android-plugin/src/org/jetbrains/kotlin/android/actions/KotlinNewActivityNotification.kt diff --git a/idea/kotlin-android-plugin/src/org/jetbrains/kotlin/android/actions/KotlinNewActivityNotification.kt b/idea/kotlin-android-plugin/src/org/jetbrains/kotlin/android/actions/KotlinNewActivityNotification.kt new file mode 100644 index 00000000000..0ce5e2547fa --- /dev/null +++ b/idea/kotlin-android-plugin/src/org/jetbrains/kotlin/android/actions/KotlinNewActivityNotification.kt @@ -0,0 +1,40 @@ +/* + * Copyright 2010-2016 JetBrains s.r.o. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +package org.jetbrains.kotlin.android.actions + +import com.intellij.openapi.fileEditor.FileEditor +import com.intellij.openapi.util.Key +import com.intellij.openapi.vfs.VirtualFile +import com.intellij.ui.EditorNotificationPanel +import com.intellij.ui.EditorNotifications + +class KotlinNewActivityNotification : EditorNotifications.Provider() { + override fun getKey() = KEY + + override fun createNotificationPanel(file: VirtualFile, editor: FileEditor): EditorNotificationPanel? { + if (NewKotlinActivityAction.willBeConvertedToKotlin(file)) { + return EditorNotificationPanel().apply { + setText("This file will be converted to Kotlin after Gradle project sync") + } + } + return null + } + + companion object { + private val KEY = Key.create("Kotlin.new.activity.notification") + } +} diff --git a/idea/kotlin-android-plugin/src/org/jetbrains/kotlin/android/actions/NewKotlinActivityAction.kt b/idea/kotlin-android-plugin/src/org/jetbrains/kotlin/android/actions/NewKotlinActivityAction.kt index 4599e8476c5..c7fa933d694 100644 --- a/idea/kotlin-android-plugin/src/org/jetbrains/kotlin/android/actions/NewKotlinActivityAction.kt +++ b/idea/kotlin-android-plugin/src/org/jetbrains/kotlin/android/actions/NewKotlinActivityAction.kt @@ -46,15 +46,20 @@ class NewKotlinActivityAction: AnAction(KotlinIcons.FILE) { subscribe(project, gradleSyncListener) } + internal fun willBeConvertedToKotlin(file: VirtualFile): Boolean { + return javaFilesToKotlin?.any { + it.virtualFile == file + } ?: false + } + private val LOG = Logger.getInstance(NewKotlinActivityAction::class.java) + private var javaFilesToKotlin: List? = null private fun convertFilesAfterProjectSync(files: List) { - gradleSyncListener.javaFilesToKotlin = files + javaFilesToKotlin = files } private val gradleSyncListener = object: GradleSyncListener.Adapter() { - internal var javaFilesToKotlin: List? = null - override fun syncSucceeded(project: Project) { convertFiles(project) } diff --git a/idea/src/META-INF/android.xml b/idea/src/META-INF/android.xml index 98b7dd0f913..abfb9468828 100644 --- a/idea/src/META-INF/android.xml +++ b/idea/src/META-INF/android.xml @@ -13,6 +13,8 @@ groupName="Kotlin" enabledByDefault="true" level="ERROR"/> + +