mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-01-05 01:50:56 +07:00
[fus] Add FUS for ProjectWizardJdkComboBox
GitOrigin-RevId: 8f53ca0c93d576109b6f47b9dcff585b5babb91b
This commit is contained in:
committed by
intellij-monorepo-bot
parent
3f6db3628a
commit
723a1aae8a
@@ -0,0 +1,64 @@
|
||||
// Copyright 2000-2024 JetBrains s.r.o. and contributors. Use of this source code is governed by the Apache 2.0 license.
|
||||
package com.intellij.ide.projectWizard
|
||||
|
||||
import com.intellij.internal.statistic.eventLog.EventLogGroup
|
||||
import com.intellij.internal.statistic.eventLog.events.EventFields
|
||||
import com.intellij.internal.statistic.eventLog.events.EventId
|
||||
import com.intellij.internal.statistic.eventLog.events.EventId2
|
||||
import com.intellij.internal.statistic.service.fus.collectors.CounterUsagesCollector
|
||||
import com.intellij.openapi.projectRoots.Sdk
|
||||
import com.intellij.openapi.projectRoots.impl.jdkDownloader.JdkItem
|
||||
import org.jetbrains.jps.model.java.JdkVersionDetector
|
||||
|
||||
internal object JdkComboBoxCollector: CounterUsagesCollector() {
|
||||
private val GROUP: EventLogGroup = EventLogGroup("npw.jdk.combo", 1)
|
||||
private const val UNKNOWN_VENDOR = "unknown"
|
||||
private val KNOWN_VENDORS = JdkVersionDetector.Variant.entries
|
||||
.mapNotNull { it.displayName }
|
||||
.toList() + UNKNOWN_VENDOR
|
||||
|
||||
private val SETUP_EXISTING: EventId2<String, Int> = GROUP.registerEvent("setup.existing",
|
||||
EventFields.String("vendor", KNOWN_VENDORS),
|
||||
EventFields.Int("version"))
|
||||
private val SETUP_NO_JDK: EventId = GROUP.registerEvent("no.jdk")
|
||||
private val DOWNLOAD_JDK: EventId2<String, Int> = GROUP.registerEvent("download.jdk",
|
||||
EventFields.String("vendor", KNOWN_VENDORS),
|
||||
EventFields.Int("version"))
|
||||
|
||||
override fun getGroup(): EventLogGroup = GROUP
|
||||
|
||||
fun jdkRegistered(sdk: Sdk) {
|
||||
val sdkVersionString = sdk.versionString
|
||||
|
||||
val variant = when (sdkVersionString) {
|
||||
null -> UNKNOWN_VENDOR
|
||||
else -> KNOWN_VENDORS.firstOrNull { sdkVersionString.contains(it) } ?: UNKNOWN_VENDOR
|
||||
}
|
||||
|
||||
val version = findSdkVersion(sdkVersionString)
|
||||
|
||||
SETUP_EXISTING.log(variant, version)
|
||||
}
|
||||
|
||||
fun noJdkRegistered() {
|
||||
SETUP_NO_JDK.log()
|
||||
}
|
||||
|
||||
private fun findSdkVersion(sdkVersionString: String?): Int {
|
||||
val versionRegex = Regex("([0-9]+)(?:[.0-9]+)?")
|
||||
val version = when (sdkVersionString) {
|
||||
null -> -1
|
||||
else -> versionRegex.find(sdkVersionString)?.groups?.firstOrNull()?.value?.toInt() ?: -1
|
||||
}
|
||||
return version
|
||||
}
|
||||
|
||||
fun jdkDownloaded(item: JdkItem) {
|
||||
val vendor = when (item.product.vendor) {
|
||||
in KNOWN_VENDORS -> item.product.vendor
|
||||
else -> UNKNOWN_VENDOR
|
||||
}
|
||||
|
||||
DOWNLOAD_JDK.log(vendor, findSdkVersion(item.presentableMajorVersionString))
|
||||
}
|
||||
}
|
||||
@@ -20,10 +20,7 @@ import com.intellij.openapi.project.DefaultProjectFactory
|
||||
import com.intellij.openapi.projectRoots.*
|
||||
import com.intellij.openapi.projectRoots.impl.DependentSdkType
|
||||
import com.intellij.openapi.projectRoots.impl.SdkConfigurationUtil
|
||||
import com.intellij.openapi.projectRoots.impl.jdkDownloader.JdkDownloaderBase
|
||||
import com.intellij.openapi.projectRoots.impl.jdkDownloader.JdkInstallRequestInfo
|
||||
import com.intellij.openapi.projectRoots.impl.jdkDownloader.JdkInstaller
|
||||
import com.intellij.openapi.projectRoots.impl.jdkDownloader.JdkListDownloader
|
||||
import com.intellij.openapi.projectRoots.impl.jdkDownloader.*
|
||||
import com.intellij.openapi.roots.ui.configuration.ProjectStructureConfigurable
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.SdkDownload
|
||||
import com.intellij.openapi.roots.ui.configuration.projectRoot.SdkDownloadTask
|
||||
@@ -105,6 +102,11 @@ fun Row.projectWizardJdkComboBox(
|
||||
}
|
||||
.onApply {
|
||||
context.projectJdk = sdkProperty.get()
|
||||
|
||||
when (val selected = combo.selectedItem) {
|
||||
is NoJdk -> JdkComboBoxCollector.noJdkRegistered()
|
||||
is DownloadJdk -> JdkComboBoxCollector.jdkDownloaded((selected.task as JdkDownloadTask).jdkItem)
|
||||
}
|
||||
}
|
||||
|
||||
val lastSelected = PropertiesComponent.getInstance().getValue(selectedJdkProperty)
|
||||
@@ -378,6 +380,7 @@ private fun selectAndAddJdk(combo: ProjectWizardJdkComboBox) {
|
||||
private fun registerJdk(path: String, combo: ProjectWizardJdkComboBox) {
|
||||
runReadAction {
|
||||
SdkConfigurationUtil.createAndAddSDK(path, JavaSdk.getInstance())?.let {
|
||||
JdkComboBoxCollector.jdkRegistered(it)
|
||||
val comboItem = ExistingJdk(it)
|
||||
val index = combo.lastRegisteredJdkIndex
|
||||
combo.registered.add(comboItem)
|
||||
|
||||
@@ -2476,6 +2476,7 @@
|
||||
<newProjectWizard.languageGenerator implementation="com.intellij.ide.projectWizard.generators.JavaNewProjectWizard" order="first"/>
|
||||
<newProjectWizard.java.buildSystem implementation="com.intellij.ide.projectWizard.generators.IntelliJJavaNewProjectWizard"/>
|
||||
<requiredForSmartModeStartupActivity implementation="com.intellij.ide.projectWizard.generators.SdkPreIndexingRequiredForSmartModeActivity"/>
|
||||
<statistics.counterUsagesCollector implementationClass="com.intellij.ide.projectWizard.JdkComboBoxCollector"/>
|
||||
|
||||
<registryKey key="starters.dependency.update.host"
|
||||
defaultValue="https://frameworks.jetbrains.com"
|
||||
|
||||
@@ -27,8 +27,8 @@ public abstract class JdkVersionDetector {
|
||||
Temurin("temurin", "Eclipse Temurin"),
|
||||
Semeru("semeru", "IBM Semeru"),
|
||||
Corretto("corretto", "Amazon Corretto"),
|
||||
GraalVM("graalvm", "GraalVM"),
|
||||
GraalVMCE("graalvm-ce", "GraalVM CE"),
|
||||
GraalVM("graalvm", "GraalVM"),
|
||||
IBM("ibm", "IBM JDK"),
|
||||
JBR("jbr", "JetBrains Runtime"),
|
||||
Liberica("liberica", "BellSoft Liberica"),
|
||||
|
||||
Reference in New Issue
Block a user