diff --git a/java/java-features-trainer/src/com/intellij/java/ift/JavaBasedLangSupport.kt b/java/java-features-trainer/src/com/intellij/java/ift/JavaBasedLangSupport.kt index 773bc02bb11f..13e25f24c7d7 100644 --- a/java/java-features-trainer/src/com/intellij/java/ift/JavaBasedLangSupport.kt +++ b/java/java-features-trainer/src/com/intellij/java/ift/JavaBasedLangSupport.kt @@ -1,6 +1,8 @@ // Copyright 2000-2021 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license that can be found in the LICENSE file. package com.intellij.java.ift +import com.intellij.ide.impl.NewProjectUtil +import com.intellij.ide.impl.OpenProjectTask import com.intellij.openapi.application.invokeLater import com.intellij.openapi.application.runInEdt import com.intellij.openapi.application.runWriteAction @@ -10,7 +12,9 @@ import com.intellij.openapi.projectRoots.JavaSdkType import com.intellij.openapi.projectRoots.Sdk import com.intellij.openapi.projectRoots.ex.JavaSdkUtil import com.intellij.openapi.roots.ProjectRootManager +import com.intellij.openapi.util.io.FileUtil import com.intellij.openapi.vfs.VirtualFile +import com.intellij.platform.PlatformProjectOpenProcessor import training.lang.AbstractLangSupport import training.project.ProjectUtils import java.nio.file.Path @@ -21,12 +25,27 @@ abstract class JavaBasedLangSupport : AbstractLangSupport() { override fun installAndOpenLearningProject(contentRoot: Path, projectToClose: Project?, postInitCallback: (learnProject: Project) -> Unit) { - super.installAndOpenLearningProject(contentRoot, projectToClose) { project -> + val openProjectTask = OpenProjectTask { + this.projectToClose = projectToClose + // It is required to not run SetupJavaProjectFromSourcesActivity because + // Projects created from wizard do not use it now + this.beforeOpen = { project -> + project.putUserData(PlatformProjectOpenProcessor.PROJECT_OPENED_BY_PLATFORM_PROCESSOR, false) + true + } + } + ProjectUtils.simpleInstallAndOpenLearningProject(contentRoot, this, openProjectTask) { project -> + val projectPath = FileUtil.toSystemIndependentName(contentRoot.toString()) + val outputPath = projectPath.removeSuffix("/") + "/out" + NewProjectUtil.setCompilerOutputPath(project, outputPath) + JavaProjectUtil.findJavaSdkAsync(project) { sdk -> - if (sdk != null) { - applyProjectSdk(sdk, project) + runInEdt { + if (sdk != null) { + applyProjectSdk(sdk, project) + } + postInitCallback(project) } - postInitCallback(project) } } } @@ -39,9 +58,7 @@ abstract class JavaBasedLangSupport : AbstractLangSupport() { val applySdkAction = { runWriteAction { JavaSdkUtil.applyJdkToProject(project, sdk) } } - runInEdt { - CommandProcessor.getInstance().executeCommand(project, applySdkAction, null, null) - } + CommandProcessor.getInstance().executeCommand(project, applySdkAction, null, null) } override fun applyToProjectAfterConfigure(): (Project) -> Unit = { newProject -> diff --git a/plugins/kotlin/features-trainer/src/org/jetbrains/kotlin/training/ift/KotlinLangSupport.kt b/plugins/kotlin/features-trainer/src/org/jetbrains/kotlin/training/ift/KotlinLangSupport.kt index 69e32930aa41..ef3a24c8cb5c 100644 --- a/plugins/kotlin/features-trainer/src/org/jetbrains/kotlin/training/ift/KotlinLangSupport.kt +++ b/plugins/kotlin/features-trainer/src/org/jetbrains/kotlin/training/ift/KotlinLangSupport.kt @@ -8,7 +8,6 @@ import com.intellij.openapi.application.runReadAction import com.intellij.openapi.module.ModuleManager import com.intellij.openapi.progress.runBackgroundableTask import com.intellij.openapi.project.Project -import com.intellij.platform.PlatformProjectOpenProcessor import org.jetbrains.kotlin.idea.configuration.KotlinJavaModuleConfigurator import org.jetbrains.kotlin.idea.configuration.NotificationMessageCollector import org.jetbrains.kotlin.idea.formatter.KotlinStyleGuideCodeStyle @@ -30,10 +29,6 @@ class KotlinLangSupport : JavaBasedLangSupport() { postInitCallback: (learnProject: Project) -> Unit ) { super.installAndOpenLearningProject(contentRoot, projectToClose) { project -> - // It is required to not run SetupJavaProjectFromSourcesActivity because - // it will overwrite our manual setup of KotlinJavaRuntime library - project.putUserData(PlatformProjectOpenProcessor.PROJECT_OPENED_BY_PLATFORM_PROCESSOR, false) - setupKotlin(project) postInitCallback(project) }