fix: non-scrollable ZLS settings

This commit is contained in:
FalsePattern 2025-04-16 00:17:02 +02:00
parent 8a7ca04168
commit 91747319aa
Signed by: falsepattern
GPG key ID: E930CDEC50C50E23
5 changed files with 33 additions and 10 deletions

View file

@ -17,6 +17,11 @@ Changelog structure reference:
## [Unreleased] ## [Unreleased]
### Fixed
- Project
- ZLS settings not scrollable in the language server list
## [25.0.1] ## [25.0.1]
### Fixed ### Fixed

View file

@ -25,6 +25,7 @@ package com.falsepattern.zigbrains.project.toolchain.base
import com.falsepattern.zigbrains.project.settings.ZigProjectConfigurationProvider import com.falsepattern.zigbrains.project.settings.ZigProjectConfigurationProvider
import com.falsepattern.zigbrains.project.toolchain.ui.ImmutableElementPanel import com.falsepattern.zigbrains.project.toolchain.ui.ImmutableElementPanel
import com.falsepattern.zigbrains.project.toolchain.zigToolchainList import com.falsepattern.zigbrains.project.toolchain.zigToolchainList
import com.falsepattern.zigbrains.shared.ui.UUIDComboBoxDriver.Companion.wrapModal
import com.intellij.openapi.ui.NamedConfigurable import com.intellij.openapi.ui.NamedConfigurable
import com.intellij.openapi.util.Key import com.intellij.openapi.util.Key
import com.intellij.openapi.util.NlsContexts import com.intellij.openapi.util.NlsContexts
@ -37,7 +38,7 @@ abstract class ZigToolchainConfigurable<T: ZigToolchain>(
val uuid: UUID, val uuid: UUID,
tc: T, tc: T,
val data: ZigProjectConfigurationProvider.IUserDataBridge?, val data: ZigProjectConfigurationProvider.IUserDataBridge?,
val modal: Boolean private val modal: Boolean
): NamedConfigurable<UUID>() { ): NamedConfigurable<UUID>() {
var toolchain: T = tc var toolchain: T = tc
set(value) { set(value) {
@ -64,7 +65,7 @@ abstract class ZigToolchainConfigurable<T: ZigToolchain>(
views.forEach { it.attach(this@panel) } views.forEach { it.attach(this@panel) }
}.withMinimumWidth(20) }.withMinimumWidth(20)
views.forEach { it.reset(toolchain) } views.forEach { it.reset(toolchain) }
return p return wrapModal(p, modal)
} }
override fun getEditableObject(): UUID? { override fun getEditableObject(): UUID? {

View file

@ -24,8 +24,11 @@ package com.falsepattern.zigbrains.shared.ui
import com.falsepattern.zigbrains.shared.UUIDMapSerializable import com.falsepattern.zigbrains.shared.UUIDMapSerializable
import com.intellij.openapi.ui.NamedConfigurable import com.intellij.openapi.ui.NamedConfigurable
import com.intellij.ui.components.JBScrollPane
import java.awt.Component import java.awt.Component
import java.awt.Dimension
import java.util.* import java.util.*
import javax.swing.JComponent
interface UUIDComboBoxDriver<T> { interface UUIDComboBoxDriver<T> {
val theMap: UUIDMapSerializable.Converting<T, *, *> val theMap: UUIDMapSerializable.Converting<T, *, *>
@ -34,4 +37,15 @@ interface UUIDComboBoxDriver<T> {
fun createComboBox(model: ZBModel<T>): ZBComboBox<T> fun createComboBox(model: ZBModel<T>): ZBComboBox<T>
suspend fun resolvePseudo(context: Component, elem: ListElem.Pseudo<T>): UUID? suspend fun resolvePseudo(context: Component, elem: ListElem.Pseudo<T>): UUID?
fun createNamedConfigurable(uuid: UUID, elem: T): NamedConfigurable<UUID> fun createNamedConfigurable(uuid: UUID, elem: T): NamedConfigurable<UUID>
companion object {
fun wrapModal(component: JComponent, modal: Boolean): JComponent {
if (modal) {
component.preferredSize = Dimension(640, 480)
return component
} else {
return JBScrollPane(component)
}
}
}
} }

View file

@ -22,14 +22,14 @@
package com.falsepattern.zigbrains.lsp.zls package com.falsepattern.zigbrains.lsp.zls
import com.falsepattern.zigbrains.shared.ui.UUIDComboBoxDriver.Companion.wrapModal
import com.intellij.openapi.ui.NamedConfigurable import com.intellij.openapi.ui.NamedConfigurable
import com.intellij.openapi.util.NlsContexts import com.intellij.openapi.util.NlsContexts
import com.intellij.ui.dsl.builder.panel import com.intellij.ui.dsl.builder.panel
import java.awt.Dimension
import java.util.* import java.util.*
import javax.swing.JComponent import javax.swing.JComponent
class ZLSConfigurable(val uuid: UUID, zls: ZLSVersion): NamedConfigurable<UUID>() { class ZLSConfigurable(val uuid: UUID, zls: ZLSVersion, private val modal: Boolean): NamedConfigurable<UUID>() {
var zls: ZLSVersion = zls var zls: ZLSVersion = zls
set(value) { set(value) {
zlsInstallations[uuid] = value zlsInstallations[uuid] = value
@ -59,8 +59,7 @@ class ZLSConfigurable(val uuid: UUID, zls: ZLSVersion): NamedConfigurable<UUID>(
val p = panel { val p = panel {
view.attach(this@panel) view.attach(this@panel)
} }
p.preferredSize = Dimension(640, 480) return wrapModal(p, modal)
return p
} }
override fun getDisplayName(): @NlsContexts.ConfigurableName String? { override fun getDisplayName(): @NlsContexts.ConfigurableName String? {

View file

@ -67,10 +67,6 @@ sealed interface ZLSDriver: UUIDComboBoxDriver<ZLSVersion> {
return ZLSComboBox(model) return ZLSComboBox(model)
} }
override fun createNamedConfigurable(uuid: UUID, elem: ZLSVersion): NamedConfigurable<UUID> {
return ZLSConfigurable(uuid, elem)
}
override suspend fun resolvePseudo( override suspend fun resolvePseudo(
context: Component, context: Component,
elem: ListElem.Pseudo<ZLSVersion> elem: ListElem.Pseudo<ZLSVersion>
@ -93,6 +89,10 @@ sealed interface ZLSDriver: UUIDComboBoxDriver<ZLSVersion> {
return res return res
} }
override fun createNamedConfigurable(uuid: UUID, elem: ZLSVersion): NamedConfigurable<UUID> {
return ZLSConfigurable(uuid, elem, false)
}
override val data: ZigProjectConfigurationProvider.IUserDataBridge? override val data: ZigProjectConfigurationProvider.IUserDataBridge?
get() = null get() = null
} }
@ -113,6 +113,10 @@ sealed interface ZLSDriver: UUIDComboBoxDriver<ZLSVersion> {
res.add(suggestZLSVersions(project, data, toolchainVersion).asPending()) res.add(suggestZLSVersions(project, data, toolchainVersion).asPending())
return res return res
} }
override fun createNamedConfigurable(uuid: UUID, elem: ZLSVersion): NamedConfigurable<UUID> {
return ZLSConfigurable(uuid, elem, true)
}
} }
} }