Skip to content

Commit

Permalink
fix: settings not change but show modified
Browse files Browse the repository at this point in the history
and refactor:

- move isModified to AppSettingComponent
- use `||` instead of `or` (`or` has little difference to `||`)
- not need to use disposeUIResources, because component has not any native resources
  • Loading branch information
iptton committed Aug 7, 2023
1 parent c92c4cb commit e3e327d
Show file tree
Hide file tree
Showing 2 changed files with 53 additions and 53 deletions.
45 changes: 29 additions & 16 deletions src/main/kotlin/cc/unitmesh/devti/settings/AppSettingsComponent.kt
@@ -1,10 +1,8 @@
package cc.unitmesh.devti.settings

import com.intellij.json.JsonLanguage
import com.intellij.openapi.editor.SpellCheckingEditorCustomizationProvider
import com.intellij.openapi.editor.colors.EditorColorsUtil
import com.intellij.openapi.editor.ex.EditorEx
import com.intellij.openapi.editor.highlighter.EditorHighlighterFactory
import com.intellij.openapi.project.ProjectManager
import com.intellij.openapi.ui.ComboBox
import com.intellij.ui.LanguageTextField
Expand All @@ -30,21 +28,23 @@ class AppSettingsComponent {
val language = ComboBox(HUMAN_LANGUAGES)

private var myEditor: EditorEx? = null
val project = ProjectManager.getInstance().openProjects.firstOrNull()
var customEnginePrompt = object : LanguageTextField(JsonLanguage.INSTANCE, project, "") {

override fun createEditor(): EditorEx {
myEditor = super.createEditor().apply {
setShowPlaceholderWhenFocused(true)
setHorizontalScrollbarVisible(true)
setVerticalScrollbarVisible(true)
setPlaceholder("Enter custom prompt here")

val scheme = EditorColorsUtil.getColorSchemeForBackground(this.colorsScheme.defaultBackground)
this.colorsScheme = this.createBoundColorSchemeDelegate(scheme)
private val customEnginePrompt by lazy {
val project = ProjectManager.getInstance().openProjects.firstOrNull()
object : LanguageTextField(JsonLanguage.INSTANCE, project, "") {

override fun createEditor(): EditorEx {
myEditor = super.createEditor().apply {
setShowPlaceholderWhenFocused(true)
setHorizontalScrollbarVisible(true)
setVerticalScrollbarVisible(true)
setPlaceholder("Enter custom prompt here")

val scheme = EditorColorsUtil.getColorSchemeForBackground(this.colorsScheme.defaultBackground)
this.colorsScheme = this.createBoundColorSchemeDelegate(scheme)
}

return myEditor!!
}

return myEditor!!
}
}

Expand Down Expand Up @@ -147,4 +147,17 @@ class AppSettingsComponent {
fun setLanguage(newText: String) {
language.selectedItem = newText
}

fun isModified(origineSettings: AutoDevSettingsState): Boolean {
// TODO use data class to avoid manually write this
return origineSettings.openAiKey != getOpenAiKey() ||
origineSettings.githubToken != getGithubToken() ||
origineSettings.openAiModel != getOpenAiModel() ||
origineSettings.customOpenAiHost != getOpenAiHost() ||
origineSettings.aiEngine != getAiEngine() ||
origineSettings.customEngineServer != getCustomEngineServer() ||
origineSettings.customEngineToken != getCustomEngineToken() ||
origineSettings.customEnginePrompts != getCustomEnginePrompt() ||
origineSettings.language != getLanguage()
}
}
Expand Up @@ -6,64 +6,51 @@ import org.jetbrains.annotations.Nullable
import javax.swing.JComponent

class AutoDevSettingsConfigurable : Configurable {
private var component: AppSettingsComponent? = null
private lateinit var component: AppSettingsComponent

@Nls(capitalization = Nls.Capitalization.Title)
override fun getDisplayName(): String {
return "AutoDev"
}

override fun getPreferredFocusedComponent(): JComponent {
return component!!.preferredFocusedComponent
return component.preferredFocusedComponent
}

@Nullable
override fun createComponent(): JComponent {
component = AppSettingsComponent()
return component!!.panel
return component.panel
}

override fun isModified(): Boolean {
val settings: AutoDevSettingsState = AutoDevSettingsState.getInstance()
var modified = !component!!.openAiKey.equals(settings.openAiKey)
modified = modified or (!component!!.githubToken.equals(settings.githubToken))
modified = modified or (!component!!.openAiModel.equals(settings.openAiModel))
modified = modified or (!component!!.customOpenAiHost.equals(settings.customOpenAiHost))
modified = modified or (!component!!.aiEngine.equals(settings.aiEngine))
modified = modified or (!component!!.customEngineServer.equals(settings.customEngineServer))
modified = modified or (!component!!.customEngineToken.equals(settings.customEngineToken))
modified = modified or (!component!!.customEnginePrompt.equals(settings.customEnginePrompts))
modified = modified or (!component!!.language.equals(settings.language))
return modified
return component.isModified(settings)
}

override fun apply() {
val settings: AutoDevSettingsState = AutoDevSettingsState.getInstance()!!
settings.openAiKey = component!!.getOpenAiKey()
settings.githubToken = component!!.getGithubToken()
settings.openAiModel = component!!.getOpenAiModel()
settings.customOpenAiHost = component!!.getOpenAiHost()
settings.aiEngine = component!!.getAiEngine()
settings.customEngineServer = component!!.getCustomEngineServer()
settings.customEngineToken = component!!.getCustomEngineToken()
settings.customEnginePrompts = component!!.getCustomEnginePrompt()
settings.language = component!!.getLanguage()
val settings: AutoDevSettingsState = AutoDevSettingsState.getInstance()
settings.openAiKey = component.getOpenAiKey()
settings.githubToken = component.getGithubToken()
settings.openAiModel = component.getOpenAiModel()
settings.customOpenAiHost = component.getOpenAiHost()
settings.aiEngine = component.getAiEngine()
settings.customEngineServer = component.getCustomEngineServer()
settings.customEngineToken = component.getCustomEngineToken()
settings.customEnginePrompts = component.getCustomEnginePrompt()
settings.language = component.getLanguage()
}

override fun reset() {
val settings: AutoDevSettingsState = AutoDevSettingsState.getInstance()!!
component!!.setLanguage(settings.language)
component!!.setOpenAiKey(settings.openAiKey)
component!!.setGithubToken(settings.githubToken)
component!!.setOpenAiModel(settings.openAiModel)
component!!.setOpenAiHost(settings.customOpenAiHost)
component!!.setAiEngine(settings.aiEngine)
component!!.setCustomEngineServer(settings.customEngineServer)
component!!.setCustomEngineToken(settings.customEngineToken)
component!!.setCustomEnginePrompt(settings.customEnginePrompts)
}

override fun disposeUIResources() {
component = null
val settings: AutoDevSettingsState = AutoDevSettingsState.getInstance()
component.setLanguage(settings.language)
component.setOpenAiKey(settings.openAiKey)
component.setGithubToken(settings.githubToken)
component.setOpenAiModel(settings.openAiModel)
component.setOpenAiHost(settings.customOpenAiHost)
component.setAiEngine(settings.aiEngine)
component.setCustomEngineServer(settings.customEngineServer)
component.setCustomEngineToken(settings.customEngineToken)
component.setCustomEnginePrompt(settings.customEnginePrompts)
}
}

0 comments on commit e3e327d

Please sign in to comment.