do not suggest runtime library configuring if sdk is not configured

This commit is contained in:
Maxim Manuylov
2012-07-21 16:11:30 +04:00
committed by Evgeny Gerashchenko
parent 6af84a23b3
commit fdb85d8174
3 changed files with 25 additions and 18 deletions
@@ -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);
@@ -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<VirtualFile> 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();
@@ -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<VirtualFile> 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);
}