mirror of
https://gitflic.ru/project/openide/openide.git
synced 2026-09-27 10:03:11 +07:00
IJP-1077 Inlay hints: new settings UI
collecting infos from InlayHintsProviderFactory GitOrigin-RevId: 1df3746731cff097653f8d0ef75e8f3e39354625
This commit is contained in:
committed by
intellij-monorepo-bot
parent
1b2e44eb3e
commit
d08717530c
+12
-11
@@ -33,32 +33,33 @@ class InlaySettingsPanel(val project: Project): JPanel(BorderLayout()) {
|
||||
|
||||
init {
|
||||
val settings = InlayHintsSettings.instance()
|
||||
val root = CheckedTreeNode()
|
||||
var nodeToSelect: CheckedTreeNode? = null
|
||||
val groups = InlayHintsProviderExtension.inlayProviderName.extensionList.groupBy { it.instance.groupId }.mapValues {
|
||||
it.value.map { point ->
|
||||
NewInlayProviderSettingsModel(point.instance.withSettings(Language.findLanguageByID(point.language)!!, settings),
|
||||
settings) as InlayProviderSettingsModel
|
||||
val providerInfos = InlayHintsProviderFactory.EP.extensionList.flatMap { it.getProvidersInfo(project) }
|
||||
val groups = providerInfos.groupBy { it.provider.groupId }.mapValues {
|
||||
it.value.map { info ->
|
||||
NewInlayProviderSettingsModel(info.provider.withSettings(info.language, settings), settings) as InlayProviderSettingsModel
|
||||
}
|
||||
}.toMutableMap()
|
||||
val lastId = settings.getLastViewedProviderId()
|
||||
val paramLanguages = PARAMETER_NAME_HINTS_EP.extensionList.mapNotNull {
|
||||
val parameterModels = PARAMETER_NAME_HINTS_EP.extensionList.map {
|
||||
ParameterInlayProviderSettingsModel(it.instance, Language.findLanguageByID(it.language)!!)
|
||||
}
|
||||
groups[PARAMETERS_GROUP] = paramLanguages
|
||||
groups[PARAMETERS_GROUP] = parameterModels
|
||||
val sortedMap = groups.toSortedMap(Comparator.comparing { sortedGroups.indexOf(it) })
|
||||
|
||||
val root = CheckedTreeNode()
|
||||
val lastSelected = settings.getLastViewedProviderId()
|
||||
var nodeToSelect: CheckedTreeNode? = null
|
||||
for (group in sortedMap) {
|
||||
val groupNode = CheckedTreeNode(ApplicationBundle.message("settings.hints.group." + group.key))
|
||||
root.add(groupNode)
|
||||
for (lang in group.value.groupBy { it.language }) {
|
||||
if (lang.value.size == 1) {
|
||||
nodeToSelect = addModelNode(lang.value.first(), groupNode, lastId, nodeToSelect)
|
||||
nodeToSelect = addModelNode(lang.value.first(), groupNode, lastSelected, nodeToSelect)
|
||||
}
|
||||
else {
|
||||
val langNode = CheckedTreeNode(lang.key)
|
||||
groupNode.add(langNode)
|
||||
lang.value.forEach {
|
||||
nodeToSelect = addModelNode(it, langNode, lastId, nodeToSelect)
|
||||
nodeToSelect = addModelNode(it, langNode, lastSelected, nodeToSelect)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user