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
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"
|
|
}
|