Look up modules under modal progress in ChooseModulePanel

Relates to #KT-30541
#KT-38081 Fixed
This commit is contained in:
Vladimir Dolzhenko
2020-04-09 10:12:01 +00:00
parent 91700c9d2c
commit 0262e9de2f
3 changed files with 20 additions and 3 deletions
@@ -75,6 +75,7 @@ there.aren.t.configurators.available=There aren't configurators available
all.modules.with.kotlin.files.are.configured=All modules with Kotlin files are configured
lookup.project.configurators.progress.text=Looking up for project configurators ...
lookup.modules.configurations.progress.text=Looking up for modules configurations ...
lookup.kotlin.modules.configurations.progress.text=Looking up for kotlin modules configuration ...
added.0.requirement.to.module.info.in.1=Added {0} requirement to module-info in {1}
updated.javascript.libraries.in.module.0=Updated JavaScript libraries in module {0}
added.0.to.library.configuration=Added {0} to library configuration
@@ -23,6 +23,7 @@ import com.intellij.psi.PsiJavaModule
import com.intellij.psi.search.DelegatingGlobalSearchScope
import com.intellij.psi.search.FileTypeIndex
import com.intellij.psi.search.GlobalSearchScope
import org.jetbrains.annotations.CalledInBackground
import org.jetbrains.kotlin.builtins.KotlinBuiltIns
import org.jetbrains.kotlin.idea.KotlinFileType
import org.jetbrains.kotlin.idea.KotlinJvmBundle
@@ -130,6 +131,7 @@ fun isModuleConfigured(moduleSourceRootGroup: ModuleSourceRootGroup): Boolean {
*
* DO NOT CALL THIS ON AWT THREAD
*/
@CalledInBackground
fun getModulesWithKotlinFiles(project: Project): Collection<Module> {
if (!isUnitTestMode() && ApplicationManager.getApplication().isDispatchThread) {
LOG.error("getModulesWithKotlinFiles could be a heavy operation and should not be call on AWT thread")
@@ -21,10 +21,10 @@ import com.intellij.openapi.module.ModuleManager;
import com.intellij.openapi.project.Project;
import com.intellij.openapi.ui.popup.JBPopupFactory;
import com.intellij.openapi.ui.popup.util.BaseListPopupStep;
import com.intellij.openapi.util.Pair;
import com.intellij.openapi.util.text.StringUtil;
import com.intellij.ui.HyperlinkLabel;
import com.intellij.util.Function;
import com.intellij.xml.util.XmlUtil;
import org.jetbrains.annotations.NotNull;
import org.jetbrains.kotlin.idea.KotlinJvmBundle;
import org.jetbrains.kotlin.idea.configuration.ConfigureKotlinInProjectUtilsKt;
@@ -39,6 +39,8 @@ import java.util.Collection;
import java.util.Collections;
import java.util.List;
import static org.jetbrains.kotlin.idea.util.ProgressIndicatorUtils.underModalProgress;
public class ChooseModulePanel {
private JPanel contentPane;
private JRadioButton allModulesWithKtRadioButton;
@@ -53,8 +55,20 @@ public class ChooseModulePanel {
public ChooseModulePanel(@NotNull Project project, @NotNull KotlinProjectConfigurator configurator, Collection<Module> excludeModules) {
this.project = project;
this.modules = ConfigureKotlinInProjectUtilsKt.getCanBeConfiguredModules(project, configurator);
this.modulesWithKtFiles = ConfigureKotlinInProjectUtilsKt.getCanBeConfiguredModulesWithKotlinFiles(project, configurator);
Pair<List<Module>, List<Module>> modulesPair =
underModalProgress(project,
KotlinJvmBundle
.message("lookup.kotlin.modules.configurations.progress.text"),
() -> {
List<Module> modules = ConfigureKotlinInProjectUtilsKt
.getCanBeConfiguredModules(project, configurator);
List<Module> modulesWithKtFiles =
ConfigureKotlinInProjectUtilsKt
.getCanBeConfiguredModulesWithKotlinFiles(project, configurator);
return Pair.create(modules, modulesWithKtFiles);
});
this.modules = modulesPair.first;
this.modulesWithKtFiles = modulesPair.second;
DefaultComboBoxModel comboBoxModel = new DefaultComboBoxModel();