@@ -6,16 +6,19 @@ import com.github.blarc.ai.commits.intellij.plugin.settings.AppSettings2
66import com.intellij.openapi.ui.DialogPanel
77import com.intellij.openapi.ui.DialogWrapper
88import com.intellij.openapi.ui.Splitter
9+ import com.intellij.openapi.ui.ValidationInfo
910import com.intellij.openapi.ui.popup.ListItemDescriptorAdapter
1011import com.intellij.ui.JBCardLayout
1112import com.intellij.ui.components.JBList
1213import com.intellij.ui.popup.list.GroupedItemsListRenderer
1314import com.intellij.ui.table.TableView
15+ import com.intellij.util.containers.ContainerUtil
1416import com.intellij.util.ui.JBUI
1517import com.intellij.util.ui.ListTableModel
1618import java.awt.event.MouseAdapter
1719import java.awt.event.MouseEvent
1820import javax.swing.JComponent
21+ import javax.swing.JList
1922import javax.swing.JPanel
2023import javax.swing.ListSelectionModel.SINGLE_SELECTION
2124
@@ -100,12 +103,7 @@ class LLMClientTable {
100103 private val llmClients: List <LLMClient > = getLlmClients(newLlmClient)
101104 var llmClient = newLlmClient ? : llmClients[0 ]
102105
103- private val cardLayout = JBCardLayout ().apply {
104- // Register validators of the currently active cards
105- // (findComponentById(llmClient.displayName) as DialogPanel).registerValidators(myDisposable) {
106- // isOKActionEnabled = ContainerUtil.and(it.values) { info: ValidationInfo -> info.okEnabled }
107- // }
108- }
106+ private val cardLayout = JBCardLayout ()
109107
110108 init {
111109 title = newLlmClient?.let { " Edit LLM Client" } ? : " Add LLM Client"
@@ -146,20 +144,26 @@ class LLMClientTable {
146144 }
147145 }
148146
147+ // Register validators of the currently active cards
148+ (cardLayout.findComponentById(llmClient.displayName) as DialogPanel ).registerValidators(myDisposable) {
149+ isOKActionEnabled = ContainerUtil .and (it.values) { info: ValidationInfo -> info.okEnabled }
150+ }
151+
149152 val cardsList = JBList (llmClients).apply {
150153 val descriptor = object : ListItemDescriptorAdapter <LLMClient >() {
151154 override fun getTextFor (value : LLMClient ) = value.displayName
152155 override fun getIconFor (value : LLMClient ) = value.getIcon()
153156 }
154157 cellRenderer = object : GroupedItemsListRenderer <LLMClient >(descriptor) {
155- override fun createItemComponent () = super .createItemComponent(). apply {
156- border = JBUI .Borders .empty(4 , 4 , 4 , 10 )
158+ override fun customizeComponent ( list : JList < out LLMClient > ? , value : LLMClient ? , isSelected : Boolean ) {
159+ myTextLabel. border = JBUI .Borders .empty(4 )
157160 }
158161 }
159162 addListSelectionListener {
160163 llmClient = selectedValue
161164 cardLayout.show(cardPanel, llmClient.displayName)
162165 }
166+ setSelectedValue(llmClient, true )
163167 }
164168
165169 firstComponent = cardsList
0 commit comments