diff --git a/idea/src/org/jetbrains/kotlin/idea/versions/UnsupportedAbiVersionNotificationPanelProvider.kt b/idea/src/org/jetbrains/kotlin/idea/versions/UnsupportedAbiVersionNotificationPanelProvider.kt index 5e3eee6d7dc..4cd8351678a 100644 --- a/idea/src/org/jetbrains/kotlin/idea/versions/UnsupportedAbiVersionNotificationPanelProvider.kt +++ b/idea/src/org/jetbrains/kotlin/idea/versions/UnsupportedAbiVersionNotificationPanelProvider.kt @@ -16,8 +16,6 @@ package org.jetbrains.kotlin.idea.versions -import com.google.common.base.Predicate -import com.google.common.collect.Collections2 import com.intellij.ProjectTopics import com.intellij.icons.AllIcons import com.intellij.openapi.application.ApplicationManager @@ -25,7 +23,6 @@ import com.intellij.openapi.compiler.CompilerManager import com.intellij.openapi.components.ServiceManager import com.intellij.openapi.fileEditor.FileEditor import com.intellij.openapi.fileEditor.OpenFileDescriptor -import com.intellij.openapi.module.Module import com.intellij.openapi.module.ModuleUtilCore import com.intellij.openapi.progress.ProcessCanceledException import com.intellij.openapi.project.DumbService @@ -33,29 +30,22 @@ import com.intellij.openapi.project.IndexNotReadyException import com.intellij.openapi.project.Project import com.intellij.openapi.roots.ModuleRootAdapter import com.intellij.openapi.roots.ModuleRootEvent -import com.intellij.openapi.roots.libraries.Library import com.intellij.openapi.ui.popup.JBPopupFactory -import com.intellij.openapi.ui.popup.ListPopup import com.intellij.openapi.ui.popup.PopupStep import com.intellij.openapi.ui.popup.util.BaseListPopupStep -import com.intellij.openapi.util.Computable import com.intellij.openapi.util.Key import com.intellij.openapi.util.Ref import com.intellij.openapi.vfs.VfsUtilCore import com.intellij.openapi.vfs.VirtualFile import com.intellij.ui.EditorNotificationPanel import com.intellij.ui.EditorNotifications -import com.intellij.util.messages.MessageBusConnection +import com.intellij.ui.HyperlinkLabel import org.jetbrains.kotlin.idea.KotlinFileType -import org.jetbrains.kotlin.idea.configuration.* +import org.jetbrains.kotlin.idea.configuration.isModuleConfigured import org.jetbrains.kotlin.idea.framework.JSLibraryStdPresentationProvider import org.jetbrains.kotlin.idea.framework.JavaRuntimePresentationProvider - -import javax.swing.* -import java.awt.* import java.text.MessageFormat -import java.util.Collections -import java.util.HashSet +import javax.swing.Icon class UnsupportedAbiVersionNotificationPanelProvider(private val project: Project) : EditorNotifications.Provider() { @@ -80,8 +70,7 @@ class UnsupportedAbiVersionNotificationPanelProvider(private val project: Projec val answer = ErrorNotificationPanel() val kotlinLibraries = findAllUsedLibraries(project).keySet() - val badRuntimeLibraries = Collections2.filter(kotlinLibraries) { library -> - assert(library != null) { "library should be non null" } + val badRuntimeLibraries = kotlinLibraries.filter { library -> val runtimeJar = getLocalJar(JavaRuntimePresentationProvider.getRuntimeJar(library)) val jsLibJar = getLocalJar(JSLibraryStdPresentationProvider.getJsStdLibJar(library)) badRoots.contains(runtimeJar) || badRoots.contains(jsLibJar) @@ -118,25 +107,23 @@ class UnsupportedAbiVersionNotificationPanelProvider(private val project: Projec } private fun createShowPathsActionLabel(answer: EditorNotificationPanel, labelText: String) { - val label = Ref(null) + val label: Ref = Ref.create() val action = Runnable { DumbService.getInstance(project).tryRunReadActionInSmartMode({ - val badRoots = collectBadRoots(project) - assert(!badRoots.isEmpty()) { "This action should only be called when bad roots are present" } + val badRoots = collectBadRoots(project) + assert(!badRoots.isEmpty()) { "This action should only be called when bad roots are present" } - val listPopupModel = LibraryRootsPopupModel("Unsupported format", project, badRoots) - val popup = JBPopupFactory.getInstance().createListPopup(listPopupModel) - popup.showUnderneathOf(label.get()) + val listPopupModel = LibraryRootsPopupModel("Unsupported format", project, badRoots) + val popup = JBPopupFactory.getInstance().createListPopup(listPopupModel) + popup.showUnderneathOf(label.get()) - null - }, "Can't show all paths during index update") + null + }, "Can't show all paths during index update") } label.set(answer.createActionLabel(labelText, action)) } - override fun getKey(): Key { - return KEY - } + override fun getKey(): Key = KEY override fun createNotificationPanel(file: VirtualFile, fileEditor: FileEditor): EditorNotificationPanel? { try { @@ -162,7 +149,8 @@ class UnsupportedAbiVersionNotificationPanelProvider(private val project: Projec return null } - private class LibraryRootsPopupModel(title: String, private val project: Project, roots: Collection) : BaseListPopupStep(title, roots.toArray(arrayOfNulls(roots.size))) { + private class LibraryRootsPopupModel(title: String, private val project: Project, roots: Collection) + : BaseListPopupStep(title, *roots.toTypedArray()) { override fun getTextFor(root: VirtualFile): String { val relativePath = VfsUtilCore.getRelativePath(root, project.baseDir, '/') @@ -176,14 +164,12 @@ class UnsupportedAbiVersionNotificationPanelProvider(private val project: Projec return AllIcons.FileTypes.Archive } - override fun onChosen(selectedValue: VirtualFile?, finalChoice: Boolean): PopupStep? { + override fun onChosen(selectedValue: VirtualFile, finalChoice: Boolean): PopupStep? { navigateToLibraryRoot(project, selectedValue) return PopupStep.FINAL_CHOICE } - override fun isSpeedSearchEnabled(): Boolean { - return true - } + override fun isSpeedSearchEnabled(): Boolean = true } private class ErrorNotificationPanel : EditorNotificationPanel() { @@ -229,11 +215,7 @@ class UnsupportedAbiVersionNotificationPanelProvider(private val project: Projec if (badJVMRoots.isEmpty() && badJSRoots.isEmpty()) return emptyList() - val badRoots = HashSet() - badRoots.addAll(badJVMRoots) - badRoots.addAll(badJSRoots) - - return badRoots + return (badJVMRoots + badJSRoots).toHashSet() } } }