diff --git a/platform/platform-impl/src/com/intellij/ide/RecentProjectListActionProvider.kt b/platform/platform-impl/src/com/intellij/ide/RecentProjectListActionProvider.kt index a93f926df5f4..8f70bac8d89a 100644 --- a/platform/platform-impl/src/com/intellij/ide/RecentProjectListActionProvider.kt +++ b/platform/platform-impl/src/com/intellij/ide/RecentProjectListActionProvider.kt @@ -8,6 +8,7 @@ import com.intellij.openapi.actionSystem.ActionUpdateThread import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.components.service +import com.intellij.openapi.diagnostic.logger import com.intellij.openapi.extensions.ExtensionPointName import com.intellij.openapi.project.DumbAware import com.intellij.openapi.project.DumbAwareAction @@ -25,6 +26,7 @@ import com.intellij.openapi.wm.impl.welcomeScreen.recentProjects.RecentProjectIt import com.intellij.openapi.wm.impl.welcomeScreen.recentProjects.RecentProjectTreeItem import com.intellij.ui.UIBundle import com.intellij.util.concurrency.annotations.RequiresBlockingContext +import com.intellij.util.containers.forEachLoggingErrors import org.jetbrains.annotations.ApiStatus import javax.swing.Icon @@ -234,6 +236,20 @@ open class RecentProjectListActionProvider { } } + @ApiStatus.Internal + fun countLocalProjects(): Int { + return RecentProjectsManagerBase.getInstanceEx().getRecentPaths().size + } + + @ApiStatus.Internal + fun countProjectsFromProviders(): Int { + var sum = 0 + EP.extensionList.forEachLoggingErrors(logger()) { + sum += it.getRecentProjects().size + } + return sum + } + /** * Keep [projects] order intact, but insert [projectsFromEP] into the correct place if possible */ diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/ProjectsTabFactory.kt b/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/ProjectsTabFactory.kt index 1457338d808a..67c52b99afcb 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/ProjectsTabFactory.kt +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/ProjectsTabFactory.kt @@ -6,7 +6,6 @@ import com.intellij.ide.IdeBundle import com.intellij.ide.RecentProjectListActionProvider import com.intellij.ide.RecentProjectsManager import com.intellij.ide.RecentProjectsManager.RecentProjectsChange -import com.intellij.ide.RecentProjectsManagerBase import com.intellij.ide.dnd.DnDEvent import com.intellij.ide.dnd.DnDNativeTarget import com.intellij.ide.dnd.DnDSupport @@ -92,9 +91,11 @@ internal class ProjectsTab(private val parentDisposable: Disposable) : DefaultWe } override fun buildComponent(): JComponent { - val recentPaths = RecentProjectsManagerBase.getInstanceEx().getRecentPaths() - WelcomeScreenCounterUsageCollector.reportWelcomeScreenShowed(recentPaths.size) - val promo = WelcomeScreenComponentFactory.getSinglePromotion(recentPaths.isEmpty()) + val recentProjectsCount = RecentProjectListActionProvider.getInstance().countLocalProjects() + val providerRecentProjectsCount = RecentProjectListActionProvider.getInstance().countProjectsFromProviders() + WelcomeScreenCounterUsageCollector.reportWelcomeScreenShowed(recentProjectsCount, providerRecentProjectsCount) + + val promo = WelcomeScreenComponentFactory.getSinglePromotion(recentProjectsCount == 0) return panel { customizeSpacingConfiguration(EmptySpacingConfiguration()) { diff --git a/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/statistics/WelcomeScreenCounterUsageCollector.kt b/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/statistics/WelcomeScreenCounterUsageCollector.kt index e95a81dcadbc..b0d2cb96f290 100644 --- a/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/statistics/WelcomeScreenCounterUsageCollector.kt +++ b/platform/platform-impl/src/com/intellij/openapi/wm/impl/welcomeScreen/statistics/WelcomeScreenCounterUsageCollector.kt @@ -6,14 +6,16 @@ import com.intellij.internal.statistic.eventLog.events.EventFields import com.intellij.internal.statistic.service.fus.collectors.CounterUsagesCollector internal object WelcomeScreenCounterUsageCollector : CounterUsagesCollector() { - private val GROUP = EventLogGroup("welcome.screen", 2) + private val GROUP = EventLogGroup("welcome.screen", 3) private val WELCOME_SCREEN_SHOWN = GROUP.registerEvent( "projects.tab.created", - EventFields.BoundedInt("recent_paths_count", intArrayOf(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 50)) + EventFields.BoundedInt("recent_paths_count", intArrayOf(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 50)), + EventFields.BoundedInt("provider_recent_projects_count", intArrayOf(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 20, 30, 50)) ) - fun reportWelcomeScreenShowed(recentPathsCount: Int) = WELCOME_SCREEN_SHOWN.log(recentPathsCount) + fun reportWelcomeScreenShowed(recentPathsCount: Int, providerRecentProjectsCount: Int) = + WELCOME_SCREEN_SHOWN.log(recentPathsCount, providerRecentProjectsCount) override fun getGroup(): EventLogGroup = GROUP } \ No newline at end of file