mirror of
https://gitflic.ru/project/openide/openide.git
synced 2025-12-15 11:53:49 +07:00
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:
committed by
intellij-monorepo-bot
parent
c8af750f76
commit
3a436c20c6
@@ -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('.', '/')
|
||||||
|
|||||||
@@ -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)
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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?)
|
||||||
|
|||||||
@@ -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 {
|
||||||
|
|||||||
@@ -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 }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user