reuse for KotlinJS library common Library dialogs

remove unnecessary code for kotlin js library support

JS backend: simplify check isConfigured for kotlin js module
This commit is contained in:
Michael Nedzelsky
2014-10-23 15:33:48 +04:00
parent a21d979186
commit 85a38e17de
13 changed files with 161 additions and 498 deletions
@@ -39,9 +39,6 @@ public interface KotlinPaths {
@NotNull
File getAndroidSdkAnnotationsPath();
@NotNull
File getJsLibJsPath();
@NotNull
File getJsLibJarPath();
}
@@ -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() {
@@ -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";
@@ -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<Module> nonConfiguredModules =
!ApplicationManager.getApplication().isUnitTestMode() ?
@@ -108,13 +98,12 @@ public class KotlinJsModuleConfigurator extends KotlinWithLibraryConfigurator {
List<Module> 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() {
@@ -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) {
@@ -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);
}
};
}
}
@@ -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<LibraryKind> 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());
}
}
@@ -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<LibraryKind> 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);
}
};
}
}
@@ -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();
}
}
@@ -1,62 +0,0 @@
<?xml version="1.0" encoding="UTF-8"?>
<form xmlns="http://www.intellij.com/uidesigner/form/" version="1" bind-to-class="org.jetbrains.jet.plugin.framework.ui.CreateJavaScriptLibraryDialogBase">
<grid id="cbd77" binding="contentPane" layout-manager="GridLayoutManager" row-count="6" column-count="1" same-size-horizontally="false" same-size-vertically="false" hgap="-1" vgap="-1">
<margin top="0" left="0" bottom="0" right="0"/>
<constraints>
<xy x="48" y="54" width="436" height="297"/>
</constraints>
<properties/>
<border type="none"/>
<children>
<vspacer id="bb37c">
<constraints>
<grid row="5" column="0" row-span="1" col-span="1" vsize-policy="6" hsize-policy="1" anchor="0" fill="2" indent="0" use-parent-layout="false"/>
</constraints>
</vspacer>
<component id="982e8" class="javax.swing.JLabel" binding="compilerTextLabel">
<constraints>
<grid row="0" column="0" row-span="1" col-span="1" vsize-policy="0" hsize-policy="0" anchor="8" fill="0" indent="0" use-parent-layout="false"/>
</constraints>
<properties>
<text value="Using compiler bundled into plugin"/>
</properties>
</component>
<grid id="beed7" binding="chooseModulesPlace" layout-manager="BorderLayout" hgap="0" vgap="0">
<constraints>
<grid row="1" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
<border type="none"/>
<children/>
</grid>
<grid id="486ab" binding="copyLibraryPlace" layout-manager="BorderLayout" hgap="0" vgap="0">
<constraints>
<grid row="4" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
<border type="none"/>
<children/>
</grid>
<grid id="11e35" binding="copyJsFilesPlace" layout-manager="BorderLayout" hgap="0" vgap="0">
<constraints>
<grid row="3" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="3" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
<border type="none"/>
<children/>
</grid>
<component id="89994" class="com.intellij.ui.SeparatorWithText" binding="modulesSeparator">
<constraints>
<grid row="2" column="0" row-span="1" col-span="1" vsize-policy="3" hsize-policy="3" anchor="0" fill="1" indent="0" use-parent-layout="false"/>
</constraints>
<properties/>
</component>
</children>
</grid>
<buttonGroups>
<group name="sourceGroup">
<member id="730af"/>
<member id="c709f"/>
</group>
</buttonGroups>
</form>
@@ -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;
}
}
@@ -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<Module> 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<Module> getModulesToConfigure() {
return chooseModulePanel.getModulesToConfigure();
}
}
@@ -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) {