1
1
package com.coder.toolbox.views
2
2
3
3
import 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
4
7
import com.jetbrains.toolbox.api.ui.actions.RunnableActionDescription
5
8
import com.jetbrains.toolbox.api.ui.components.CheckboxField
6
9
import com.jetbrains.toolbox.api.ui.components.TextField
7
10
import com.jetbrains.toolbox.api.ui.components.TextType
8
11
import com.jetbrains.toolbox.api.ui.components.UiField
12
+ import kotlinx.coroutines.flow.MutableStateFlow
13
+ import kotlinx.coroutines.flow.StateFlow
9
14
10
15
/* *
11
16
* A page for modifying Coder settings.
@@ -14,49 +19,60 @@ import com.jetbrains.toolbox.api.ui.components.UiField
14
19
* TODO@JB: There is no scroll, and our settings do not fit. As a consequence,
15
20
* I have not been able to test this page.
16
21
*/
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
+
18
29
// 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" ))
23
35
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 )
29
41
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" ) )
32
44
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
+ )
45
59
)
46
60
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
+ )
61
77
)
62
78
}
0 commit comments