11package com.coder.toolbox.views
22
33import com.coder.toolbox.services.CoderSettingsService
4+ import com.jetbrains.toolbox.api.core.ServiceLocator
5+ import com.jetbrains.toolbox.api.localization.LocalizableString
6+ import com.jetbrains.toolbox.api.localization.LocalizableStringFactory
47import com.jetbrains.toolbox.api.ui.actions.RunnableActionDescription
58import com.jetbrains.toolbox.api.ui.components.CheckboxField
69import com.jetbrains.toolbox.api.ui.components.TextField
710import com.jetbrains.toolbox.api.ui.components.TextType
811import com.jetbrains.toolbox.api.ui.components.UiField
12+ import kotlinx.coroutines.flow.MutableStateFlow
13+ import kotlinx.coroutines.flow.StateFlow
914
1015/* *
1116 * A page for modifying Coder settings.
@@ -14,49 +19,60 @@ import com.jetbrains.toolbox.api.ui.components.UiField
1419 * TODO@JB: There is no scroll, and our settings do not fit. As a consequence,
1520 * I have not been able to test this page.
1621 */
17- class CoderSettingsPage (private val settings : CoderSettingsService ) : CoderPage(" Coder Settings" , false ) {
22+ class CoderSettingsPage (
23+ serviceLocator : ServiceLocator ,
24+ private val settings : CoderSettingsService ,
25+ title : LocalizableString ,
26+ ) : CoderPage(serviceLocator, title, false ) {
27+ private val i18n = serviceLocator.getService(LocalizableStringFactory ::class .java)
28+
1829 // TODO: Copy over the descriptions, holding until I can test this page.
19- private val binarySourceField = TextField (" Binary source" , settings.binarySource, TextType .General )
20- private val binaryDirectoryField = TextField (" Binary directory" , settings.binaryDirectory, TextType .General )
21- private val dataDirectoryField = TextField (" Data directory" , settings.dataDirectory, TextType .General )
22- private val enableDownloadsField = CheckboxField (settings.enableDownloads, " Enable downloads" )
30+ private val binarySourceField = TextField (i18n.ptrl(" Binary source" ), settings.binarySource, TextType .General )
31+ private val binaryDirectoryField =
32+ TextField (i18n.ptrl(" Binary directory" ), settings.binaryDirectory, TextType .General )
33+ private val dataDirectoryField = TextField (i18n.ptrl(" Data directory" ), settings.dataDirectory, TextType .General )
34+ private val enableDownloadsField = CheckboxField (settings.enableDownloads, i18n.ptrl(" Enable downloads" ))
2335 private val enableBinaryDirectoryFallbackField =
24- CheckboxField (settings.enableBinaryDirectoryFallback, " Enable binary directory fallback" )
25- private val headerCommandField = TextField (" Header command" , settings.headerCommand, TextType .General )
26- private val tlsCertPathField = TextField (" TLS cert path" , settings.tlsCertPath, TextType .General )
27- private val tlsKeyPathField = TextField (" TLS key path" , settings.tlsKeyPath, TextType .General )
28- private val tlsCAPathField = TextField (" TLS CA path" , settings.tlsCAPath, TextType .General )
36+ CheckboxField (settings.enableBinaryDirectoryFallback, i18n.ptrl( " Enable binary directory fallback" ) )
37+ private val headerCommandField = TextField (i18n.ptrl( " Header command" ) , settings.headerCommand, TextType .General )
38+ private val tlsCertPathField = TextField (i18n.ptrl( " TLS cert path" ) , settings.tlsCertPath, TextType .General )
39+ private val tlsKeyPathField = TextField (i18n.ptrl( " TLS key path" ) , settings.tlsKeyPath, TextType .General )
40+ private val tlsCAPathField = TextField (i18n.ptrl( " TLS CA path" ) , settings.tlsCAPath, TextType .General )
2941 private val tlsAlternateHostnameField =
30- TextField (" TLS alternate hostname" , settings.tlsAlternateHostname, TextType .General )
31- private val disableAutostartField = CheckboxField (settings.disableAutostart, " Disable autostart" )
42+ TextField (i18n.ptrl( " TLS alternate hostname" ) , settings.tlsAlternateHostname, TextType .General )
43+ private val disableAutostartField = CheckboxField (settings.disableAutostart, i18n.ptrl( " Disable autostart" ) )
3244
33- override val fields: MutableList <UiField > = mutableListOf (
34- binarySourceField,
35- enableDownloadsField,
36- binaryDirectoryField,
37- enableBinaryDirectoryFallbackField,
38- dataDirectoryField,
39- headerCommandField,
40- tlsCertPathField,
41- tlsKeyPathField,
42- tlsCAPathField,
43- tlsAlternateHostnameField,
44- disableAutostartField,
45+ override val fields: StateFlow <List <UiField >> = MutableStateFlow (
46+ listOf (
47+ binarySourceField,
48+ enableDownloadsField,
49+ binaryDirectoryField,
50+ enableBinaryDirectoryFallbackField,
51+ dataDirectoryField,
52+ headerCommandField,
53+ tlsCertPathField,
54+ tlsKeyPathField,
55+ tlsCAPathField,
56+ tlsAlternateHostnameField,
57+ disableAutostartField
58+ )
4559 )
4660
47- override val actionButtons: MutableList <RunnableActionDescription > = mutableListOf (
48- Action (" Save" , closesPage = true ) {
49- settings.binarySource = binarySourceField.text.value
50- settings.binaryDirectory = binaryDirectoryField.text.value
51- settings.dataDirectory = dataDirectoryField.text.value
52- settings.enableDownloads = enableDownloadsField.checked.value
53- settings.enableBinaryDirectoryFallback = enableBinaryDirectoryFallbackField.checked.value
54- settings.headerCommand = headerCommandField.text.value
55- settings.tlsCertPath = tlsCertPathField.text.value
56- settings.tlsKeyPath = tlsKeyPathField.text.value
57- settings.tlsCAPath = tlsCAPathField.text.value
58- settings.tlsAlternateHostname = tlsAlternateHostnameField.text.value
59- settings.disableAutostart = disableAutostartField.checked.value
60- },
61+ override val actionButtons: StateFlow <List <RunnableActionDescription >> = MutableStateFlow (
62+ listOf (
63+ Action (i18n.ptrl(" Save" ), closesPage = true ) {
64+ settings.binarySource = binarySourceField.textState.value
65+ settings.binaryDirectory = binaryDirectoryField.textState.value
66+ settings.dataDirectory = dataDirectoryField.textState.value
67+ settings.enableDownloads = enableDownloadsField.checkedState.value
68+ settings.enableBinaryDirectoryFallback = enableBinaryDirectoryFallbackField.checkedState.value
69+ settings.headerCommand = headerCommandField.textState.value
70+ settings.tlsCertPath = tlsCertPathField.textState.value
71+ settings.tlsKeyPath = tlsKeyPathField.textState.value
72+ settings.tlsCAPath = tlsCAPathField.textState.value
73+ settings.tlsAlternateHostname = tlsAlternateHostnameField.textState.value
74+ settings.disableAutostart = disableAutostartField.checkedState.value
75+ },
76+ )
6177 )
6278}
0 commit comments