Skip to content

Commit 7cfd6f5

Browse files
committed
impl: support for Toolbox 2.6.0.38881 (4)
- fix compiler errors for the Settings page - associated strings converted to LocalizedString instances - observable properties are now moved to Kotlin's StateFlow
1 parent d0af2c9 commit 7cfd6f5

File tree

4 files changed

+99
-41
lines changed

4 files changed

+99
-41
lines changed

src/main/kotlin/com/coder/toolbox/CoderRemoteProvider.kt

+2-1
Original file line numberDiff line numberDiff line change
@@ -65,7 +65,8 @@ class CoderRemoteProvider(
6565
private val settingsService = CoderSettingsService(settingsStore)
6666
private val settings: CoderSettings = CoderSettings(settingsService)
6767
private val secrets: CoderSecretsService = CoderSecretsService(secretsStore)
68-
private val settingsPage: CoderSettingsPage = CoderSettingsPage(settingsService)
68+
private val settingsPage: CoderSettingsPage =
69+
CoderSettingsPage(serviceLocator, settingsService, i18n.ptrl("Coder Settings"))
6970
private val dialogUi = DialogUi(serviceLocator, settings)
7071
private val linkHandler = LinkHandler(serviceLocator, settings, httpClient, dialogUi)
7172

src/main/kotlin/com/coder/toolbox/views/CoderPage.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ import java.util.function.Consumer
2222
* to use the mouse.
2323
*/
2424
abstract class CoderPage(
25-
private val serviceLocator: ServiceLocator,
25+
serviceLocator: ServiceLocator,
2626
title: LocalizableString,
2727
showIcon: Boolean = true,
2828
) : UiPage(title) {
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,16 @@
11
package com.coder.toolbox.views
22

33
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
47
import com.jetbrains.toolbox.api.ui.actions.RunnableActionDescription
58
import com.jetbrains.toolbox.api.ui.components.CheckboxField
69
import com.jetbrains.toolbox.api.ui.components.TextField
710
import com.jetbrains.toolbox.api.ui.components.TextType
811
import 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
}

src/main/resources/localization/defaultMessages.po

+42-1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,9 @@ msgstr ""
2525
msgid "No"
2626
msgstr ""
2727

28+
msgid "Save"
29+
msgstr ""
30+
2831
msgid "Delete"
2932
msgstr ""
3033

@@ -74,4 +77,42 @@ msgid "Update"
7477
msgstr ""
7578

7679
msgid "Settings"
77-
msgstr ""
80+
msgstr ""
81+
82+
msgid "Coder Settings"
83+
msgstr ""
84+
85+
msgid "Binary source"
86+
msgstr ""
87+
88+
msgid "Binary directory"
89+
msgstr ""
90+
91+
msgid "Data directory"
92+
msgstr ""
93+
94+
msgid "Enable downloads"
95+
msgstr ""
96+
97+
msgid "Enable binary directory fallback"
98+
msgstr ""
99+
100+
msgid "Header command"
101+
msgstr ""
102+
103+
msgid "TLS cert path"
104+
msgstr ""
105+
106+
msgid "TLS key path"
107+
msgstr ""
108+
109+
msgid "TLS CA path"
110+
msgstr ""
111+
112+
msgid "TLS alternate hostname"
113+
msgstr ""
114+
115+
msgid "Disable autostart"
116+
msgstr ""
117+
118+

0 commit comments

Comments
 (0)