From 85a38e17dee2ae3c092ca2d1c47a98b89f70f216 Mon Sep 17 00:00:00 2001 From: Michael Nedzelsky Date: Thu, 23 Oct 2014 15:33:48 +0400 Subject: [PATCH] reuse for KotlinJS library common Library dialogs remove unnecessary code for kotlin js library support JS backend: simplify check isConfigured for kotlin js module --- .../org/jetbrains/jet/utils/KotlinPaths.java | 3 - .../jet/utils/KotlinPathsFromHomeDir.java | 6 - .../src/org/jetbrains/jet/utils/PathUtil.java | 2 +- .../KotlinJsModuleConfigurator.java | 67 ++-------- .../KotlinWithLibraryConfigurator.java | 8 +- ...stomLibraryDescriptorWithDefferConfig.java | 98 +++++++++++++++ .../framework/JSLibraryStdDescription.java | 101 ++++------------ .../JavaRuntimeLibraryDescription.java | 99 +++------------ .../ui/CreateJavaScriptLibraryDialog.java | 33 ----- .../ui/CreateJavaScriptLibraryDialogBase.form | 62 ---------- .../ui/CreateJavaScriptLibraryDialogBase.java | 114 ------------------ ...ateJavaScriptLibraryDialogWithModules.java | 50 -------- .../configuration/ConfigureKotlinTest.java | 16 +-- 13 files changed, 161 insertions(+), 498 deletions(-) delete mode 100644 idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaScriptLibraryDialog.java delete mode 100644 idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaScriptLibraryDialogBase.form delete mode 100644 idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaScriptLibraryDialogBase.java delete mode 100644 idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaScriptLibraryDialogWithModules.java diff --git a/compiler/util/src/org/jetbrains/jet/utils/KotlinPaths.java b/compiler/util/src/org/jetbrains/jet/utils/KotlinPaths.java index 4e2fbc47346..ec0f1d14503 100644 --- a/compiler/util/src/org/jetbrains/jet/utils/KotlinPaths.java +++ b/compiler/util/src/org/jetbrains/jet/utils/KotlinPaths.java @@ -39,9 +39,6 @@ public interface KotlinPaths { @NotNull File getAndroidSdkAnnotationsPath(); - @NotNull - File getJsLibJsPath(); - @NotNull File getJsLibJarPath(); } diff --git a/compiler/util/src/org/jetbrains/jet/utils/KotlinPathsFromHomeDir.java b/compiler/util/src/org/jetbrains/jet/utils/KotlinPathsFromHomeDir.java index 7dd2b030fd2..198dec1aef8 100644 --- a/compiler/util/src/org/jetbrains/jet/utils/KotlinPathsFromHomeDir.java +++ b/compiler/util/src/org/jetbrains/jet/utils/KotlinPathsFromHomeDir.java @@ -64,12 +64,6 @@ public class KotlinPathsFromHomeDir implements KotlinPaths { return getLibraryFile(PathUtil.ANDROID_SDK_ANNOTATIONS_JAR); } - @Override - @NotNull - public File getJsLibJsPath() { - return getLibraryFile(PathUtil.JS_LIB_JS_NAME); - } - @Override @NotNull public File getJsLibJarPath() { diff --git a/compiler/util/src/org/jetbrains/jet/utils/PathUtil.java b/compiler/util/src/org/jetbrains/jet/utils/PathUtil.java index f485d7dc840..f7244a789a7 100644 --- a/compiler/util/src/org/jetbrains/jet/utils/PathUtil.java +++ b/compiler/util/src/org/jetbrains/jet/utils/PathUtil.java @@ -32,7 +32,7 @@ public class PathUtil { public static final String JPS_KOTLIN_HOME_PROPERTY = "jps.kotlin.home"; public static final String JS_LIB_JAR_NAME = "kotlin-jslib.jar"; - public static final String JS_LIB_JS_NAME = "kotlin.js"; + public static final String JS_LIB_SRC_JAR_NAME = "kotlin-jslib-sources.jar"; public static final String JDK_ANNOTATIONS_JAR = "kotlin-jdk-annotations.jar"; public static final String ANDROID_SDK_ANNOTATIONS_JAR = "kotlin-android-sdk-annotations.jar"; public static final String KOTLIN_JAVA_RUNTIME_JAR = "kotlin-runtime.jar"; diff --git a/idea/src/org/jetbrains/jet/plugin/configuration/KotlinJsModuleConfigurator.java b/idea/src/org/jetbrains/jet/plugin/configuration/KotlinJsModuleConfigurator.java index a288b6a5366..fc901954d37 100644 --- a/idea/src/org/jetbrains/jet/plugin/configuration/KotlinJsModuleConfigurator.java +++ b/idea/src/org/jetbrains/jet/plugin/configuration/KotlinJsModuleConfigurator.java @@ -20,12 +20,9 @@ import com.intellij.openapi.application.ApplicationManager; import com.intellij.openapi.module.Module; import com.intellij.openapi.module.ModuleManager; import com.intellij.openapi.project.Project; -import com.intellij.openapi.roots.OrderRootType; import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; import org.jetbrains.jet.plugin.framework.JSLibraryStdDescription; -import org.jetbrains.jet.plugin.framework.ui.CreateJavaScriptLibraryDialogWithModules; -import org.jetbrains.jet.plugin.framework.ui.FileUIUtils; +import org.jetbrains.jet.plugin.framework.ui.CreateLibraryDialogWithModules; import org.jetbrains.jet.plugin.project.ProjectStructureUtil; import org.jetbrains.jet.utils.PathUtil; import org.jetbrains.k2js.JavaScript; @@ -51,11 +48,7 @@ public class KotlinJsModuleConfigurator extends KotlinWithLibraryConfigurator { @Override public boolean isConfigured(@NotNull Module module) { - if (ProjectStructureUtil.isJsKotlinModule(module)) { - String pathFromLibrary = getPathFromLibrary(module.getProject(), OrderRootType.CLASSES); - return pathFromLibrary != null && getFileInDir(getJarName(), pathFromLibrary).exists(); - } - return false; + return ProjectStructureUtil.isJsKotlinModule(module); } @NotNull @@ -72,8 +65,8 @@ public class KotlinJsModuleConfigurator extends KotlinWithLibraryConfigurator { @NotNull @Override - protected String getSourcesJarName() { - return PathUtil.JS_LIB_JAR_NAME; + public String getSourcesJarName() { + return PathUtil.JS_LIB_SRC_JAR_NAME; } @NotNull @@ -89,17 +82,14 @@ public class KotlinJsModuleConfigurator extends KotlinWithLibraryConfigurator { } @Override - protected File getExistedSourcesJarFile() { + public File getExistedSourcesJarFile() { return getExistedJarFile(); } @Override public void configure(@NotNull Project project) { String defaultPathToJar = getDefaultPathToJarFile(project); - String defaultPathToJsFile = getDefaultPathToJsFile(project); - boolean showPathToJarPanel = needToChooseJarPath(project); - boolean showPathToJsFilePanel = needToChooseJsFilePath(project); List nonConfiguredModules = !ApplicationManager.getApplication().isUnitTestMode() ? @@ -108,13 +98,12 @@ public class KotlinJsModuleConfigurator extends KotlinWithLibraryConfigurator { List modulesToConfigure = nonConfiguredModules; String copyLibraryIntoPath = null; - String jsFilesIntoPath = null; - if (nonConfiguredModules.size() > 1 || showPathToJarPanel || showPathToJsFilePanel) { - CreateJavaScriptLibraryDialogWithModules dialog = - new CreateJavaScriptLibraryDialogWithModules(project, nonConfiguredModules, - defaultPathToJar, defaultPathToJsFile, - showPathToJarPanel, showPathToJsFilePanel); + if (nonConfiguredModules.size() > 1 || showPathToJarPanel) { + CreateLibraryDialogWithModules dialog = new CreateLibraryDialogWithModules( + project, nonConfiguredModules, defaultPathToJar, showPathToJarPanel, + JSLibraryStdDescription.DIALOG_TITLE, + JSLibraryStdDescription.DIALOG_CAPTION); if (!ApplicationManager.getApplication().isUnitTestMode()) { dialog.show(); @@ -122,46 +111,12 @@ public class KotlinJsModuleConfigurator extends KotlinWithLibraryConfigurator { } modulesToConfigure = dialog.getModulesToConfigure(); - copyLibraryIntoPath = dialog.getCopyLibraryIntoPath(); - jsFilesIntoPath = dialog.getCopyJsIntoPath(); + copyLibraryIntoPath = dialog.getCopyIntoPath(); } for (Module module : modulesToConfigure) { configureModuleWithLibrary(module, defaultPathToJar, copyLibraryIntoPath); } - - configureModuleWithJsFile(defaultPathToJsFile, jsFilesIntoPath); - } - - public static boolean isJsFilePresent(@NotNull String dir) { - return new File(dir + "/" + PathUtil.JS_LIB_JAR_NAME).exists(); - } - - @NotNull - public File getJsFile() { - return assertFileExists(PathUtil.getKotlinPathsForIdeaPlugin().getJsLibJsPath()); - } - - private static boolean needToChooseJsFilePath(@NotNull Project project) { - String defaultPath = FileUIUtils.createRelativePath(project, project.getBaseDir(), "script"); - return !isJsFilePresent(defaultPath); - } - - @NotNull - protected String getDefaultPathToJsFile(@NotNull Project project) { - return FileUIUtils.createRelativePath(project, project.getBaseDir(), "script"); - } - - protected void configureModuleWithJsFile( - @NotNull String defaultPath, - @Nullable String pathToJsFromDialog - ) { - boolean isJsFilePresent = isJsFilePresent(defaultPath); - if (isJsFilePresent) return; - - if (pathToJsFromDialog != null) { - copyFileToDir(getJsFile(), pathToJsFromDialog); - } } KotlinJsModuleConfigurator() { diff --git a/idea/src/org/jetbrains/jet/plugin/configuration/KotlinWithLibraryConfigurator.java b/idea/src/org/jetbrains/jet/plugin/configuration/KotlinWithLibraryConfigurator.java index 5ddb77c9aeb..6b83a4c1d83 100644 --- a/idea/src/org/jetbrains/jet/plugin/configuration/KotlinWithLibraryConfigurator.java +++ b/idea/src/org/jetbrains/jet/plugin/configuration/KotlinWithLibraryConfigurator.java @@ -48,18 +48,18 @@ public abstract class KotlinWithLibraryConfigurator implements KotlinProjectConf protected abstract String getLibraryName(); @NotNull - protected abstract String getJarName(); + public abstract String getJarName(); @NotNull - protected abstract String getSourcesJarName(); + public abstract String getSourcesJarName(); @NotNull protected abstract String getMessageForOverrideDialog(); @NotNull - protected abstract File getExistedJarFile(); + public abstract File getExistedJarFile(); - protected abstract File getExistedSourcesJarFile(); + public abstract File getExistedSourcesJarFile(); @Override public boolean isApplicable(@NotNull Module module) { diff --git a/idea/src/org/jetbrains/jet/plugin/framework/CustomLibraryDescriptorWithDefferConfig.java b/idea/src/org/jetbrains/jet/plugin/framework/CustomLibraryDescriptorWithDefferConfig.java index c822ed7f3e1..6efef4acd9f 100644 --- a/idea/src/org/jetbrains/jet/plugin/framework/CustomLibraryDescriptorWithDefferConfig.java +++ b/idea/src/org/jetbrains/jet/plugin/framework/CustomLibraryDescriptorWithDefferConfig.java @@ -17,32 +17,67 @@ package org.jetbrains.jet.plugin.framework; import com.google.common.collect.Lists; +import com.intellij.framework.library.LibraryVersionProperties; import com.intellij.openapi.module.Module; +import com.intellij.openapi.project.Project; import com.intellij.openapi.roots.ModifiableRootModel; import com.intellij.openapi.roots.OrderRootType; import com.intellij.openapi.roots.libraries.Library; import com.intellij.openapi.roots.libraries.LibraryKind; +import com.intellij.openapi.roots.libraries.NewLibraryConfiguration; import com.intellij.openapi.roots.ui.configuration.libraries.CustomLibraryDescription; import com.intellij.openapi.roots.ui.configuration.libraries.LibraryPresentationManager; +import com.intellij.openapi.roots.ui.configuration.libraryEditor.LibraryEditor; import com.intellij.openapi.util.io.FileUtil; +import com.intellij.openapi.vfs.VfsUtil; import com.intellij.openapi.vfs.VirtualFile; import kotlin.Function1; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; +import org.jetbrains.jet.plugin.configuration.ConfigureKotlinInProjectUtils; +import org.jetbrains.jet.plugin.configuration.KotlinJavaModuleConfigurator; import org.jetbrains.jet.plugin.configuration.KotlinWithLibraryConfigurator; +import org.jetbrains.jet.plugin.framework.ui.CreateLibraryDialog; +import org.jetbrains.jet.plugin.framework.ui.FileUIUtils; import org.jetbrains.jet.plugin.util.projectStructure.ProjectStructurePackage; +import javax.swing.*; import java.io.File; import java.util.Arrays; import java.util.List; +import static org.jetbrains.jet.plugin.configuration.KotlinWithLibraryConfigurator.getFileInDir; + public abstract class CustomLibraryDescriptorWithDefferConfig extends CustomLibraryDescription { + + private static final String DEFAULT_LIB_DIR_NAME = "lib"; + @NotNull public abstract LibraryKind getLibraryKind(); @Nullable public abstract DeferredCopyFileRequests getCopyFileRequests(); + protected final boolean useRelativePaths; + + protected DeferredCopyFileRequests deferredCopyFileRequests; + + @NotNull + protected abstract String getLibraryName(); + + @NotNull + protected abstract String getDialogTitle(); + + @NotNull + protected abstract String getDialogCaption(); + + /** + * @param project null when project doesn't exist yet (called from project wizard) + */ + public CustomLibraryDescriptorWithDefferConfig(@Nullable Project project) { + useRelativePaths = project == null; + } + public void finishLibConfiguration(@NotNull Module module, @NotNull ModifiableRootModel rootModel) { DeferredCopyFileRequests deferredCopyFileRequests = getCopyFileRequests(); if (deferredCopyFileRequests == null) return; @@ -112,4 +147,67 @@ public abstract class CustomLibraryDescriptorWithDefferConfig extends CustomLibr } } } + + @Nullable + @Override + public NewLibraryConfiguration createNewLibrary(@NotNull JComponent parentComponent, @Nullable VirtualFile contextDirectory) { + KotlinWithLibraryConfigurator configurator = + (KotlinWithLibraryConfigurator) ConfigureKotlinInProjectUtils.getConfiguratorByName(KotlinJavaModuleConfigurator.NAME); + assert configurator != null : "Configurator with name " + KotlinJavaModuleConfigurator.NAME + " should exists"; + + deferredCopyFileRequests = new DeferredCopyFileRequests(configurator); + + String defaultPathToJarFile = useRelativePaths ? DEFAULT_LIB_DIR_NAME + : FileUIUtils.createRelativePath(null, contextDirectory, DEFAULT_LIB_DIR_NAME); + + File bundledLibJarFile = configurator.getExistedJarFile(); + File bundledLibSourcesJarFile = configurator.getExistedSourcesJarFile(); + + File libraryFile; + File librarySrcFile; + + File stdJarInDefaultPath = getFileInDir(configurator.getJarName(), defaultPathToJarFile); + if (!useRelativePaths && stdJarInDefaultPath.exists()) { + libraryFile = stdJarInDefaultPath; + + File sourcesJar = getFileInDir(configurator.getSourcesJarName(), defaultPathToJarFile); + if (sourcesJar.exists()) { + librarySrcFile = sourcesJar; + } + else { + deferredCopyFileRequests.addCopyWithReplaceRequest(bundledLibSourcesJarFile, libraryFile.getParent()); + librarySrcFile = bundledLibSourcesJarFile; + } + } + else { + CreateLibraryDialog dialog =new CreateLibraryDialog(defaultPathToJarFile, getDialogTitle(), getDialogCaption()); + dialog.show(); + + if (!dialog.isOK()) return null; + + String copyIntoPath = dialog.getCopyIntoPath(); + if (copyIntoPath != null) { + deferredCopyFileRequests.addCopyWithReplaceRequest(bundledLibJarFile, copyIntoPath); + deferredCopyFileRequests.addCopyWithReplaceRequest(bundledLibSourcesJarFile, copyIntoPath); + } + + libraryFile = bundledLibJarFile; + librarySrcFile = bundledLibSourcesJarFile; + } + + return createConfiguration(libraryFile, librarySrcFile); + } + + protected NewLibraryConfiguration createConfiguration(@NotNull File libraryFile, @NotNull File librarySrcFile) { + final String libraryFileUrl = VfsUtil.getUrlForLibraryRoot(libraryFile); + final String libraryFileSrcUrl = VfsUtil.getUrlForLibraryRoot(librarySrcFile); + + return new NewLibraryConfiguration(getLibraryName(), null, new LibraryVersionProperties()) { + @Override + public void addRoots(@NotNull LibraryEditor editor) { + editor.addRoot(libraryFileUrl, OrderRootType.CLASSES); + editor.addRoot(libraryFileSrcUrl, OrderRootType.SOURCES); + } + }; + } } diff --git a/idea/src/org/jetbrains/jet/plugin/framework/JSLibraryStdDescription.java b/idea/src/org/jetbrains/jet/plugin/framework/JSLibraryStdDescription.java index 3cdf4b80bfc..860237437d1 100644 --- a/idea/src/org/jetbrains/jet/plugin/framework/JSLibraryStdDescription.java +++ b/idea/src/org/jetbrains/jet/plugin/framework/JSLibraryStdDescription.java @@ -17,45 +17,51 @@ package org.jetbrains.jet.plugin.framework; import com.google.common.collect.Sets; -import com.intellij.framework.library.LibraryVersionProperties; import com.intellij.openapi.project.Project; -import com.intellij.openapi.roots.OrderRootType; import com.intellij.openapi.roots.libraries.LibraryKind; import com.intellij.openapi.roots.libraries.NewLibraryConfiguration; -import com.intellij.openapi.roots.ui.configuration.libraryEditor.LibraryEditor; -import com.intellij.openapi.vfs.VfsUtil; -import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; import org.jetbrains.annotations.TestOnly; import org.jetbrains.jet.plugin.configuration.KotlinJsModuleConfigurator; -import org.jetbrains.jet.plugin.framework.ui.CreateJavaScriptLibraryDialog; -import javax.swing.*; -import java.io.File; import java.util.Set; import static org.jetbrains.jet.plugin.configuration.ConfigureKotlinInProjectUtils.getConfiguratorByName; import static org.jetbrains.jet.plugin.configuration.KotlinJsModuleConfigurator.NAME; -import static org.jetbrains.jet.plugin.configuration.KotlinJsModuleConfigurator.isJsFilePresent; -import static org.jetbrains.jet.plugin.configuration.KotlinWithLibraryConfigurator.getFileInDir; -import static org.jetbrains.jet.plugin.framework.ui.FileUIUtils.createRelativePath; public class JSLibraryStdDescription extends CustomLibraryDescriptorWithDefferConfig { public static final LibraryKind KOTLIN_JAVASCRIPT_KIND = LibraryKind.create("kotlin-js-stdlib"); public static final String LIBRARY_NAME = "KotlinJavaScript"; public static final String JAVA_SCRIPT_LIBRARY_CREATION = "JavaScript Library Creation"; + public static final String DIALOG_TITLE = "Create Kotlin JavaScript Library"; + public static final String DIALOG_CAPTION = "Kotlin JavaScript Library"; public static final Set SUITABLE_LIBRARY_KINDS = Sets.newHashSet(KOTLIN_JAVASCRIPT_KIND); - private static final String DEFAULT_LIB_DIR_NAME = "lib"; - private static final String DEFAULT_SCRIPT_DIR_NAME = "script"; - - private final boolean useRelativePaths; - private DeferredCopyFileRequests deferredCopyFileRequests; - + /** + * @param project null when project doesn't exist yet (called from project wizard) + */ public JSLibraryStdDescription(@Nullable Project project) { - useRelativePaths = project == null; + super(project); + } + + @NotNull + @Override + protected String getLibraryName() { + return LIBRARY_NAME; + } + + @NotNull + @Override + protected String getDialogTitle() { + return DIALOG_TITLE; + } + + @NotNull + @Override + protected String getDialogCaption() { + return DIALOG_CAPTION; } @NotNull @@ -76,68 +82,11 @@ public class JSLibraryStdDescription extends CustomLibraryDescriptorWithDefferCo return deferredCopyFileRequests; } - @Nullable - @Override - public NewLibraryConfiguration createNewLibrary(@NotNull JComponent parentComponent, @Nullable VirtualFile contextDirectory) { - KotlinJsModuleConfigurator jsConfigurator = (KotlinJsModuleConfigurator) getConfiguratorByName(NAME); - assert jsConfigurator != null : "Cannot find configurator with name " + NAME; - - deferredCopyFileRequests = new DeferredCopyFileRequests(jsConfigurator); - - String defaultPathToJsFileDir = - useRelativePaths ? DEFAULT_SCRIPT_DIR_NAME : createRelativePath(null, contextDirectory, DEFAULT_SCRIPT_DIR_NAME); - String defaultPathToJarFileDir = - useRelativePaths ? DEFAULT_LIB_DIR_NAME : createRelativePath(null, contextDirectory, DEFAULT_LIB_DIR_NAME); - - boolean jsFilePresent = !useRelativePaths && isJsFilePresent(defaultPathToJsFileDir); - boolean jarFilePresent = !useRelativePaths && getFileInDir(jsConfigurator.getJarName(), defaultPathToJarFileDir).exists(); - - if (jarFilePresent && jsFilePresent) { - return createConfiguration(getFileInDir(jsConfigurator.getJarName(), defaultPathToJarFileDir)); - } - - CreateJavaScriptLibraryDialog dialog = - new CreateJavaScriptLibraryDialog(defaultPathToJarFileDir, defaultPathToJsFileDir, !jarFilePresent, !jsFilePresent); - dialog.show(); - - if (!dialog.isOK()) return null; - - String copyJsFileIntoPath = dialog.getCopyJsIntoPath(); - if (!jsFilePresent && copyJsFileIntoPath != null) { - deferredCopyFileRequests.addCopyRequest(jsConfigurator.getJsFile(), copyJsFileIntoPath); - } - - if (jarFilePresent) { - return createConfiguration(getFileInDir(jsConfigurator.getJarName(), defaultPathToJarFileDir)); - } - else { - String copyIntoPath = dialog.getCopyLibraryIntoPath(); - File existedJarFile = jsConfigurator.getExistedJarFile(); - - if (copyIntoPath != null) { - deferredCopyFileRequests.addCopyWithReplaceRequest(existedJarFile, copyIntoPath); - } - - return createConfiguration(existedJarFile); - } - } - @TestOnly public NewLibraryConfiguration createNewLibraryForTests() { KotlinJsModuleConfigurator configurator = (KotlinJsModuleConfigurator) getConfiguratorByName(NAME); assert configurator != null : "Cannot find configurator with name " + NAME; - return createConfiguration(configurator.getExistedJarFile()); - } - - private NewLibraryConfiguration createConfiguration(@NotNull File libraryFile) { - final String libraryRoot = VfsUtil.getUrlForLibraryRoot(libraryFile); - return new NewLibraryConfiguration(LIBRARY_NAME, getDownloadableLibraryType(), new LibraryVersionProperties()) { - @Override - public void addRoots(@NotNull LibraryEditor editor) { - editor.addRoot(libraryRoot, OrderRootType.CLASSES); - editor.addRoot(libraryRoot, OrderRootType.SOURCES); - } - }; + return createConfiguration(configurator.getExistedJarFile(), configurator.getExistedJarFile()); } } diff --git a/idea/src/org/jetbrains/jet/plugin/framework/JavaRuntimeLibraryDescription.java b/idea/src/org/jetbrains/jet/plugin/framework/JavaRuntimeLibraryDescription.java index 189bd0a6814..d0fd753d485 100644 --- a/idea/src/org/jetbrains/jet/plugin/framework/JavaRuntimeLibraryDescription.java +++ b/idea/src/org/jetbrains/jet/plugin/framework/JavaRuntimeLibraryDescription.java @@ -17,27 +17,13 @@ package org.jetbrains.jet.plugin.framework; import com.google.common.collect.Sets; -import com.intellij.framework.library.LibraryVersionProperties; import com.intellij.openapi.project.Project; -import com.intellij.openapi.roots.OrderRootType; import com.intellij.openapi.roots.libraries.LibraryKind; -import com.intellij.openapi.roots.libraries.NewLibraryConfiguration; -import com.intellij.openapi.roots.ui.configuration.libraryEditor.LibraryEditor; -import com.intellij.openapi.vfs.VfsUtil; -import com.intellij.openapi.vfs.VirtualFile; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; -import org.jetbrains.jet.plugin.configuration.ConfigureKotlinInProjectUtils; -import org.jetbrains.jet.plugin.configuration.KotlinJavaModuleConfigurator; -import org.jetbrains.jet.plugin.framework.ui.CreateLibraryDialog; -import org.jetbrains.jet.plugin.framework.ui.FileUIUtils; -import javax.swing.*; -import java.io.File; import java.util.Set; -import static org.jetbrains.jet.plugin.configuration.KotlinWithLibraryConfigurator.getFileInDir; - public class JavaRuntimeLibraryDescription extends CustomLibraryDescriptorWithDefferConfig { public static final LibraryKind KOTLIN_JAVA_RUNTIME_KIND = LibraryKind.create("kotlin-java-runtime"); public static final String LIBRARY_NAME = "KotlinJavaRuntime"; @@ -47,17 +33,29 @@ public class JavaRuntimeLibraryDescription extends CustomLibraryDescriptorWithDe public static final String DIALOG_CAPTION = "Kotlin Java Runtime Library"; public static final Set SUITABLE_LIBRARY_KINDS = Sets.newHashSet(KOTLIN_JAVA_RUNTIME_KIND); - private static final String DEFAULT_LIB_DIR_NAME = "lib"; - - private final boolean useRelativePaths; - - private DeferredCopyFileRequests deferredCopyFileRequests = null; - /** * @param project null when project doesn't exist yet (called from project wizard) */ public JavaRuntimeLibraryDescription(@Nullable Project project) { - useRelativePaths = project == null; + super(project); + } + + @NotNull + @Override + protected String getLibraryName() { + return LIBRARY_NAME; + } + + @NotNull + @Override + protected String getDialogTitle() { + return DIALOG_TITLE; + } + + @NotNull + @Override + protected String getDialogCaption() { + return DIALOG_CAPTION; } @NotNull @@ -77,63 +75,4 @@ public class JavaRuntimeLibraryDescription extends CustomLibraryDescriptorWithDe public DeferredCopyFileRequests getCopyFileRequests() { return deferredCopyFileRequests; } - - @Nullable - @Override - public NewLibraryConfiguration createNewLibrary(@NotNull JComponent parentComponent, @Nullable VirtualFile contextDirectory) { - KotlinJavaModuleConfigurator jvmConfigurator = - (KotlinJavaModuleConfigurator) ConfigureKotlinInProjectUtils.getConfiguratorByName(KotlinJavaModuleConfigurator.NAME); - assert jvmConfigurator != null : "Configurator with name " + KotlinJavaModuleConfigurator.NAME + " should exists"; - - deferredCopyFileRequests = new DeferredCopyFileRequests(jvmConfigurator); - - String defaultPathToJarFile = useRelativePaths ? DEFAULT_LIB_DIR_NAME - : FileUIUtils.createRelativePath(null, contextDirectory, DEFAULT_LIB_DIR_NAME); - - File bundledLibJarFile = jvmConfigurator.getExistedJarFile(); - File bundledLibSourcesJarFile = jvmConfigurator.getExistedSourcesJarFile(); - - File libraryFile; - File librarySrcFile; - - File stdJarInDefaultPath = getFileInDir(jvmConfigurator.getJarName(), defaultPathToJarFile); - if (!useRelativePaths && stdJarInDefaultPath.exists()) { - libraryFile = stdJarInDefaultPath; - - File sourcesJar = getFileInDir(jvmConfigurator.getSourcesJarName(), defaultPathToJarFile); - if (sourcesJar.exists()) { - librarySrcFile = sourcesJar; - } - else { - deferredCopyFileRequests.addCopyWithReplaceRequest(bundledLibSourcesJarFile, libraryFile.getParent()); - librarySrcFile = bundledLibSourcesJarFile; - } - } - else { - CreateLibraryDialog dialog =new CreateLibraryDialog(defaultPathToJarFile, DIALOG_TITLE, DIALOG_CAPTION); - dialog.show(); - - if (!dialog.isOK()) return null; - - String copyIntoPath = dialog.getCopyIntoPath(); - if (copyIntoPath != null) { - deferredCopyFileRequests.addCopyWithReplaceRequest(bundledLibJarFile, copyIntoPath); - deferredCopyFileRequests.addCopyWithReplaceRequest(bundledLibSourcesJarFile, copyIntoPath); - } - - libraryFile = bundledLibJarFile; - librarySrcFile = bundledLibSourcesJarFile; - } - - final String libraryFileUrl = VfsUtil.getUrlForLibraryRoot(libraryFile); - final String libraryFileSrcUrl = VfsUtil.getUrlForLibraryRoot(librarySrcFile); - - return new NewLibraryConfiguration(LIBRARY_NAME, null, new LibraryVersionProperties()) { - @Override - public void addRoots(@NotNull LibraryEditor editor) { - editor.addRoot(libraryFileUrl, OrderRootType.CLASSES); - editor.addRoot(libraryFileSrcUrl, OrderRootType.SOURCES); - } - }; - } } \ No newline at end of file diff --git a/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaScriptLibraryDialog.java b/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaScriptLibraryDialog.java deleted file mode 100644 index 8547a684c5b..00000000000 --- a/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaScriptLibraryDialog.java +++ /dev/null @@ -1,33 +0,0 @@ -/* - * Copyright 2010-2013 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.jet.plugin.framework.ui; - -import org.jetbrains.annotations.NotNull; -import org.jetbrains.jet.plugin.framework.JSLibraryCreateOptions; - -public class CreateJavaScriptLibraryDialog extends CreateJavaScriptLibraryDialogBase implements JSLibraryCreateOptions { - - public CreateJavaScriptLibraryDialog( - @NotNull String defaultPathToJar, - @NotNull String defaultPathToJsFile, - boolean showPathToJarPanel, - boolean showPathToJsFilePanel - ) { - super(null, defaultPathToJar, defaultPathToJsFile, showPathToJarPanel, showPathToJsFilePanel); - updateComponents(); - } -} diff --git a/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaScriptLibraryDialogBase.form b/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaScriptLibraryDialogBase.form deleted file mode 100644 index d57ff0a5a47..00000000000 --- a/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaScriptLibraryDialogBase.form +++ /dev/null @@ -1,62 +0,0 @@ - -
- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
diff --git a/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaScriptLibraryDialogBase.java b/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaScriptLibraryDialogBase.java deleted file mode 100644 index 37b101bc157..00000000000 --- a/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaScriptLibraryDialogBase.java +++ /dev/null @@ -1,114 +0,0 @@ -/* - * Copyright 2010-2013 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.jet.plugin.framework.ui; - -import com.intellij.openapi.project.Project; -import com.intellij.openapi.ui.DialogWrapper; -import com.intellij.ui.SeparatorWithText; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; -import org.jetbrains.jet.plugin.JetPluginUtil; -import org.jetbrains.jet.plugin.framework.JSLibraryCreateOptions; - -import javax.swing.*; -import java.awt.*; - -public abstract class CreateJavaScriptLibraryDialogBase extends DialogWrapper implements JSLibraryCreateOptions { - protected final CopyIntoPanel copyJsFilesPanel; - protected final CopyIntoPanel copyLibraryFilePanel; - - protected JPanel contentPane; - - protected JLabel compilerTextLabel; - protected JPanel chooseModulesPlace; - - private SeparatorWithText modulesSeparator; - - protected JPanel copyJsFilesPlace; - protected JPanel copyLibraryPlace; - - public CreateJavaScriptLibraryDialogBase( - @Nullable Project project, - @NotNull String defaultPathToJar, - @NotNull String defaultPathToJsFile, - boolean showPathToJarPanel, - boolean showPathToJsFilePanel - ) { - super(project); - - setTitle("Create Kotlin JavaScript Library"); - - init(); - - compilerTextLabel.setText(compilerTextLabel.getText() + " - " + JetPluginUtil.getPluginVersion()); - - modulesSeparator.setCaption("Kotlin JavaScript Library"); - - ValidityListener validityListener = new ValidityListener() { - @Override - public void validityChanged(boolean isValid) { - updateComponents(); - } - }; - - copyJsFilesPanel = new CopyIntoPanel(project, defaultPathToJsFile, "Copy &runtime files to:"); - copyJsFilesPanel.addValidityListener(validityListener); - copyJsFilesPanel.setLabelWidth(110); - copyJsFilesPlace.add(copyJsFilesPanel.getContentPane(), BorderLayout.CENTER); - - copyLibraryFilePanel = new CopyIntoPanel(project, defaultPathToJar, "Copy &headers to:"); - copyLibraryFilePanel.addValidityListener(validityListener); - copyLibraryFilePanel.setLabelWidth(110); - copyLibraryPlace.add(copyLibraryFilePanel.getContentPane(), BorderLayout.CENTER); - - if (!showPathToJarPanel) { - copyLibraryPlace.setVisible(false); - } - - if (!showPathToJsFilePanel) { - copyJsFilesPlace.setVisible(false); - } - - if (!showPathToJarPanel && !showPathToJsFilePanel) { - modulesSeparator.setVisible(false); - } - } - - @Override - @Nullable - public String getCopyJsIntoPath() { - if (!copyJsFilesPlace.isVisible()) return null; - return copyJsFilesPanel.getPath(); - } - - @Override - @Nullable - public String getCopyLibraryIntoPath() { - if (!copyLibraryPlace.isVisible()) return null; - return copyLibraryFilePanel.getPath(); - } - - protected void updateComponents() { - setOKActionEnabled(!copyJsFilesPanel.hasErrors() && !copyLibraryFilePanel.hasErrors()); - } - - @Nullable - @Override - protected JComponent createCenterPanel() { - return contentPane; - } -} diff --git a/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaScriptLibraryDialogWithModules.java b/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaScriptLibraryDialogWithModules.java deleted file mode 100644 index 24b098b75bc..00000000000 --- a/idea/src/org/jetbrains/jet/plugin/framework/ui/CreateJavaScriptLibraryDialogWithModules.java +++ /dev/null @@ -1,50 +0,0 @@ -/* - * Copyright 2010-2013 JetBrains s.r.o. - * - * Licensed under the Apache License, Version 2.0 (the "License"); - * you may not use this file except in compliance with the License. - * You may obtain a copy of the License at - * - * http://www.apache.org/licenses/LICENSE-2.0 - * - * Unless required by applicable law or agreed to in writing, software - * distributed under the License is distributed on an "AS IS" BASIS, - * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. - * See the License for the specific language governing permissions and - * limitations under the License. - */ - -package org.jetbrains.jet.plugin.framework.ui; - -import com.intellij.openapi.module.Module; -import com.intellij.openapi.project.Project; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.jet.plugin.framework.JSLibraryCreateOptions; - -import java.awt.*; -import java.util.List; - -public class CreateJavaScriptLibraryDialogWithModules extends CreateJavaScriptLibraryDialogBase implements JSLibraryCreateOptions { - - private final ChooseModulePanel chooseModulePanel; - - public CreateJavaScriptLibraryDialogWithModules( - @NotNull Project project, - @NotNull List modules, - @NotNull String defaultPathToJar, - @NotNull String defaultPathToJsFile, - boolean showPathToJarPanel, - boolean showPathToJsFilePanel - ) { - super(project, defaultPathToJar, defaultPathToJsFile, showPathToJarPanel, showPathToJsFilePanel); - - chooseModulePanel = new ChooseModulePanel(project, modules); - chooseModulesPlace.add(chooseModulePanel.getContentPane(), BorderLayout.CENTER); - - updateComponents(); - } - - public List getModulesToConfigure() { - return chooseModulePanel.getModulesToConfigure(); - } -} diff --git a/idea/tests/org/jetbrains/jet/plugin/configuration/ConfigureKotlinTest.java b/idea/tests/org/jetbrains/jet/plugin/configuration/ConfigureKotlinTest.java index a2b5f52bee3..4c55f9b699c 100644 --- a/idea/tests/org/jetbrains/jet/plugin/configuration/ConfigureKotlinTest.java +++ b/idea/tests/org/jetbrains/jet/plugin/configuration/ConfigureKotlinTest.java @@ -51,12 +51,6 @@ public class ConfigureKotlinTest extends PlatformTestCase { protected String getDefaultPathToJarFile(@NotNull Project project) { return getPathRelativeToTemp("default_js_lib"); } - - @NotNull - @Override - protected String getDefaultPathToJsFile(@NotNull Project project) { - return getPathRelativeToTemp("default_script"); - } }; @Override @@ -180,7 +174,7 @@ public class ConfigureKotlinTest extends PlatformTestCase { } private void doTestConfigureModulesWithNonDefaultSetup(KotlinWithLibraryConfigurator configurator) { - assertNoFilesInDefaultPaths(true); + assertNoFilesInDefaultPaths(); Module[] modules = getModules(); for (Module module : modules) { @@ -189,7 +183,7 @@ public class ConfigureKotlinTest extends PlatformTestCase { configurator.configure(myProject); - assertNoFilesInDefaultPaths(false); + assertNoFilesInDefaultPaths(); for (Module module : modules) { assertProperlyConfigured(module, configurator); @@ -310,13 +304,9 @@ public class ConfigureKotlinTest extends PlatformTestCase { protected void setUpModule() { } - private void assertNoFilesInDefaultPaths(boolean checkJsFiles) { + private void assertNoFilesInDefaultPaths() { assertDoesntExist(new File(JAVA_CONFIGURATOR.getDefaultPathToJarFile(getProject()))); assertDoesntExist(new File(JS_CONFIGURATOR.getDefaultPathToJarFile(getProject()))); - - if (checkJsFiles) { - assertDoesntExist(new File(JS_CONFIGURATOR.getDefaultPathToJsFile(getProject()))); - } } private static void assertNotConfigured(Module module, KotlinWithLibraryConfigurator configurator) {