From 7cf046b781e173c5441bee3c18d0c1cc2499d2c4 Mon Sep 17 00:00:00 2001 From: "Nikita.Ashihmin" Date: Sat, 31 Aug 2024 18:37:44 +0400 Subject: [PATCH] PY-58973 Packaging(fix): add sdk name to installed table header GitOrigin-RevId: 709574d177ae7a9adad3b89ec83c010301c89853 --- .../packaging/toolwindow/PyPackagingTablesView.kt | 15 +++++++++------ .../toolwindow/PyPackagingToolWindowPanel.kt | 5 +++-- .../toolwindow/PyPackagingToolWindowService.kt | 2 +- .../packages/PyPackagesListController.kt | 5 +++-- .../toolwindow/packages/PyPackagingTableGroup.kt | 11 +++++++++-- 5 files changed, 25 insertions(+), 13 deletions(-) diff --git a/python/src/com/jetbrains/python/packaging/toolwindow/PyPackagingTablesView.kt b/python/src/com/jetbrains/python/packaging/toolwindow/PyPackagingTablesView.kt index 8ff3cf17232c..badfe8496b87 100644 --- a/python/src/com/jetbrains/python/packaging/toolwindow/PyPackagingTablesView.kt +++ b/python/src/com/jetbrains/python/packaging/toolwindow/PyPackagingTablesView.kt @@ -3,6 +3,7 @@ package com.jetbrains.python.packaging.toolwindow import com.intellij.icons.AllIcons import com.intellij.openapi.project.Project +import com.intellij.openapi.projectRoots.Sdk import com.intellij.ui.JBColor import com.jetbrains.python.PyBundle.message import com.jetbrains.python.packaging.repository.InstalledPyPackagedRepository @@ -16,9 +17,11 @@ import javax.swing.JLabel import javax.swing.JPanel import javax.swing.JTable -class PyPackagingTablesView(private val project: Project, - private val container: JPanel, - private val controller: PyPackagingToolWindowPanel) { +class PyPackagingTablesView( + private val project: Project, + private val container: JPanel, + private val controller: PyPackagingToolWindowPanel, +) { private val repositories: MutableList = mutableListOf() private val installedPackages = PyPackagingTableGroup( InstalledPyPackagedRepository(), @@ -48,11 +51,11 @@ class PyPackagingTablesView(private val project: Project, ?.let { selectPackage(it.second) } } - fun resetSearch(installed: List, repoData: List) { + fun resetSearch(installed: List, repoData: List, currentSdk: Sdk?) { updatePackages(installed, repoData) installedPackages.expand() - installedPackages.updateHeaderText(null) + installedPackages.setSdkToHeader(currentSdk?.name) repositories.forEach { it.collapse() @@ -150,7 +153,7 @@ class PyPackagingTablesView(private val project: Project, installedPackages.table -> repositories.firstOrNull() else -> { val currentIndex = repositories.indexOfFirst { it.table == currentTable } - if (currentIndex + 1 != repositories.size) repositories[currentIndex + 1] + if (currentIndex + 1 != repositories.size) repositories[currentIndex + 1] else return } } diff --git a/python/src/com/jetbrains/python/packaging/toolwindow/PyPackagingToolWindowPanel.kt b/python/src/com/jetbrains/python/packaging/toolwindow/PyPackagingToolWindowPanel.kt index 158098c96f1f..5e0d03f21b77 100644 --- a/python/src/com/jetbrains/python/packaging/toolwindow/PyPackagingToolWindowPanel.kt +++ b/python/src/com/jetbrains/python/packaging/toolwindow/PyPackagingToolWindowPanel.kt @@ -11,6 +11,7 @@ import com.intellij.openapi.components.service import com.intellij.openapi.project.DumbAwareAction import com.intellij.openapi.project.Project import com.intellij.openapi.project.modules +import com.intellij.openapi.projectRoots.Sdk import com.intellij.openapi.ui.SimpleToolWindowPanel import com.intellij.openapi.util.Disposer import com.intellij.openapi.wm.ToolWindowManager @@ -170,8 +171,8 @@ class PyPackagingToolWindowPanel(private val project: Project) : SimpleToolWindo packageListController.showSearchResult(installed, repoData) } - fun resetSearch(installed: List, repos: List) { - packageListController.resetSearch(installed, repos) + fun resetSearch(installed: List, repos: List, currentSdk: Sdk?) { + packageListController.resetSearch(installed, repos, currentSdk) } diff --git a/python/src/com/jetbrains/python/packaging/toolwindow/PyPackagingToolWindowService.kt b/python/src/com/jetbrains/python/packaging/toolwindow/PyPackagingToolWindowService.kt index 266d1583788a..abda8fc49c1e 100644 --- a/python/src/com/jetbrains/python/packaging/toolwindow/PyPackagingToolWindowService.kt +++ b/python/src/com/jetbrains/python/packaging/toolwindow/PyPackagingToolWindowService.kt @@ -98,7 +98,7 @@ class PyPackagingToolWindowService(val project: Project, val serviceScope: Corou PyPackagesViewData(repository, shownPackages, moreItems = packages.size - PACKAGES_LIMIT) }.toList() - toolWindowPanel?.resetSearch(installedPackages.values.toList(), packagesByRepository + invalidRepositories) + toolWindowPanel?.resetSearch(installedPackages.values.toList(), packagesByRepository + invalidRepositories, currentSdk) prevSelected?.name?.let { toolWindowPanel?.selectPackageName(it) } } } diff --git a/python/src/com/jetbrains/python/packaging/toolwindow/packages/PyPackagesListController.kt b/python/src/com/jetbrains/python/packaging/toolwindow/packages/PyPackagesListController.kt index d7bf5d90fd59..9b5150e7d2d9 100644 --- a/python/src/com/jetbrains/python/packaging/toolwindow/packages/PyPackagesListController.kt +++ b/python/src/com/jetbrains/python/packaging/toolwindow/packages/PyPackagesListController.kt @@ -3,6 +3,7 @@ package com.jetbrains.python.packaging.toolwindow.packages import com.intellij.openapi.Disposable import com.intellij.openapi.project.Project +import com.intellij.openapi.projectRoots.Sdk import com.intellij.openapi.ui.SimpleToolWindowPanel.LEFT_ALIGNMENT import com.intellij.ui.ScrollPaneFactory import com.intellij.util.ui.UIUtil @@ -31,8 +32,8 @@ class PyPackagesListController(val project: Project, val controller: PyPackaging tablesView.showSearchResult(installed, repoData) } - fun resetSearch(installed: List, repos: List) { - tablesView.resetSearch(installed, repos) + fun resetSearch(installed: List, repos: List, currentSdk: Sdk?) { + tablesView.resetSearch(installed, repos, currentSdk) } fun selectPackage(name: String) { diff --git a/python/src/com/jetbrains/python/packaging/toolwindow/packages/PyPackagingTableGroup.kt b/python/src/com/jetbrains/python/packaging/toolwindow/packages/PyPackagingTableGroup.kt index 00b629cfefea..a373a131d766 100644 --- a/python/src/com/jetbrains/python/packaging/toolwindow/packages/PyPackagingTableGroup.kt +++ b/python/src/com/jetbrains/python/packaging/toolwindow/packages/PyPackagingTableGroup.kt @@ -3,12 +3,13 @@ package com.jetbrains.python.packaging.toolwindow.packages import com.intellij.icons.AllIcons import com.intellij.openapi.util.NlsSafe +import com.intellij.ui.components.JBLabel import com.jetbrains.python.PyBundle import com.jetbrains.python.packaging.repository.PyPackageRepository import com.jetbrains.python.packaging.toolwindow.model.DisplayablePackage import com.jetbrains.python.packaging.toolwindow.packages.table.PyPackagesTable import com.jetbrains.python.packaging.toolwindow.ui.PyPackagesUiComponents -import javax.swing.JLabel +import org.jetbrains.annotations.Nls import javax.swing.JPanel internal class PyPackagingTableGroup(val repository: PyPackageRepository, val table: PyPackagesTable) { @@ -16,7 +17,7 @@ internal class PyPackagingTableGroup(val repository: PyPackageRepository, val ta val name: String = repository.name!! private var expanded = false - private val label = JLabel(name).apply { icon = AllIcons.General.ArrowDown } + private val label = JBLabel(name).apply { icon = AllIcons.General.ArrowDown } private val header: JPanel = PyPackagesUiComponents.headerPanel(label, table) private var itemsCount: Int? = null @@ -44,6 +45,12 @@ internal class PyPackagingTableGroup(val repository: PyPackageRepository, val ta label.text = if (itemsCount == null) name else PyBundle.message("python.toolwindow.packages.custom.repo.searched", name, itemsCount) } + fun setSdkToHeader(@Nls sdkName: String?) { + itemsCount = null + label.text = name + " (${sdkName})" + } + + fun addTo(panel: JPanel) { panel.add(header) panel.add(table)