do not suggest runtime library configuring if sdk is not configured
This commit is contained in:
committed by
Evgeny Gerashchenko
parent
6af84a23b3
commit
fdb85d8174
+4
@@ -54,6 +54,7 @@ import com.intellij.ui.EditorNotifications;
|
|||||||
import com.intellij.util.containers.ContainerUtil;
|
import com.intellij.util.containers.ContainerUtil;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.jet.plugin.JetPluginUtil;
|
import org.jetbrains.jet.plugin.JetPluginUtil;
|
||||||
|
import org.jetbrains.jet.plugin.sdk.KotlinSdkUtil;
|
||||||
import org.jetbrains.jet.utils.PathUtil;
|
import org.jetbrains.jet.utils.PathUtil;
|
||||||
|
|
||||||
import javax.swing.*;
|
import javax.swing.*;
|
||||||
@@ -86,6 +87,8 @@ public class ConfigureKotlinLibraryNotificationProvider implements EditorNotific
|
|||||||
|
|
||||||
if (isJsModule(module)) return null;
|
if (isJsModule(module)) return null;
|
||||||
|
|
||||||
|
if (!KotlinSdkUtil.isSDKConfiguredFor(module)) return null;
|
||||||
|
|
||||||
GlobalSearchScope scope = module.getModuleWithDependenciesAndLibrariesScope(false);
|
GlobalSearchScope scope = module.getModuleWithDependenciesAndLibrariesScope(false);
|
||||||
if (JavaPsiFacade.getInstance(myProject).findClass("jet.JetObject", scope) == null) {
|
if (JavaPsiFacade.getInstance(myProject).findClass("jet.JetObject", scope) == null) {
|
||||||
return createNotificationPanel(module);
|
return createNotificationPanel(module);
|
||||||
@@ -143,6 +146,7 @@ public class ConfigureKotlinLibraryNotificationProvider implements EditorNotific
|
|||||||
|
|
||||||
final Library finalKotlinRuntime = kotlinRuntime;
|
final Library finalKotlinRuntime = kotlinRuntime;
|
||||||
ApplicationManager.getApplication().runWriteAction(new Runnable() {
|
ApplicationManager.getApplication().runWriteAction(new Runnable() {
|
||||||
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
Library.ModifiableModel model = finalKotlinRuntime.getModifiableModel();
|
Library.ModifiableModel model = finalKotlinRuntime.getModifiableModel();
|
||||||
model.addRoot(VfsUtil.getUrlForLibraryRoot(targetJar), OrderRootType.CLASSES);
|
model.addRoot(VfsUtil.getUrlForLibraryRoot(targetJar), OrderRootType.CLASSES);
|
||||||
|
|||||||
+1
-16
@@ -26,17 +26,12 @@ import com.intellij.openapi.roots.ModuleRootEvent;
|
|||||||
import com.intellij.openapi.roots.ModuleRootListener;
|
import com.intellij.openapi.roots.ModuleRootListener;
|
||||||
import com.intellij.openapi.util.Key;
|
import com.intellij.openapi.util.Key;
|
||||||
import com.intellij.openapi.vfs.VirtualFile;
|
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.EditorNotificationPanel;
|
||||||
import com.intellij.ui.EditorNotifications;
|
import com.intellij.ui.EditorNotifications;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
import org.jetbrains.jet.plugin.JetPluginUtil;
|
import org.jetbrains.jet.plugin.JetPluginUtil;
|
||||||
|
|
||||||
import java.io.File;
|
|
||||||
import java.util.Collection;
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @author Maxim.Manuylov
|
* @author Maxim.Manuylov
|
||||||
* Date: 19.05.12
|
* Date: 19.05.12
|
||||||
@@ -72,8 +67,7 @@ public class KotlinSdkNotConfiguredNotificationProvider implements EditorNotific
|
|||||||
final Module module = JetPluginUtil.getModuleForKotlinFile(file, myProject);
|
final Module module = JetPluginUtil.getModuleForKotlinFile(file, myProject);
|
||||||
if (module == null) return null;
|
if (module == null) return null;
|
||||||
|
|
||||||
final GlobalSearchScope scope = module.getModuleWithDependenciesAndLibrariesScope(false);
|
if (!KotlinSdkUtil.isSDKConfiguredFor(module)) {
|
||||||
if (!containsKotlinCompilerJar(FilenameIndex.getVirtualFilesByName(myProject, KotlinSdkUtil.KOTLIN_COMPILER_JAR, scope))) {
|
|
||||||
return createNotificationPanel(module);
|
return createNotificationPanel(module);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -83,15 +77,6 @@ public class KotlinSdkNotConfiguredNotificationProvider implements EditorNotific
|
|||||||
return null;
|
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
|
@NotNull
|
||||||
private static EditorNotificationPanel createNotificationPanel(@NotNull final Module module) {
|
private static EditorNotificationPanel createNotificationPanel(@NotNull final Module module) {
|
||||||
final EditorNotificationPanel panel = new EditorNotificationPanel();
|
final EditorNotificationPanel panel = new EditorNotificationPanel();
|
||||||
|
|||||||
@@ -16,14 +16,18 @@
|
|||||||
|
|
||||||
package org.jetbrains.jet.plugin.sdk;
|
package org.jetbrains.jet.plugin.sdk;
|
||||||
|
|
||||||
|
import com.intellij.openapi.module.Module;
|
||||||
import com.intellij.openapi.roots.libraries.PersistentLibraryKind;
|
import com.intellij.openapi.roots.libraries.PersistentLibraryKind;
|
||||||
import com.intellij.openapi.util.io.FileUtil;
|
import com.intellij.openapi.util.io.FileUtil;
|
||||||
import com.intellij.openapi.vfs.VirtualFile;
|
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.NotNull;
|
||||||
import org.jetbrains.annotations.Nullable;
|
import org.jetbrains.annotations.Nullable;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.util.Collection;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.jar.Attributes;
|
import java.util.jar.Attributes;
|
||||||
import java.util.jar.JarFile;
|
import java.util.jar.JarFile;
|
||||||
@@ -42,7 +46,7 @@ public class KotlinSdkUtil {
|
|||||||
return new KotlinSdkProperties("");
|
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 = {
|
@NotNull private static final String[] KOTLIN_COMPILER_JAR_ENTRY_NAMES = {
|
||||||
"org/jetbrains/jet/cli/KotlinCompiler.class",
|
"org/jetbrains/jet/cli/KotlinCompiler.class",
|
||||||
"org/jetbrains/jet/cli/jvm/K2JVMCompiler.class"
|
"org/jetbrains/jet/cli/jvm/K2JVMCompiler.class"
|
||||||
@@ -106,7 +110,21 @@ public class KotlinSdkUtil {
|
|||||||
return null;
|
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 {
|
try {
|
||||||
return doIsKotlinCompilerJar(jar);
|
return doIsKotlinCompilerJar(jar);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user