IDEA-335458 Fix onboarding tips generation for Gradle projects

Generated Gradle project firstly opens the Gradle script and opens the Main file after that

GitOrigin-RevId: 9da0aae7194e0a90fcf52e6d4676dd2571fc152b
This commit is contained in:
Alexey Merkulov
2023-10-31 00:10:09 +01:00
committed by intellij-monorepo-bot
parent c8af750f76
commit 3a436c20c6
5 changed files with 11 additions and 8 deletions

View File

@@ -15,7 +15,6 @@ import java.util.*
@ApiStatus.Experimental
abstract class AssetsJavaNewProjectWizardStep(parent: NewProjectWizardStep) : AssetsOnboardingTipsProjectWizardStep(parent) {
fun withJavaSampleCodeAsset(sourceRootPath: String, aPackage: String, generateOnboardingTips: Boolean) {
val renderedOnboardingTips = shouldRenderOnboardingTips()
val templateName = when {
@@ -24,7 +23,7 @@ abstract class AssetsJavaNewProjectWizardStep(parent: NewProjectWizardStep) : As
else -> "SampleCodeWithOnboardingTips.java"
}
val sourcePath = createJavaSourcePath(sourceRootPath, aPackage, "Main.java")
val sourcePath = createJavaSourcePath(sourceRootPath, aPackage, generatedFileName)
addTemplateAsset(sourcePath, templateName, buildMap {
put("PACKAGE_NAME", aPackage)
if (generateOnboardingTips) {
@@ -67,12 +66,13 @@ abstract class AssetsJavaNewProjectWizardStep(parent: NewProjectWizardStep) : As
fun prepareTipsInEditor(project: Project) { }
fun prepareOnboardingTips(project: Project) {
prepareOnboardingTips(project, "SampleCode") { charSequence ->
prepareOnboardingTips(project, "SampleCode", generatedFileName) { charSequence ->
charSequence.indexOf("System.out.println").takeIf { it >= 0 }
}
}
companion object {
private const val generatedFileName = "Main.java"
fun createJavaSourcePath(sourceRootPath: String, aPackage: String, fileName: String): String {
val packageDirectory = aPackage.replace('.', '/')

View File

@@ -17,13 +17,13 @@ abstract class AssetsOnboardingTipsProjectWizardStep(parent: NewProjectWizardSte
protected fun shouldRenderOnboardingTips(): Boolean = Registry.`is`("doc.onboarding.tips.render")
protected fun prepareOnboardingTips(project: Project, templateWithoutTips: String, breakpointSelector: (CharSequence) -> Int?) {
protected fun prepareOnboardingTips(project: Project, templateWithoutTips: String, fileName: String, breakpointSelector: (CharSequence) -> Int?) {
val templateManager = FileTemplateManager.getDefaultInstance()
val properties = getTemplateProperties()
val defaultProperties = templateManager.defaultProperties
val template = templateManager.getInternalTemplate(templateWithoutTips)
val simpleSampleText = template.getText(defaultProperties + properties)
val onboardingInfo = OnboardingTipsInstallationInfo(simpleSampleText, breakpointSelector)
val onboardingInfo = OnboardingTipsInstallationInfo(simpleSampleText, fileName, breakpointSelector)
for (extension in NewProjectOnboardingTips.EP_NAME.extensions) {
extension.installTips(project, onboardingInfo)
}

View File

@@ -4,4 +4,4 @@ package com.intellij.ide.wizard
import org.jetbrains.annotations.ApiStatus
@ApiStatus.Internal
data class OnboardingTipsInstallationInfo(val simpleSampleText: String, val offsetForBreakpoint: (CharSequence) -> Int?)
data class OnboardingTipsInstallationInfo(val simpleSampleText: String, val fileName: String, val offsetForBreakpoint: (CharSequence) -> Int?)

View File

@@ -127,6 +127,7 @@ private class InstallOnboardingTipsEditorListener : EditorFactoryListener {
val info = onboardingTipsInstallationInfoKey.get(project)
if (info != null) {
if (editor.virtualFile?.name != info.fileName) return
project.putUserData(onboardingTipsInstallationInfoKey, null)
installTipsInFirstEditor(editor, project, info)
} else {

View File

@@ -9,6 +9,8 @@ import com.intellij.openapi.keymap.KeymapTextContext
import com.intellij.openapi.project.Project
import org.jetbrains.kotlin.tools.projectWizard.KotlinNewProjectWizardBundle
private const val generatedFileName = "Main.kt"
abstract class AssetsKotlinNewProjectWizardStep(parent: NewProjectWizardStep) : AssetsOnboardingTipsProjectWizardStep(parent) {
fun withKotlinSampleCode(sourceRootPath: String, packageName: String?, generateOnboardingTips: Boolean) {
val renderedOnboardingTips = shouldRenderOnboardingTips()
@@ -18,7 +20,7 @@ abstract class AssetsKotlinNewProjectWizardStep(parent: NewProjectWizardStep) :
else -> "KotlinSampleCodeWithOnboardingTips"
}
val sourcePath = "$sourceRootPath/Main.kt"
val sourcePath = "$sourceRootPath/$generatedFileName"
addTemplateAsset(sourcePath, templateName, buildMap {
packageName?.let {
put("PACKAGE_NAME", it)
@@ -60,7 +62,7 @@ abstract class AssetsKotlinNewProjectWizardStep(parent: NewProjectWizardStep) :
}
fun prepareOnboardingTips(project: Project) {
prepareOnboardingTips(project, "KotlinSampleCode") { charsSequence ->
prepareOnboardingTips(project, "KotlinSampleCode", generatedFileName) { charsSequence ->
charsSequence.indexOf("println(\"i").takeIf { it >= 0 }
}
}