From 5d2bc13f8cb57351e8f0550a66b9a6142dc595c8 Mon Sep 17 00:00:00 2001 From: Phil Date: Wed, 8 May 2024 15:07:00 +0200 Subject: [PATCH] fix: refresh Ollama models only when service is changed to Ollama (#536) --- .../settings/GeneralSettingsComponent.java | 9 ++++++-- .../service/ollama/OllamaSettingsForm.kt | 21 +++++++++---------- 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/main/java/ee/carlrobert/codegpt/settings/GeneralSettingsComponent.java b/src/main/java/ee/carlrobert/codegpt/settings/GeneralSettingsComponent.java index 9583040b..7f20f736 100644 --- a/src/main/java/ee/carlrobert/codegpt/settings/GeneralSettingsComponent.java +++ b/src/main/java/ee/carlrobert/codegpt/settings/GeneralSettingsComponent.java @@ -74,8 +74,13 @@ public class GeneralSettingsComponent { serviceComboBox = new ComboBox<>(serviceComboBoxModel); serviceComboBox.setSelectedItem(OPENAI); serviceComboBox.setPreferredSize(displayNameField.getPreferredSize()); - serviceComboBox.addItemListener(e -> - cardLayout.show(cards, ((ServiceType) e.getItem()).getCode())); + serviceComboBox.addItemListener(e -> { + ServiceType selectedService = (ServiceType) e.getItem(); + cardLayout.show(cards, selectedService.getCode()); + if (selectedService == OLLAMA) { + ollamaSettingsForm.refreshModels(); + } + }); mainPanel = FormBuilder.createFormBuilder() .addLabeledComponent( CodeGPTBundle.get("settingsConfigurable.displayName.label"), diff --git a/src/main/kotlin/ee/carlrobert/codegpt/settings/service/ollama/OllamaSettingsForm.kt b/src/main/kotlin/ee/carlrobert/codegpt/settings/service/ollama/OllamaSettingsForm.kt index e9ac10c7..8ede4ecf 100644 --- a/src/main/kotlin/ee/carlrobert/codegpt/settings/service/ollama/OllamaSettingsForm.kt +++ b/src/main/kotlin/ee/carlrobert/codegpt/settings/service/ollama/OllamaSettingsForm.kt @@ -55,7 +55,6 @@ class OllamaSettingsForm { } } refreshModelsButton.addActionListener { refreshModels() } - refreshModels() } fun getForm(): JPanel = FormBuilder.createFormBuilder() @@ -116,16 +115,7 @@ class OllamaSettingsForm { || codeCompletionConfigurationForm.fimTemplate != fimTemplate } - private fun disableModelComboBoxWithPlaceholder(placeholderModel: ComboBoxModel) { - invokeLater { - modelComboBox.apply { - model = placeholderModel - isEnabled = false - } - } - } - - private fun refreshModels() { + fun refreshModels() { disableModelComboBoxWithPlaceholder(DefaultComboBoxModel(arrayOf("Loading"))) try { val models = runBlocking(Dispatchers.IO) { @@ -160,4 +150,13 @@ class OllamaSettingsForm { disableModelComboBoxWithPlaceholder(DefaultComboBoxModel(arrayOf("Unable to load models"))) } } + + private fun disableModelComboBoxWithPlaceholder(placeholderModel: ComboBoxModel) { + invokeLater { + modelComboBox.apply { + model = placeholderModel + isEnabled = false + } + } + } }