IDEA-347611 Remove banner about disabling onboarding tips comments

GitOrigin-RevId: daa4864c08af269eb1e2aa68337917698dd23c7f
This commit is contained in:
Alexey Merkulov
2024-02-27 18:14:53 +01:00
committed by intellij-monorepo-bot
parent 5d670d892f
commit 020a5c0f7a
3 changed files with 2 additions and 62 deletions

View File

@@ -209,7 +209,6 @@
<newProject.onboarding.tips implementation="training.onboarding.NewProjectOnboardingTipsImpl"/>
<postStartupActivity implementation="training.onboarding.InstallOnboardingTooltip"/>
<editorFactoryListener implementation="training.onboarding.InstallOnboardingTipsEditorListener"/>
<editorNotificationProvider implementation="training.onboarding.DoNotGenerateTipsNotification"/>
<statistics.counterUsagesCollector
implementationClass="training.onboarding.OnboardingTipsStatistics"/>
</extensions>

View File

@@ -20,19 +20,12 @@ import com.intellij.openapi.components.service
import com.intellij.openapi.editor.Editor
import com.intellij.openapi.editor.event.EditorFactoryEvent
import com.intellij.openapi.editor.event.EditorFactoryListener
import com.intellij.openapi.fileEditor.FileEditor
import com.intellij.openapi.fileEditor.TextEditor
import com.intellij.openapi.project.Project
import com.intellij.openapi.startup.ProjectActivity
import com.intellij.openapi.ui.popup.Balloon
import com.intellij.openapi.util.Key
import com.intellij.openapi.util.registry.Registry
import com.intellij.openapi.vfs.VirtualFile
import com.intellij.ui.EditorNotificationPanel
import com.intellij.ui.EditorNotificationProvider
import com.intellij.ui.EditorNotifications
import com.intellij.ui.GotItTooltip
import com.intellij.util.DocumentUtil
import com.intellij.util.concurrency.annotations.RequiresEdt
import com.intellij.xdebugger.*
import com.intellij.xdebugger.impl.XDebugSessionImpl
@@ -42,17 +35,11 @@ import org.jetbrains.annotations.ApiStatus
import org.jetbrains.annotations.NonNls
import training.learn.LearnBundle
import training.ui.LearningUiUtil
import java.util.function.Function
import javax.swing.JComponent
private var onboardingGenerationNumber: Int
get() = PropertiesComponent.getInstance().getInt("onboarding.generation.number", 0)
set(value) { PropertiesComponent.getInstance().setValue("onboarding.generation.number", value, 0) }
private var onboardingGenerationShowDisableMessage: Boolean
get() = PropertiesComponent.getInstance().getBoolean("onboarding.generation.show.disable.message", true)
set(value) { PropertiesComponent.getInstance().setValue("onboarding.generation.show.disable.message", value, true) }
var Project.filePathWithOnboardingTips: String?
@ApiStatus.Internal
get() = PropertiesComponent.getInstance(this).getValue("onboarding.tips.debug.path")
@@ -64,8 +51,6 @@ val renderedOnboardingTipsEnabled: Boolean
@ApiStatus.Internal
get() = Registry.`is`("doc.onboarding.tips.render")
private val RESET_TOOLTIP_SAMPLE_TEXT = Key.create<String>("reset.tooltip.sample.text")
internal val promotedActions = listOf(IdeActions.ACTION_SEARCH_EVERYWHERE,
IdeActions.ACTION_SHOW_INTENTION_ACTIONS,
IdeActions.ACTION_DEFAULT_RUNNER,
@@ -105,11 +90,7 @@ private fun installTipsInFirstEditor(editor: Editor, project: Project, info: Onb
installDebugListener(project, pathToRunningFile)
installActionListener(project, pathToRunningFile)
val number = onboardingGenerationNumber
if (number != 0 && onboardingGenerationShowDisableMessage) {
RESET_TOOLTIP_SAMPLE_TEXT.set(file, info.simpleSampleText)
}
onboardingGenerationNumber = number + 1
onboardingGenerationNumber++
}
private class InstallOnboardingTooltip : ProjectActivity {
@@ -198,36 +179,3 @@ private fun installDebugListener(project: Project, pathToRunningFile: @NonNls St
}
})
}
private class DoNotGenerateTipsNotification : EditorNotificationProvider {
override fun collectNotificationData(project: Project, file: VirtualFile): Function<in FileEditor, out JComponent?>? {
val simpleSampleText = RESET_TOOLTIP_SAMPLE_TEXT.get(file) ?: return null
return Function { editor ->
EditorNotificationPanel(EditorNotificationPanel.Status.Info).apply {
text = LearnBundle.message("onboarding.propose.to.disable.tips")
createActionLabel(LearnBundle.message("onboarding.disable.tips.action")) {
OnboardingTipsStatistics.logDisableOnboardingTips(project, onboardingGenerationNumber)
disableNotification(file, project)
PropertiesComponent.getInstance().setValue(NewProjectWizardStep.GENERATE_ONBOARDING_TIPS_NAME, false)
project.filePathWithOnboardingTips = null
val document = (editor as? TextEditor)?.editor?.document ?: return@createActionLabel
DocumentUtil.writeInRunUndoTransparentAction {
document.setText(simpleSampleText)
}
}
setCloseAction {
OnboardingTipsStatistics.logHideOnboardingTipsDisableProposal(project, onboardingGenerationNumber)
disableNotification(file, project)
onboardingGenerationShowDisableMessage = false
}
}
}
}
private fun disableNotification(file: VirtualFile, project: Project) {
RESET_TOOLTIP_SAMPLE_TEXT.set(file, null)
EditorNotifications.getInstance(project).updateNotifications(this)
}
}

View File

@@ -9,25 +9,18 @@ import com.intellij.openapi.project.Project
internal object OnboardingTipsStatistics : CounterUsagesCollector() {
override fun getGroup() = GROUP
private val GROUP = EventLogGroup("onboarding.tips.statistics", 4)
private val GROUP = EventLogGroup("onboarding.tips.statistics", 5)
private val projectsWithTipsField = EventFields.Int("projects_with_tips")
private val firstTimeActionUsedField = EventFields.Boolean("first_time_used")
private val promotedActionField = EventFields.String("action_id", promotedActions)
private val onboardingTipsInstalledEvent = GROUP.registerEvent("onboarding.tips.installed", projectsWithTipsField)
private val disableOnboardingTipsEvent = GROUP.registerEvent("tips.disabled", projectsWithTipsField)
private val hideOnboardingTipsDisableProposalEvent = GROUP.registerEvent("hide.disable.proposal", projectsWithTipsField)
private val promotedActionUsedEvent = GROUP.registerEvent("promoted.action.used", promotedActionField, projectsWithTipsField,
firstTimeActionUsedField)
@JvmStatic
fun logOnboardingTipsInstalled(project: Project?, projectsWithTips: Int) = onboardingTipsInstalledEvent.log(project, projectsWithTips)
@JvmStatic
fun logDisableOnboardingTips(project: Project?, projectsWithTips: Int) = disableOnboardingTipsEvent.log(project, projectsWithTips)
@JvmStatic
fun logHideOnboardingTipsDisableProposal(project: Project?, projectsWithTips: Int) = hideOnboardingTipsDisableProposalEvent.log(project,
projectsWithTips)
@JvmStatic
fun logPromotedActionUsedEvent(project: Project?,