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 @ApiStatus.Experimental
abstract class AssetsJavaNewProjectWizardStep(parent: NewProjectWizardStep) : AssetsOnboardingTipsProjectWizardStep(parent) { abstract class AssetsJavaNewProjectWizardStep(parent: NewProjectWizardStep) : AssetsOnboardingTipsProjectWizardStep(parent) {
fun withJavaSampleCodeAsset(sourceRootPath: String, aPackage: String, generateOnboardingTips: Boolean) { fun withJavaSampleCodeAsset(sourceRootPath: String, aPackage: String, generateOnboardingTips: Boolean) {
val renderedOnboardingTips = shouldRenderOnboardingTips() val renderedOnboardingTips = shouldRenderOnboardingTips()
val templateName = when { val templateName = when {
@@ -24,7 +23,7 @@ abstract class AssetsJavaNewProjectWizardStep(parent: NewProjectWizardStep) : As
else -> "SampleCodeWithOnboardingTips.java" else -> "SampleCodeWithOnboardingTips.java"
} }
val sourcePath = createJavaSourcePath(sourceRootPath, aPackage, "Main.java") val sourcePath = createJavaSourcePath(sourceRootPath, aPackage, generatedFileName)
addTemplateAsset(sourcePath, templateName, buildMap { addTemplateAsset(sourcePath, templateName, buildMap {
put("PACKAGE_NAME", aPackage) put("PACKAGE_NAME", aPackage)
if (generateOnboardingTips) { if (generateOnboardingTips) {
@@ -67,12 +66,13 @@ abstract class AssetsJavaNewProjectWizardStep(parent: NewProjectWizardStep) : As
fun prepareTipsInEditor(project: Project) { } fun prepareTipsInEditor(project: Project) { }
fun prepareOnboardingTips(project: Project) { fun prepareOnboardingTips(project: Project) {
prepareOnboardingTips(project, "SampleCode") { charSequence -> prepareOnboardingTips(project, "SampleCode", generatedFileName) { charSequence ->
charSequence.indexOf("System.out.println").takeIf { it >= 0 } charSequence.indexOf("System.out.println").takeIf { it >= 0 }
} }
} }
companion object { companion object {
private const val generatedFileName = "Main.java"
fun createJavaSourcePath(sourceRootPath: String, aPackage: String, fileName: String): String { fun createJavaSourcePath(sourceRootPath: String, aPackage: String, fileName: String): String {
val packageDirectory = aPackage.replace('.', '/') 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 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 templateManager = FileTemplateManager.getDefaultInstance()
val properties = getTemplateProperties() val properties = getTemplateProperties()
val defaultProperties = templateManager.defaultProperties val defaultProperties = templateManager.defaultProperties
val template = templateManager.getInternalTemplate(templateWithoutTips) val template = templateManager.getInternalTemplate(templateWithoutTips)
val simpleSampleText = template.getText(defaultProperties + properties) val simpleSampleText = template.getText(defaultProperties + properties)
val onboardingInfo = OnboardingTipsInstallationInfo(simpleSampleText, breakpointSelector) val onboardingInfo = OnboardingTipsInstallationInfo(simpleSampleText, fileName, breakpointSelector)
for (extension in NewProjectOnboardingTips.EP_NAME.extensions) { for (extension in NewProjectOnboardingTips.EP_NAME.extensions) {
extension.installTips(project, onboardingInfo) extension.installTips(project, onboardingInfo)
} }

View File

@@ -4,4 +4,4 @@ package com.intellij.ide.wizard
import org.jetbrains.annotations.ApiStatus import org.jetbrains.annotations.ApiStatus
@ApiStatus.Internal @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) val info = onboardingTipsInstallationInfoKey.get(project)
if (info != null) { if (info != null) {
if (editor.virtualFile?.name != info.fileName) return
project.putUserData(onboardingTipsInstallationInfoKey, null) project.putUserData(onboardingTipsInstallationInfoKey, null)
installTipsInFirstEditor(editor, project, info) installTipsInFirstEditor(editor, project, info)
} else { } else {

View File

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