KotlinJsModuleConfigurator, KotlinJavaModuleConfigurator: refactoring

This commit is contained in:
Michael Nedzelsky
2014-12-05 23:00:10 +03:00
parent 2d1029cb29
commit 8e052a9ade
3 changed files with 67 additions and 75 deletions
@@ -18,7 +18,6 @@ package org.jetbrains.jet.plugin.configuration;
import com.intellij.openapi.application.ApplicationManager;
import com.intellij.openapi.module.Module;
import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.module.impl.scopes.LibraryScope;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.roots.OrderRootType;
@@ -27,14 +26,11 @@ import com.intellij.openapi.vfs.VirtualFile;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.plugin.framework.JavaRuntimeLibraryDescription;
import org.jetbrains.jet.plugin.framework.JavaRuntimePresentationProvider;
import org.jetbrains.jet.plugin.framework.ui.CreateLibraryDialogWithModules;
import org.jetbrains.jet.plugin.project.ProjectStructureUtil;
import org.jetbrains.jet.plugin.versions.KotlinRuntimeLibraryCoreUtil;
import org.jetbrains.jet.utils.PathUtil;
import java.io.File;
import java.util.Arrays;
import java.util.List;
import static org.jetbrains.jet.plugin.configuration.ConfigureKotlinInProjectUtils.showInfoNotification;
@@ -52,6 +48,18 @@ public class KotlinJavaModuleConfigurator extends KotlinWithLibraryConfigurator
return JavaRuntimeLibraryDescription.LIBRARY_NAME;
}
@NotNull
@Override
protected String getDialogTitle() {
return JavaRuntimeLibraryDescription.DIALOG_TITLE;
}
@NotNull
@Override
protected String getLibraryCaption() {
return JavaRuntimeLibraryDescription.LIBRARY_CAPTION;
}
@NotNull
@Override
public String getJarName() {
@@ -82,38 +90,6 @@ public class KotlinJavaModuleConfigurator extends KotlinWithLibraryConfigurator
return NAME;
}
@Override
public void configure(@NotNull Project project) {
String defaultPath = getDefaultPathToJarFile(project);
boolean showPathPanelForJava = needToChooseJarPath(project);
List<Module> nonConfiguredModules = !ApplicationManager.getApplication().isUnitTestMode() ?
ConfigureKotlinInProjectUtils.getNonConfiguredModules(project, this):
Arrays.asList(ModuleManager.getInstance(project).getModules());
List<Module> modulesToConfigure = nonConfiguredModules;
String copyLibIntoPath = null;
if (nonConfiguredModules.size() > 1 || showPathPanelForJava) {
CreateLibraryDialogWithModules dialog = new CreateLibraryDialogWithModules(
project, nonConfiguredModules, defaultPath, showPathPanelForJava,
JavaRuntimeLibraryDescription.DIALOG_TITLE,
JavaRuntimeLibraryDescription.LIBRARY_CAPTION);
if (!ApplicationManager.getApplication().isUnitTestMode()) {
dialog.show();
if (!dialog.isOK()) return;
}
modulesToConfigure = dialog.getModulesToConfigure();
copyLibIntoPath = dialog.getCopyIntoPath();
}
for (Module module : modulesToConfigure) {
configureModuleWithLibrary(module, defaultPath, copyLibIntoPath);
}
}
@Override
@NotNull
public File getExistedJarFile() {
@@ -16,20 +16,14 @@
package org.jetbrains.jet.plugin.configuration;
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 org.jetbrains.annotations.NotNull;
import org.jetbrains.jet.plugin.framework.JSLibraryStdDescription;
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;
import java.io.File;
import java.util.Arrays;
import java.util.List;
public class KotlinJsModuleConfigurator extends KotlinWithLibraryConfigurator {
public static final String NAME = JavaScript.LOWER_NAME;
@@ -57,6 +51,18 @@ public class KotlinJsModuleConfigurator extends KotlinWithLibraryConfigurator {
return JSLibraryStdDescription.LIBRARY_NAME;
}
@NotNull
@Override
protected String getDialogTitle() {
return JSLibraryStdDescription.DIALOG_TITLE;
}
@NotNull
@Override
protected String getLibraryCaption() {
return JSLibraryStdDescription.LIBRARY_CAPTION;
}
@NotNull
@Override
public String getJarName() {
@@ -86,39 +92,6 @@ public class KotlinJsModuleConfigurator extends KotlinWithLibraryConfigurator {
return assertFileExists(PathUtil.getKotlinPathsForIdeaPlugin().getJsStdLibSrcJarPath());
}
@Override
public void configure(@NotNull Project project) {
String defaultPathToJar = getDefaultPathToJarFile(project);
boolean showPathToJarPanel = needToChooseJarPath(project);
List<Module> nonConfiguredModules =
!ApplicationManager.getApplication().isUnitTestMode() ?
ConfigureKotlinInProjectUtils.getNonConfiguredModules(project, this) :
Arrays.asList(ModuleManager.getInstance(project).getModules());
List<Module> modulesToConfigure = nonConfiguredModules;
String copyLibraryIntoPath = null;
if (nonConfiguredModules.size() > 1 || showPathToJarPanel) {
CreateLibraryDialogWithModules dialog = new CreateLibraryDialogWithModules(
project, nonConfiguredModules, defaultPathToJar, showPathToJarPanel,
JSLibraryStdDescription.DIALOG_TITLE,
JSLibraryStdDescription.LIBRARY_CAPTION);
if (!ApplicationManager.getApplication().isUnitTestMode()) {
dialog.show();
if (!dialog.isOK()) return;
}
modulesToConfigure = dialog.getModulesToConfigure();
copyLibraryIntoPath = dialog.getCopyIntoPath();
}
for (Module module : modulesToConfigure) {
configureModuleWithLibrary(module, defaultPathToJar, copyLibraryIntoPath);
}
}
KotlinJsModuleConfigurator() {
}
}
@@ -18,6 +18,7 @@ package org.jetbrains.jet.plugin.configuration;
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.*;
import com.intellij.openapi.roots.libraries.Library;
@@ -34,10 +35,13 @@ import com.intellij.util.Processor;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Nullable;
import org.jetbrains.jet.plugin.JetPluginUtil;
import org.jetbrains.jet.plugin.framework.ui.CreateLibraryDialogWithModules;
import org.jetbrains.jet.plugin.framework.ui.FileUIUtils;
import org.jetbrains.jet.plugin.project.ProjectStructureUtil;
import java.io.File;
import java.util.Arrays;
import java.util.List;
import static org.jetbrains.jet.plugin.configuration.ConfigureKotlinInProjectUtils.showInfoNotification;
@@ -56,6 +60,12 @@ public abstract class KotlinWithLibraryConfigurator implements KotlinProjectConf
@NotNull
protected abstract String getMessageForOverrideDialog();
@NotNull
protected abstract String getDialogTitle();
@NotNull
protected abstract String getLibraryCaption();
@NotNull
public abstract File getExistedJarFile();
@@ -68,6 +78,39 @@ public abstract class KotlinWithLibraryConfigurator implements KotlinProjectConf
!JetPluginUtil.isGradleModule(module);
}
@Override
public void configure(@NotNull Project project) {
String defaultPathToJar = getDefaultPathToJarFile(project);
boolean showPathToJarPanel = needToChooseJarPath(project);
List<Module> nonConfiguredModules =
!ApplicationManager.getApplication().isUnitTestMode() ?
ConfigureKotlinInProjectUtils.getNonConfiguredModules(project, this) :
Arrays.asList(ModuleManager.getInstance(project).getModules());
List<Module> modulesToConfigure = nonConfiguredModules;
String copyLibraryIntoPath = null;
if (nonConfiguredModules.size() > 1 || showPathToJarPanel) {
CreateLibraryDialogWithModules dialog = new CreateLibraryDialogWithModules(
project, nonConfiguredModules, defaultPathToJar, showPathToJarPanel,
getDialogTitle(),
getLibraryCaption());
if (!ApplicationManager.getApplication().isUnitTestMode()) {
dialog.show();
if (!dialog.isOK()) return;
}
modulesToConfigure = dialog.getModulesToConfigure();
copyLibraryIntoPath = dialog.getCopyIntoPath();
}
for (Module module : modulesToConfigure) {
configureModuleWithLibrary(module, defaultPathToJar, copyLibraryIntoPath);
}
}
protected void configureModuleWithLibrary(
@NotNull Module module,
@NotNull String defaultPath,