diff --git a/plugins/ide-startup/importSettings/resources/messages/ImportSettingsBundle.properties b/plugins/ide-startup/importSettings/resources/messages/ImportSettingsBundle.properties index 4d2681ff1b58..7a8c15dfcb65 100644 --- a/plugins/ide-startup/importSettings/resources/messages/ImportSettingsBundle.properties +++ b/plugins/ide-startup/importSettings/resources/messages/ImportSettingsBundle.properties @@ -41,6 +41,9 @@ exit.confirm.title = Settings Import Is in Progress exit.confirm.prompt = Do you want to stop the import?
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 diff --git a/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/importProgress/ImportProgressPage.kt b/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/importProgress/ImportProgressPage.kt index 8e73c093cc08..4450014f5803 100644 --- a/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/importProgress/ImportProgressPage.kt +++ b/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/importProgress/ImportProgressPage.kt @@ -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 }) diff --git a/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/settingChooser/SettingChooserPage.kt b/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/settingChooser/SettingChooserPage.kt index fdf7f70d47e7..d263ebbf13a9 100644 --- a/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/settingChooser/SettingChooserPage.kt +++ b/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/settingChooser/SettingChooserPage.kt @@ -157,8 +157,9 @@ class ConfigurableSettingChooserPage( && 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 diff --git a/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/ui/ImportSettingsController.kt b/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/ui/ImportSettingsController.kt index 9ddfd8372be1..3c7ce319d34a 100644 --- a/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/ui/ImportSettingsController.kt +++ b/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/ui/ImportSettingsController.kt @@ -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 ) - 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) diff --git a/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/ui/WizardController.kt b/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/ui/WizardController.kt index d0115cdae1fa..ef8e3b045bba 100644 --- a/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/ui/WizardController.kt +++ b/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/ui/WizardController.kt @@ -68,7 +68,7 @@ class WizardControllerImpl(dialog: OnboardingDialog, goToKeymapPage(isForwardDirection = false) }, goForwardAction = { ids -> goToInstallPluginPage(ids) - }) + }, continueButtonTextOverride = null) dialog.changePage(page) page.onEnter() } diff --git a/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/wizard/pluginChooser/WizardPluginsPage.kt b/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/wizard/pluginChooser/WizardPluginsPage.kt index 20d339884238..301104743ae1 100644 --- a/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/wizard/pluginChooser/WizardPluginsPage.kt +++ b/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/wizard/pluginChooser/WizardPluginsPage.kt @@ -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) -> Unit) : OnboardingPage { + goForwardAction: (List) -> 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) }