(RIDER-107439) Onboarding Wizard: custom labels for hybrid flow

GitOrigin-RevId: 23f8497c4ce0720389bbcd71f7b0f56ce83f748d
This commit is contained in:
Ivan Migalev
2024-07-12 20:11:02 +02:00
committed by intellij-monorepo-bot
parent eb824e8c4c
commit 35da3fabfc
6 changed files with 38 additions and 20 deletions

View File

@@ -41,6 +41,9 @@ exit.confirm.title = Settings Import Is in Progress
exit.confirm.prompt = Do you want to stop the import?<br>If you stop it now, only part of the settings will be imported.
stop.import = Stop Import
onboarding.wizard.finish-button=Finish
onboarding.wizard.getting-ready=Getting Ready\u2026
plugin-installation.progress.text-with-details={0} / {1}
plugin-installation.progress.determining-plugins-to-download=Determining plugins to download

View File

@@ -12,6 +12,7 @@ import com.intellij.ide.startup.importSettings.data.DialogImportData
import com.intellij.ide.startup.importSettings.data.ImportFromProduct
import com.intellij.openapi.rd.createLifetime
import com.intellij.openapi.ui.MessageDialogBuilder
import com.intellij.openapi.util.NlsContexts.DialogTitle
import com.intellij.platform.ide.bootstrap.StartupWizardStage
import com.intellij.ui.components.panels.VerticalLayout
import com.intellij.ui.scale.JBUIScale
@@ -22,7 +23,11 @@ import com.jetbrains.rd.util.lifetime.intersect
import java.awt.*
import javax.swing.*
class ImportProgressPage(importFromProduct: DialogImportData, controller: ImportSettingsController) : OnboardingPage {
class ImportProgressPage(
importFromProduct: DialogImportData,
controller: ImportSettingsController,
importTitleOverride: @DialogTitle String?
) : OnboardingPage {
override val stage = StartupWizardStage.ImportProgressPage
@@ -40,7 +45,7 @@ class ImportProgressPage(importFromProduct: DialogImportData, controller: Import
private val panel = JPanel(VerticalLayout(JBUI.scale(8))).apply {
add(JPanel(VerticalLayout(JBUI.scale(8))).apply {
add(JLabel(ImportSettingsBundle.message("import.settings.title")).apply {
add(JLabel(importTitleOverride ?: ImportSettingsBundle.message("import.settings.title")).apply {
font = JBFont.h1()
horizontalAlignment = SwingConstants.CENTER
})

View File

@@ -157,8 +157,9 @@ class ConfigurableSettingChooserPage<T : BaseService>(
&& controller.shouldShowFeaturedPluginsPage(product.id, dataForSaves, productService)) {
controller.goToFeaturedPluginsPage(provider, productService, product, dataForSaves)
} else {
val importSettings = productService.importSettings(product.id, DataToApply(dataForSaves, emptyList()))
controller.goToProgressPage(importSettings)
val dataToApply = DataToApply(dataForSaves, emptyList())
val importSettings = productService.importSettings(product.id, dataToApply)
controller.goToProgressPage(importSettings, dataToApply)
}
}
@@ -205,10 +206,10 @@ class SyncSettingChooserPage(val provider: SyncActionsDataProvider,
private val importOnceButton = controller.createButton(ImportSettingsBundle.message("import.settings.sync.import.once")) {
val syncSettings = provider.productService.importSyncSettings()
controller.goToProgressPage(syncSettings)
controller.goToProgressPage(syncSettings, DataToApply(emptyList(), emptyList()))
}
private val syncButton = controller.createDefaultButton(ImportSettingsBundle.message("import.settings.sync.ok")) {
controller.goToProgressPage(provider.productService.syncSettings())
controller.goToProgressPage(provider.productService.syncSettings(), DataToApply(emptyList(), emptyList()))
}
override val buttons: List<JButton>

View File

@@ -1,6 +1,7 @@
// 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.startup.importSettings.chooser.ui
import com.intellij.ide.startup.importSettings.ImportSettingsBundle
import com.intellij.ide.startup.importSettings.chooser.importProgress.ImportProgressPage
import com.intellij.ide.startup.importSettings.chooser.productChooser.ProductChooserPage
import com.intellij.ide.startup.importSettings.chooser.settingChooser.SettingChooserPage
@@ -27,7 +28,8 @@ interface ImportSettingsController : BaseController {
fun goToProductChooserPage()
/**
* Whether we can show the page in the current configuration at all. E.g., in Rider we can, in others we can't.
* Whether we can show the page in the current configuration at all. E.g., in Rider we can (but only if there are plugins to install),
* in others we can't.
*/
fun canShowFeaturedPluginsPage(origin: SettingsImportOrigin): Boolean
@@ -47,7 +49,7 @@ interface ImportSettingsController : BaseController {
product: Product,
dataForSave: List<DataForSave>
)
fun goToProgressPage(importFromProduct: DialogImportData)
fun goToProgressPage(importFromProduct: DialogImportData, dataToApply: DataToApply)
fun skipImport()
@@ -124,15 +126,20 @@ private class ImportSettingsControllerImpl(dialog: OnboardingDialog, override va
goToSettingsPage(provider, product)
},
goForwardAction = { featuredPluginIds ->
val importSettings = productService.importSettings(product.id, DataToApply(dataForSave, featuredPluginIds))
goToProgressPage(importSettings)
})
val dataToApply = DataToApply(dataForSave, featuredPluginIds)
val importSettings = productService.importSettings(product.id, dataToApply)
goToProgressPage(importSettings, dataToApply)
},
continueButtonTextOverride = ImportSettingsBundle.message("onboarding.wizard.finish-button"))
ImportSettingsEventsCollector.featuredPluginsPageShown()
dialog.changePage(page)
}
override fun goToProgressPage(importFromProduct: DialogImportData) {
val page = ImportProgressPage(importFromProduct, this)
override fun goToProgressPage(importFromProduct: DialogImportData, dataToApply: DataToApply) {
val dialogTitleOverride = if (dataToApply.featuredPluginIds.isNotEmpty())
ImportSettingsBundle.message("onboarding.wizard.getting-ready")
else null
val page = ImportProgressPage(importFromProduct, this, dialogTitleOverride)
Disposer.tryRegister(dialog.disposable, page)
ImportSettingsEventsCollector.importProgressPageShown()
dialog.changePage(page)

View File

@@ -68,7 +68,7 @@ class WizardControllerImpl(dialog: OnboardingDialog,
goToKeymapPage(isForwardDirection = false)
}, goForwardAction = { ids ->
goToInstallPluginPage(ids)
})
}, continueButtonTextOverride = null)
dialog.changePage(page)
page.onEnter()
}

View File

@@ -4,6 +4,7 @@ package com.intellij.ide.startup.importSettings.wizard.pluginChooser
import com.intellij.ide.startup.importSettings.ImportSettingsBundle
import com.intellij.ide.startup.importSettings.chooser.ui.*
import com.intellij.ide.startup.importSettings.data.PluginService
import com.intellij.openapi.util.NlsActions.ActionText
import com.intellij.openapi.util.SystemInfo
import com.intellij.platform.ide.bootstrap.StartupWizardStage
import com.intellij.ui.JBColor
@@ -16,12 +17,13 @@ import java.awt.Component
import java.awt.Dimension
import javax.swing.*
class WizardPluginsPage(
val controller: BaseController,
private val pluginService: PluginService,
goBackAction: () -> Unit,
goForwardAction: (List<String>) -> Unit) : OnboardingPage {
goForwardAction: (List<String>) -> Unit,
private val continueButtonTextOverride: @ActionText String?
) : OnboardingPage {
override val stage: StartupWizardStage = StartupWizardStage.WizardPluginPage
@@ -43,15 +45,15 @@ class WizardPluginsPage(
when(selected.size) {
0 -> {
leftLabel.text = ImportSettingsBundle.message("plugins.page.choose.counter.no")
continueAction.text = ImportSettingsBundle.message("plugins.page.ok.button.continue.without")
continueAction.text = continueButtonTextOverride ?: ImportSettingsBundle.message("plugins.page.ok.button.continue.without")
}
1 -> {
leftLabel.text = ImportSettingsBundle.message("plugins.page.choose.counter.one")
continueAction.text = ImportSettingsBundle.message("plugins.page.ok.button.install")
continueAction.text = continueButtonTextOverride ?: ImportSettingsBundle.message("plugins.page.ok.button.install")
}
else -> {
leftLabel.text = ImportSettingsBundle.message("plugins.page.choose.counter.multiple", selected.size)
continueAction.text = ImportSettingsBundle.message("plugins.page.ok.button.install")
continueAction.text = continueButtonTextOverride ?: ImportSettingsBundle.message("plugins.page.ok.button.install")
}
}
}
@@ -93,7 +95,7 @@ class WizardPluginsPage(
private val backAction = controller.createButton(ImportSettingsBundle.message("import.settings.back"), goBackAction)
private val continueAction = controller.createDefaultButton(ImportSettingsBundle.message("plugins.page.ok.button.continue.without")) {
private val continueAction = controller.createDefaultButton(continueButtonTextOverride ?: ImportSettingsBundle.message("plugins.page.ok.button.continue.without")) {
val ids = getSelected().map { it.plugin.id }.toList()
goForwardAction(ids)
}