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)
}