mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:10:43 +07:00
IDEA-335458 Fix race condition while preparing onboarding tips
Now prepareOnboardingTips activities set a sign to install onboarding tips on the first opened editor. So it may be (and should) executed before any files will be generated and opened by project wizard. Also wanted to rename prepareTipsInEditor to prepareOnboardingTips (because installing to the editor will be later by the fact), but cannot do it because of API break. GitOrigin-RevId: 1fdff5f9d99cffebb2a525f82374763be86ef4fb
This commit is contained in:
committed by
intellij-monorepo-bot
parent
d9a711a0ab
commit
a6bc09c788
@@ -10,6 +10,7 @@ import com.intellij.openapi.keymap.KeymapTextContext
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.openapi.util.SystemInfo
|
||||
import org.jetbrains.annotations.ApiStatus
|
||||
import org.jetbrains.annotations.ApiStatus.ScheduledForRemoval
|
||||
import java.util.*
|
||||
|
||||
@ApiStatus.Experimental
|
||||
@@ -61,8 +62,12 @@ abstract class AssetsJavaNewProjectWizardStep(parent: NewProjectWizardStep) : As
|
||||
addFilesToOpen(sourcePath)
|
||||
}
|
||||
|
||||
fun prepareTipsInEditor(project: Project) {
|
||||
prepareTipsInEditor(project, "SampleCode") { charSequence ->
|
||||
@ScheduledForRemoval
|
||||
@Deprecated("Use prepareOnboardingTips and it should be called before wizard project setup")
|
||||
fun prepareTipsInEditor(project: Project) { }
|
||||
|
||||
fun prepareOnboardingTips(project: Project) {
|
||||
prepareOnboardingTips(project, "SampleCode") { charSequence ->
|
||||
charSequence.indexOf("System.out.println").takeIf { it >= 0 }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -18,7 +18,7 @@ abstract class AssetsOnboardingTipsProjectWizardStep(parent: NewProjectWizardSte
|
||||
|
||||
protected fun shouldRenderOnboardingTips(): Boolean = Registry.`is`("doc.onboarding.tips.render")
|
||||
|
||||
protected fun prepareTipsInEditor(project: Project, templateWithoutTips: String, breakpointSelector: (CharSequence) -> Int?) = whenProjectCreated(project) {
|
||||
protected fun prepareOnboardingTips(project: Project, templateWithoutTips: String, breakpointSelector: (CharSequence) -> Int?) = whenProjectCreated(project) {
|
||||
val templateManager = FileTemplateManager.getDefaultInstance()
|
||||
val properties = getTemplateProperties()
|
||||
val defaultProperties = templateManager.defaultProperties
|
||||
|
||||
@@ -85,10 +85,10 @@ class IntelliJJavaNewProjectWizard : BuildSystemJavaNewProjectWizard {
|
||||
}
|
||||
|
||||
override fun setupProject(project: Project) {
|
||||
super.setupProject(project)
|
||||
if (parent.generateOnboardingTips) {
|
||||
prepareTipsInEditor(project)
|
||||
prepareOnboardingTips(project)
|
||||
}
|
||||
super.setupProject(project)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -4,16 +4,21 @@ package org.jetbrains.plugins.gradle.service.project.wizard
|
||||
import com.intellij.ide.projectWizard.NewProjectWizardCollector.Base.logAddSampleCodeChanged
|
||||
import com.intellij.ide.projectWizard.NewProjectWizardCollector.Base.logAddSampleOnboardingTipsChangedEvent
|
||||
import com.intellij.ide.projectWizard.NewProjectWizardConstants.BuildSystem.GRADLE
|
||||
import com.intellij.ide.projectWizard.generators.*
|
||||
import com.intellij.ide.projectWizard.generators.AssetsJavaNewProjectWizardStep
|
||||
import com.intellij.ide.projectWizard.generators.AssetsJavaNewProjectWizardStep.Companion.proposeToGenerateOnboardingTipsByDefault
|
||||
import com.intellij.ide.projectWizard.generators.BuildSystemJavaNewProjectWizard
|
||||
import com.intellij.ide.projectWizard.generators.BuildSystemJavaNewProjectWizardData
|
||||
import com.intellij.ide.projectWizard.generators.JavaNewProjectWizard
|
||||
import com.intellij.ide.starters.local.StandardAssetsProvider
|
||||
import com.intellij.ide.wizard.NewProjectWizardChainStep.Companion.nextStep
|
||||
import com.intellij.ide.wizard.NewProjectWizardStep
|
||||
import com.intellij.ide.wizard.NewProjectWizardStep.Companion.ADD_SAMPLE_CODE_PROPERTY_NAME
|
||||
import com.intellij.ide.wizard.NewProjectWizardChainStep.Companion.nextStep
|
||||
import com.intellij.openapi.observable.util.bindBooleanStorage
|
||||
import com.intellij.openapi.project.Project
|
||||
import com.intellij.ui.UIBundle
|
||||
import com.intellij.ui.dsl.builder.*
|
||||
import com.intellij.ui.dsl.builder.Panel
|
||||
import com.intellij.ui.dsl.builder.bindSelected
|
||||
import com.intellij.ui.dsl.builder.whenStateChangedFromUi
|
||||
|
||||
internal class GradleJavaNewProjectWizard : BuildSystemJavaNewProjectWizard {
|
||||
|
||||
@@ -96,10 +101,10 @@ internal class GradleJavaNewProjectWizard : BuildSystemJavaNewProjectWizard {
|
||||
}
|
||||
|
||||
override fun setupProject(project: Project) {
|
||||
super.setupProject(project)
|
||||
if (parent.generateOnboardingTips) {
|
||||
prepareTipsInEditor(project)
|
||||
prepareOnboardingTips(project)
|
||||
}
|
||||
super.setupProject(project)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -59,8 +59,8 @@ abstract class AssetsKotlinNewProjectWizardStep(parent: NewProjectWizardStep) :
|
||||
addFilesToOpen(sourcePath)
|
||||
}
|
||||
|
||||
fun prepareTipsInEditor(project: Project) {
|
||||
prepareTipsInEditor(project, "KotlinSampleCode") { charsSequence ->
|
||||
fun prepareOnboardingTips(project: Project) {
|
||||
prepareOnboardingTips(project, "KotlinSampleCode") { charsSequence ->
|
||||
charsSequence.indexOf("println(\"i").takeIf { it >= 0 }
|
||||
}
|
||||
}
|
||||
|
||||
@@ -288,10 +288,10 @@ internal class GradleKotlinNewProjectWizard : BuildSystemKotlinNewProjectWizard
|
||||
}
|
||||
|
||||
override fun setupProject(project: Project) {
|
||||
super.setupProject(project)
|
||||
if (shouldAddOnboardingTips()) {
|
||||
prepareTipsInEditor(project)
|
||||
prepareOnboardingTips(project)
|
||||
}
|
||||
super.setupProject(project)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -91,10 +91,10 @@ internal class IntelliJKotlinNewProjectWizard : BuildSystemKotlinNewProjectWizar
|
||||
}
|
||||
|
||||
override fun setupProject(project: Project) {
|
||||
super.setupProject(project)
|
||||
if (shouldAddOnboardingTips()) {
|
||||
prepareTipsInEditor(project)
|
||||
prepareOnboardingTips(project)
|
||||
}
|
||||
super.setupProject(project)
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -94,10 +94,10 @@ class MavenJavaNewProjectWizard : BuildSystemJavaNewProjectWizard {
|
||||
}
|
||||
|
||||
override fun setupProject(project: Project) {
|
||||
super.setupProject(project)
|
||||
if (parent.generateOnboardingTips) {
|
||||
prepareTipsInEditor(project)
|
||||
prepareOnboardingTips(project)
|
||||
}
|
||||
super.setupProject(project)
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user