You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

65 lines
2.0 KiB

package com.plexworlds.l3.config
import com.plexworlds.l3.llm.provider.Ollama
import com.intellij.openapi.options.SearchableConfigurable
import com.plexworlds.l3.llm.provider.Providers
import javax.swing.JComponent
import org.slf4j.Logger
import org.slf4j.LoggerFactory
class L3Config : SearchableConfigurable {
private var panel: L3SettingsPanel? = null
private val logger: Logger = LoggerFactory.getLogger(L3Config::class.java)
override fun createComponent(): JComponent {
val panel = L3SettingsPanel().also { this.panel = it }
return panel.mainPanel
}
override fun isModified(): Boolean {
if (panel == null) {
logger.error("L3SettingsPanel is null")
return false
}
val l3PersistentState = L3PersistentState.getInstance()
val isProviderModified = panel?.providerComboBox?.selectedItem != l3PersistentState.provider
val isModelModified = panel?.modelField?.text != l3PersistentState.model;
val isUrlModified = panel?.urlField?.text != l3PersistentState.url
val isModified = isProviderModified || isModelModified || isUrlModified;
logger.debug("isModified: $isModified")
return isModified
}
override fun reset() {
val panel = this.panel ?: return
val l3PersistentState = L3PersistentState.getInstance()
panel.modelField.text = l3PersistentState.model
Ollama.changeModel(l3PersistentState.model)
}
override fun apply() {
val panel = this.panel ?: return
val state = L3PersistentState.getInstance()
val llm = Providers.valueOf(panel.providerComboBox.selectedItem as String).provider
val model = panel.modelField.text
llm.changeModel(model)
state.provider = llm
state.model = model
state.url = panel.urlField.text
}
override fun disposeUIResources() {
this.panel = null
}
override fun getDisplayName() = "Local Llama Link"
override fun getId() = "com.plexworlds.l3.config.L3Config"
}