mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-03-22 15:19:59 +07:00
(RIDER-107439) Onboarding Wizard: custom labels for hybrid flow
GitOrigin-RevId: 23f8497c4ce0720389bbcd71f7b0f56ce83f748d
This commit is contained in:
committed by
intellij-monorepo-bot
parent
eb824e8c4c
commit
35da3fabfc
@@ -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
|
||||
|
||||
|
||||
@@ -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
|
||||
})
|
||||
|
||||
@@ -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>
|
||||
|
||||
@@ -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)
|
||||
|
||||
@@ -68,7 +68,7 @@ class WizardControllerImpl(dialog: OnboardingDialog,
|
||||
goToKeymapPage(isForwardDirection = false)
|
||||
}, goForwardAction = { ids ->
|
||||
goToInstallPluginPage(ids)
|
||||
})
|
||||
}, continueButtonTextOverride = null)
|
||||
dialog.changePage(page)
|
||||
page.onEnter()
|
||||
}
|
||||
|
||||
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user