From fdb85d81740f9a68e9bd610be0eb40d154e0c087 Mon Sep 17 00:00:00 2001 From: Maxim Manuylov Date: Sat, 21 Jul 2012 16:11:30 +0400 Subject: [PATCH] do not suggest runtime library configuring if sdk is not configured --- ...gureKotlinLibraryNotificationProvider.java | 4 ++++ ...nSdkNotConfiguredNotificationProvider.java | 17 +------------- .../jet/plugin/sdk/KotlinSdkUtil.java | 22 +++++++++++++++++-- 3 files changed, 25 insertions(+), 18 deletions(-) diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/ConfigureKotlinLibraryNotificationProvider.java b/idea/src/org/jetbrains/jet/plugin/quickfix/ConfigureKotlinLibraryNotificationProvider.java index 516a7f8a423..ee974944e2b 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/ConfigureKotlinLibraryNotificationProvider.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/ConfigureKotlinLibraryNotificationProvider.java @@ -54,6 +54,7 @@ import com.intellij.ui.EditorNotifications; import com.intellij.util.containers.ContainerUtil; import org.jetbrains.annotations.NotNull; import org.jetbrains.jet.plugin.JetPluginUtil; +import org.jetbrains.jet.plugin.sdk.KotlinSdkUtil; import org.jetbrains.jet.utils.PathUtil; import javax.swing.*; @@ -86,6 +87,8 @@ public class ConfigureKotlinLibraryNotificationProvider implements EditorNotific if (isJsModule(module)) return null; + if (!KotlinSdkUtil.isSDKConfiguredFor(module)) return null; + GlobalSearchScope scope = module.getModuleWithDependenciesAndLibrariesScope(false); if (JavaPsiFacade.getInstance(myProject).findClass("jet.JetObject", scope) == null) { return createNotificationPanel(module); @@ -143,6 +146,7 @@ public class ConfigureKotlinLibraryNotificationProvider implements EditorNotific final Library finalKotlinRuntime = kotlinRuntime; ApplicationManager.getApplication().runWriteAction(new Runnable() { + @Override public void run() { Library.ModifiableModel model = finalKotlinRuntime.getModifiableModel(); model.addRoot(VfsUtil.getUrlForLibraryRoot(targetJar), OrderRootType.CLASSES); diff --git a/idea/src/org/jetbrains/jet/plugin/sdk/KotlinSdkNotConfiguredNotificationProvider.java b/idea/src/org/jetbrains/jet/plugin/sdk/KotlinSdkNotConfiguredNotificationProvider.java index b04ac9280a6..f5dc2552156 100644 --- a/idea/src/org/jetbrains/jet/plugin/sdk/KotlinSdkNotConfiguredNotificationProvider.java +++ b/idea/src/org/jetbrains/jet/plugin/sdk/KotlinSdkNotConfiguredNotificationProvider.java @@ -26,17 +26,12 @@ import com.intellij.openapi.roots.ModuleRootEvent; import com.intellij.openapi.roots.ModuleRootListener; import com.intellij.openapi.util.Key; import com.intellij.openapi.vfs.VirtualFile; -import com.intellij.psi.search.FilenameIndex; -import com.intellij.psi.search.GlobalSearchScope; import com.intellij.ui.EditorNotificationPanel; import com.intellij.ui.EditorNotifications; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.plugin.JetPluginUtil; -import java.io.File; -import java.util.Collection; - /** * @author Maxim.Manuylov * Date: 19.05.12 @@ -72,8 +67,7 @@ public class KotlinSdkNotConfiguredNotificationProvider implements EditorNotific final Module module = JetPluginUtil.getModuleForKotlinFile(file, myProject); if (module == null) return null; - final GlobalSearchScope scope = module.getModuleWithDependenciesAndLibrariesScope(false); - if (!containsKotlinCompilerJar(FilenameIndex.getVirtualFilesByName(myProject, KotlinSdkUtil.KOTLIN_COMPILER_JAR, scope))) { + if (!KotlinSdkUtil.isSDKConfiguredFor(module)) { return createNotificationPanel(module); } } @@ -83,15 +77,6 @@ public class KotlinSdkNotConfiguredNotificationProvider implements EditorNotific return null; } - private static boolean containsKotlinCompilerJar(@NotNull final Collection jars) { - for (final VirtualFile jar : jars) { - if (KotlinSdkUtil.isKotlinCompilerJar(new File(jar.getPath()))) { - return true; - } - } - return false; - } - @NotNull private static EditorNotificationPanel createNotificationPanel(@NotNull final Module module) { final EditorNotificationPanel panel = new EditorNotificationPanel(); diff --git a/idea/src/org/jetbrains/jet/plugin/sdk/KotlinSdkUtil.java b/idea/src/org/jetbrains/jet/plugin/sdk/KotlinSdkUtil.java index 6fb28a52980..5092731be9d 100644 --- a/idea/src/org/jetbrains/jet/plugin/sdk/KotlinSdkUtil.java +++ b/idea/src/org/jetbrains/jet/plugin/sdk/KotlinSdkUtil.java @@ -16,14 +16,18 @@ package org.jetbrains.jet.plugin.sdk; +import com.intellij.openapi.module.Module; import com.intellij.openapi.roots.libraries.PersistentLibraryKind; import com.intellij.openapi.util.io.FileUtil; import com.intellij.openapi.vfs.VirtualFile; +import com.intellij.psi.search.FilenameIndex; +import com.intellij.psi.search.GlobalSearchScope; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import java.io.File; import java.io.IOException; +import java.util.Collection; import java.util.List; import java.util.jar.Attributes; import java.util.jar.JarFile; @@ -42,7 +46,7 @@ public class KotlinSdkUtil { return new KotlinSdkProperties(""); } }; - @NotNull public static final String KOTLIN_COMPILER_JAR = "kotlin-compiler.jar"; + @NotNull private static final String KOTLIN_COMPILER_JAR = "kotlin-compiler.jar"; @NotNull private static final String[] KOTLIN_COMPILER_JAR_ENTRY_NAMES = { "org/jetbrains/jet/cli/KotlinCompiler.class", "org/jetbrains/jet/cli/jvm/K2JVMCompiler.class" @@ -106,7 +110,21 @@ public class KotlinSdkUtil { return null; } - public static boolean isKotlinCompilerJar(@NotNull final File jar) { + public static boolean isSDKConfiguredFor(@NotNull final Module module) { + final GlobalSearchScope scope = module.getModuleWithDependenciesAndLibrariesScope(false); + return containsKotlinCompilerJar(FilenameIndex.getVirtualFilesByName(module.getProject(), KOTLIN_COMPILER_JAR, scope)); + } + + private static boolean containsKotlinCompilerJar(@NotNull final Collection jars) { + for (final VirtualFile jar : jars) { + if (isKotlinCompilerJar(new File(jar.getPath()))) { + return true; + } + } + return false; + } + + private static boolean isKotlinCompilerJar(@NotNull final File jar) { try { return doIsKotlinCompilerJar(jar); }