diff --git a/idea/src/org/jetbrains/jet/plugin/quickfix/JsModuleSetUp.java b/idea/src/org/jetbrains/jet/plugin/quickfix/JsModuleSetUp.java index 92fb1d9fd18..e033c33cd95 100644 --- a/idea/src/org/jetbrains/jet/plugin/quickfix/JsModuleSetUp.java +++ b/idea/src/org/jetbrains/jet/plugin/quickfix/JsModuleSetUp.java @@ -20,8 +20,16 @@ import com.intellij.codeInsight.daemon.DaemonCodeAnalyzer; import com.intellij.notification.Notification; import com.intellij.notification.NotificationType; import com.intellij.notification.Notifications; +import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.module.Module; +import com.intellij.openapi.roots.ModifiableRootModel; import com.intellij.openapi.roots.ModuleRootManager; +import com.intellij.openapi.roots.libraries.Library; +import com.intellij.openapi.roots.libraries.LibraryTable; +import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContainer; +import com.intellij.openapi.roots.ui.configuration.projectRoot.LibrariesContainerFactory; +import com.intellij.openapi.vfs.JarFileSystem; +import com.intellij.openapi.vfs.LocalFileSystem; import com.intellij.openapi.vfs.VirtualFile; import com.intellij.psi.PsiManager; import com.intellij.psi.impl.PsiModificationTrackerImpl; @@ -60,12 +68,35 @@ public final class JsModuleSetUp { if (!copyJsLibFiles(rootDir)) return; setUpK2JSModuleComponent(module); + setUpLibraryAsSourceLibrary(module, rootDir); restartHighlightingInTheWholeProject(module); refreshRootDir(module, continuation); } + private static void setUpLibraryAsSourceLibrary(final Module module, final @NotNull File rootDir) { + final File libJarFile = new File(rootDir, "lib/" + PathUtil.JS_LIB_JAR_NAME); + final VirtualFile libFile = LocalFileSystem.getInstance().refreshAndFindFileByIoFile(libJarFile); + + if (libFile != null) { + ApplicationManager.getApplication().runWriteAction(new Runnable() { + @Override + public void run() { + ModifiableRootModel model = ModuleRootManager.getInstance(module).getModifiableModel(); + LibraryTable table = model.getModuleLibraryTable(); + Library jsLib = table.getLibraryByName(PathUtil.JS_LIB_JAR_NAME); + if (jsLib == null) { + VirtualFile libRoot = JarFileSystem.getInstance().getJarRootForLocalFile(libFile); + LibrariesContainerFactory.createContainer(model).createLibrary(PathUtil.JS_LIB_JAR_NAME, + LibrariesContainer.LibraryLevel.MODULE, new VirtualFile[0], new VirtualFile[] { libRoot }); + model.commit(); + } + } + }); + } + } + private static void setUpK2JSModuleComponent(@NotNull Module module) { K2JSModuleComponent jsModuleComponent = K2JSModuleComponent.getInstance(module); jsModuleComponent.setJavaScriptModule(true);