Skip to content

Commit

Permalink
feat(counit): init counit setting service
Browse files Browse the repository at this point in the history
  • Loading branch information
phodal committed Aug 24, 2023
1 parent b2215ba commit 51bc5fb
Show file tree
Hide file tree
Showing 4 changed files with 56 additions and 10 deletions.
Expand Up @@ -8,7 +8,6 @@ import com.intellij.util.xmlb.XmlSerializerUtil

@State(name = "cc.unitmesh.devti.settings.DevtiSettingsState", storages = [Storage("DevtiSettings.xml")])
class AutoDevSettingsState : PersistentStateComponent<AutoDevSettingsState> {

var gitType = DEFAULT_GIT_TYPE
var githubToken = ""
var gitlabToken = ""
Expand Down
@@ -0,0 +1,35 @@
package cc.unitmesh.devti.settings.configurable

import com.intellij.openapi.components.*
import com.intellij.openapi.project.Project

val Project.coUnitSettings: CoUnitProjectSettingsService
get() = service<CoUnitProjectSettingsService>()

@State(name = "CoUnitProjectSettings", storages = [Storage(StoragePathMacros.WORKSPACE_FILE)])
class CoUnitProjectSettingsService(
val project: Project,
) : SimplePersistentStateComponent<CoUnitProjectSettingsService.CoUnitProjectSettings>(CoUnitProjectSettings()) {
val enableCoUnit: Boolean get() = state.enableCoUnit
val serverAddress: String get() = state.serverAddress

fun modify(action: (CoUnitProjectSettings) -> Unit) {
// todo
action(state)
}

abstract class AdProjectSettingsBase<T : AdProjectSettingsBase<T>> : BaseState() {
abstract fun copy(): T
}

class CoUnitProjectSettings : AdProjectSettingsBase<CoUnitProjectSettings>() {
var enableCoUnit by property(false)
var serverAddress by property("http://localhost:8765") { it.isEmpty() }

override fun copy(): CoUnitProjectSettings {
val state = CoUnitProjectSettings()
state.copyFrom(this)
return state
}
}
}
Expand Up @@ -2,40 +2,51 @@ package cc.unitmesh.devti.settings.configurable

import cc.unitmesh.devti.AutoDevBundle
import com.intellij.openapi.Disposable
import com.intellij.openapi.components.service
import com.intellij.openapi.options.BoundConfigurable
import com.intellij.openapi.project.Project
import com.intellij.openapi.ui.DialogPanel
import com.intellij.openapi.util.Disposer
import com.intellij.ui.dsl.builder.Cell
import com.intellij.ui.dsl.builder.Row
import com.intellij.ui.dsl.builder.panel
import com.intellij.ui.dsl.builder.*
import com.intellij.ui.dsl.gridLayout.HorizontalAlign
import javax.swing.JComponent
import javax.swing.JTextField

class CoUnitToolConfigurable(project: Project) :
BoundConfigurable(AutoDevBundle.message("settings.external.counit.name")), Disposable {

private val pathToToolchainComboBox = CoUnitToolchainPathChoosingComboBox()
private val serverAddress = JTextField()

val settings = project.service<CoUnitProjectSettingsService>()
val state = settings.state.copy()

override fun createPanel(): DialogPanel = panel {
row {
checkBox(AutoDevBundle.message("settings.external.counit.enable.label"))
.comment(AutoDevBundle.message("settings.external.counit.enable.label.comment"))
// .bindSelected(project::enableCoUnit)
.bindSelected(state::enableCoUnit)
}

row(AutoDevBundle.message("settings.external.counit.server.address.label")) {
fullWidthCell(serverAddress)
// .bind(
// componentGet = { it.text },
// componentSet = { component, value -> component.text = value },
// prop = state::additionalArguments.toMutableProperty()
// )
.bind(
componentGet = { it.text },
componentSet = { component, value -> component.text = value },
prop = state::serverAddress.toMutableProperty()
)
}

row(AutoDevBundle.message("settings.external.counit.location.label")) {
fullWidthCell(pathToToolchainComboBox)
}

onApply {
settings.modify {
it.enableCoUnit = state.enableCoUnit
it.serverAddress = state.serverAddress
}
}
}

override fun dispose() {
Expand Down
1 change: 1 addition & 0 deletions src/main/resources/META-INF/autodev-core.xml
Expand Up @@ -12,6 +12,7 @@
id="cc.unitmesh.devti.settings.AutoDevSettingsConfigurable"
displayName="AutoDev"/>

<projectService serviceImplementation="cc.unitmesh.devti.settings.configurable.CoUnitProjectSettingsService"/>
<projectConfigurable provider="cc.unitmesh.devti.settings.configurable.CoUnitToolConfigurableProvider"
parentId="cc.unitmesh.devti.settings.AutoDevSettingsConfigurable"
id="cc.unitmesh.counit"
Expand Down

0 comments on commit 51bc5fb

Please sign in to comment.