diff --git a/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/productChooser/ConfigAction.kt b/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/productChooser/ConfigAction.kt index f68dec891065..e97b6cabee97 100644 --- a/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/productChooser/ConfigAction.kt +++ b/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/productChooser/ConfigAction.kt @@ -27,7 +27,6 @@ class ConfigAction(val controller: ImportSettingsController) : DumbAwareAction() } override fun actionPerformed(e: AnActionEvent) { - //TODO implement - //callback(JBrActionsDataProvider.getInstance(), config) + controller.configChosen() } } \ No newline at end of file diff --git a/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/productChooser/OtherOptions.kt b/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/productChooser/OtherOptions.kt index 041516275653..73e819001308 100644 --- a/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/productChooser/OtherOptions.kt +++ b/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/productChooser/OtherOptions.kt @@ -9,9 +9,12 @@ import com.intellij.ide.ui.laf.darcula.ui.OnboardingDialogButtons import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.actionSystem.AnActionEvent import com.intellij.openapi.actionSystem.Separator +import com.intellij.ui.components.ActionLink +import com.intellij.util.ui.JBUI import org.jetbrains.annotations.Nls import javax.swing.JButton import javax.swing.JComponent +import javax.swing.SwingConstants class OtherOptions(private val controller: ImportSettingsController) : ProductChooserAction() { @@ -43,7 +46,7 @@ class OtherOptions(private val controller: ImportSettingsController) : ProductCh sync = addActionList(syncProducts, syncDataProvider, ImportSettingsBundle.message("other.options.sub.title.setting.sync")) } - sync?.let { +/* sync?.let { if (it.isNotEmpty()) { arr.addAll(it) } @@ -53,7 +56,7 @@ class OtherOptions(private val controller: ImportSettingsController) : ProductCh if (it.isNotEmpty()) { arr.addAll(it) } - } + }*/ if (arr.isNotEmpty()) { arr.add(Separator()) @@ -87,8 +90,10 @@ class OtherOptions(private val controller: ImportSettingsController) : ProductCh } override fun createButton(): JButton { - return OnboardingDialogButtons.createLinkButton().apply { - icon = AllIcons.General.LinkDropTriangle + return ActionLink().apply { + setHorizontalTextPosition(SwingConstants.LEFT) + setForeground(JBUI.CurrentTheme.Link.Foreground.ENABLED) + iconTextGap = 0 } } diff --git a/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/productChooser/ProductChooserAction.kt b/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/productChooser/ProductChooserAction.kt index fd136575c8a1..dadcbe079081 100644 --- a/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/productChooser/ProductChooserAction.kt +++ b/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/productChooser/ProductChooserAction.kt @@ -13,8 +13,8 @@ import com.intellij.openapi.ui.popup.ListPopup import com.intellij.openapi.ui.popup.ListPopupStep import com.intellij.ui.awt.RelativePoint import com.intellij.ui.popup.list.ListPopupImpl -import com.intellij.ui.util.preferredWidth import com.intellij.util.ui.JBUI +import java.awt.Dimension import java.awt.Point import javax.swing.JComponent import javax.swing.ListCellRenderer @@ -67,7 +67,6 @@ abstract class ProductChooserAction : ChooseProductActionButton(null) { /* JBPopupFactory.getInstance().createListPopup(step)*/ - val result = object : ListPopupImpl(null, step) { override fun getListElementRenderer(): ListCellRenderer<*> { return renderer @@ -75,13 +74,12 @@ abstract class ProductChooserAction : ChooseProductActionButton(null) { override fun createPopupComponent(content: JComponent?): JComponent { val popupComponent = super.createPopupComponent(content) - popupComponent.preferredWidth = JBUI.scale(UiUtils.DEFAULT_BUTTON_WIDTH) + popupComponent.preferredSize = Dimension(JBUI.scale (UiUtils.DEFAULT_BUTTON_WIDTH), popupComponent.preferredSize.height) return popupComponent } } - result.setRequestFocus(false) return result } diff --git a/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/productChooser/ProductChooserPage.kt b/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/productChooser/ProductChooserPage.kt index ac9a8ccb4237..0178ec4c9ec3 100644 --- a/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/productChooser/ProductChooserPage.kt +++ b/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/productChooser/ProductChooserPage.kt @@ -9,6 +9,7 @@ import com.intellij.ide.startup.importSettings.chooser.ui.UiUtils import com.intellij.ide.startup.importSettings.data.SettingsService import com.intellij.openapi.actionSystem.ActionManager import com.intellij.openapi.actionSystem.ActionPlaces +import com.intellij.openapi.actionSystem.ActionToolbar import com.intellij.openapi.actionSystem.DefaultActionGroup import com.intellij.openapi.actionSystem.impl.ActionToolbarImpl import com.intellij.openapi.rd.createLifetime @@ -69,6 +70,7 @@ class ProductChooserPage(val controller: ImportSettingsController) : OnboardingP JBUI.size(UiUtils.DEFAULT_BUTTON_WIDTH, UiUtils.DEFAULT_BUTTON_HEIGHT) } setMiniMode(false) + layoutPolicy = ActionToolbar.NOWRAP_LAYOUT_POLICY } } act.targetComponent = pane @@ -91,7 +93,7 @@ class ProductChooserPage(val controller: ImportSettingsController) : OnboardingP add(accountLabel, BorderLayout.WEST) add(at.component, BorderLayout.EAST) - border = JBUI.Borders.empty(0, 20, 10, 0) + border = JBUI.Borders.empty(0, 20, 10, 7) preferredSize = Dimension(preferredSize.width, JBUI.scale(47)) } diff --git a/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/productChooser/ProductChooserRenderer.kt b/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/productChooser/ProductChooserRenderer.kt index 0a7df299e422..6e6bbf5c0af1 100644 --- a/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/productChooser/ProductChooserRenderer.kt +++ b/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/productChooser/ProductChooserRenderer.kt @@ -3,6 +3,7 @@ package com.intellij.ide.startup.importSettings.chooser.productChooser import com.intellij.ide.plugins.newui.ListPluginComponent import com.intellij.ide.startup.importSettings.chooser.settingChooser.SettingChooserItemAction +import com.intellij.ide.startup.importSettings.chooser.ui.UiUtils import com.intellij.openapi.actionSystem.AnAction import com.intellij.openapi.ui.popup.ListSeparator import com.intellij.openapi.ui.popup.util.PopupUtil @@ -21,6 +22,7 @@ import com.intellij.util.ui.UIUtil import org.jetbrains.annotations.Nls import java.awt.BorderLayout import java.awt.Component +import java.awt.Dimension import javax.swing.* class ProductChooserRenderer : ListCellRenderer { 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 26e390f873e8..4ff20f26a122 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 @@ -24,6 +24,8 @@ interface ImportSettingsController : BaseController { fun skipImport() + fun configChosen() + } private class ImportSettingsControllerImpl(dialog: OnboardingDialog, override val skipImportAction: () -> Unit) : ImportSettingsController, BaseControllerImpl(dialog) { @@ -57,9 +59,11 @@ private class ImportSettingsControllerImpl(dialog: OnboardingDialog, override va dialog.changePage(page) } - - override fun skipImport() { dialog.dialogClose() } + + override fun configChosen() { + SettingsService.getInstance().configChosen() + } } \ No newline at end of file diff --git a/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/ui/RoundedPanel.kt b/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/ui/RoundedPanel.kt index 1c09c02e86ba..b2afed403f34 100644 --- a/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/ui/RoundedPanel.kt +++ b/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/chooser/ui/RoundedPanel.kt @@ -11,7 +11,7 @@ import javax.swing.JPanel import javax.swing.border.Border import kotlin.math.max -class RoundedPanel private constructor(val unscaledRadius: Int = RADIUS) : JPanel(BorderLayout()) { +class RoundedPanel private constructor(unscaledRadius: Int = RADIUS) : JPanel(BorderLayout()) { companion object { const val RADIUS = 20 const val THICKNESS = 1 diff --git a/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/data/MockData.kt b/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/data/MockData.kt index b890bb0a905f..fd023358de78 100644 --- a/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/data/MockData.kt +++ b/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/data/MockData.kt @@ -2,6 +2,8 @@ package com.intellij.ide.startup.importSettings.data import com.intellij.icons.AllIcons +import com.intellij.ide.startup.importSettings.chooser.ui.OnboardingController +import com.intellij.ide.startup.importSettings.chooser.ui.OnboardingDialog import com.intellij.openapi.diagnostic.logger import com.jetbrains.rd.util.lifetime.Lifetime import com.jetbrains.rd.util.reactive.IProperty @@ -18,8 +20,11 @@ import kotlin.random.Random internal const val IMPORT_SERVICE = "ImportService" -class TestJbService : JbService { +class TestJbService private constructor(): JbService { companion object { + private val service = TestJbService() + + fun getInstance() = service private val LOG = logger() @@ -197,6 +202,9 @@ class TestJbService : JbService { } } } + fun configChosen() { + OnboardingController.getInstance().startWizard(isModal = false) + } override fun hasDataToImport() = true @@ -213,6 +221,7 @@ class TestJbService : JbService { return old } + override fun getSettings(itemId: String): List { return if (itemId == main.id) settings1 else settings } diff --git a/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/data/SettingsService.kt b/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/data/SettingsService.kt index ecb582fd8367..0a82fdc049e7 100644 --- a/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/data/SettingsService.kt +++ b/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/data/SettingsService.kt @@ -45,6 +45,8 @@ interface SettingsService { val doClose: ISignal + fun configChosen() + fun isLoggedIn(): Boolean = jbAccount.value != null } @@ -57,7 +59,7 @@ class SettingsServiceImpl : SettingsService, Disposable.Default { else SyncServiceImpl.getInstance() override fun getJbService() = - if (shouldUseMockData) TestJbService() + if (shouldUseMockData) TestJbService.getInstance() else JbImportServiceImpl.getInstance() override fun getExternalService(): ExternalService = @@ -80,6 +82,11 @@ class SettingsServiceImpl : SettingsService, Disposable.Default { override val jbAccount = Property(null) override val doClose = Signal() + override fun configChosen() { + if (shouldUseMockData) { + TestJbService.getInstance().configChosen() + } + } private fun unloggedSyncHide(): IPropertyView { fun getValue(): Boolean = Registry.`is`("import.setting.unlogged.sync.hide") @@ -95,7 +102,8 @@ class SettingsServiceImpl : SettingsService, Disposable.Default { } } - override val isSyncEnabled = Property(shouldUseMockData) //jbAccount.compose(unloggedSyncHide()) { account, reg -> !reg || account != null } + override val isSyncEnabled = Property( + shouldUseMockData) //jbAccount.compose(unloggedSyncHide()) { account, reg -> !reg || account != null } init { if (shouldUseMockData) { diff --git a/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/wizard/themeChooser/ThemeChooserPage.kt b/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/wizard/themeChooser/ThemeChooserPage.kt index 204368c2aa5a..669e2aa8d2bb 100644 --- a/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/wizard/themeChooser/ThemeChooserPage.kt +++ b/plugins/ide-startup/importSettings/src/com/intellij/ide/startup/importSettings/wizard/themeChooser/ThemeChooserPage.kt @@ -64,6 +64,7 @@ class ThemeChooserPage(val controller: WizardController) : OnboardingPage { val centralPane = JPanel(BorderLayout(0, 0)).apply { val pane = panel { row { + @Suppress("DialogTitleCapitalization") label(ImportSettingsBundle.message("theme.page.title")).applyToComponent { font = UiUtils.HEADER_FONT border = UiUtils.HEADER_BORDER