@@ -16,6 +16,8 @@ import com.intellij.ui.CommonActionsPanel
1616import com.intellij.ui.ToolbarDecorator
1717import com.intellij.ui.components.JBLabel
1818import com.intellij.ui.dsl.builder.*
19+ import com.intellij.ui.util.minimumWidth
20+ import com.intellij.ui.util.preferredWidth
1921import kotlinx.coroutines.DelicateCoroutinesApi
2022import kotlinx.coroutines.Dispatchers
2123import kotlinx.coroutines.GlobalScope
@@ -34,66 +36,78 @@ class AppSettingsConfigurable : BoundConfigurable(message("settings.general.grou
3436 private lateinit var promptComboBox: Cell <ComboBox <Prompt >>
3537 override fun createPanel () = panel {
3638
37- row {
38- cell(tokenPasswordField)
39- .label(message(" settings.openAIToken" ))
40- .bindText(
41- { AppSettings .instance.getOpenAIToken().orEmpty() },
42- { AppSettings .instance.saveOpenAIToken(it) }
43- )
44- .align(Align .FILL )
45- .resizableColumn()
46- .focused()
47- button(message(" settings.verifyToken" )) {
48- verifyToken()
49- }.align(AlignX .RIGHT )
50- }
51- row {
52- comment(message(" settings.openAITokenComment" ))
53- .align(AlignX .LEFT )
54- cell(verifyLabel)
55- .align(AlignX .RIGHT )
56- }
57- row {
58- comboBox(Locale .getAvailableLocales().toList().sortedBy { it.displayName }, AppSettingsListCellRenderer ())
59- .label(message(" settings.locale" ))
60- .bindItem(AppSettings .instance::locale.toNullableProperty())
61- }
62- row {
63- promptComboBox = comboBox(AppSettings .instance.prompts.values, AppSettingsListCellRenderer ())
64- .label(message(" settings.prompt" ))
65- .bindItem(AppSettings .instance::currentPrompt.toNullableProperty())
39+ group(JBLabel (" OpenAI" )) {
40+ row {
41+ cell(tokenPasswordField)
42+ .label(message(" settings.openAIToken" ))
43+ .bindText(
44+ { AppSettings .instance.getOpenAIToken().orEmpty() },
45+ { AppSettings .instance.saveOpenAIToken(it) }
46+ )
47+ .align(Align .FILL )
48+ .resizableColumn()
49+ .focused()
50+ button(message(" settings.verifyToken" )) {
51+ verifyToken()
52+ }.align(AlignX .RIGHT )
53+ }
54+ row {
55+ comment(message(" settings.openAITokenComment" ))
56+ .align(AlignX .LEFT )
57+ cell(verifyLabel)
58+ .align(AlignX .RIGHT )
59+ }
60+ row {
61+ textField()
62+ .label(message(" settings.openAIProxy" ))
63+ .bindText(AppSettings .instance::proxyUrl.toNonNullableProperty(" " ))
64+ .resizableColumn()
65+ .applyToComponent { minimumWidth = 300 }
66+ }
6667 }
67- row {
68- toolbarDecorator = ToolbarDecorator .createDecorator(promptTable.table)
69- .setAddAction {
70- promptTable.addPrompt().let {
71- promptComboBox.component.addItem(it)
68+
69+ group(JBLabel (" Prompt" )) {
70+ row {
71+ comboBox(Locale .getAvailableLocales().toList().sortedBy { it.displayName }, AppSettingsListCellRenderer ())
72+ .label(message(" settings.locale" ))
73+ .bindItem(AppSettings .instance::locale.toNullableProperty())
74+ }
75+ row {
76+ promptComboBox = comboBox(AppSettings .instance.prompts.values, AppSettingsListCellRenderer ())
77+ .label(message(" settings.prompt" ))
78+ .bindItem(AppSettings .instance::currentPrompt.toNullableProperty())
79+ }
80+ row {
81+ toolbarDecorator = ToolbarDecorator .createDecorator(promptTable.table)
82+ .setAddAction {
83+ promptTable.addPrompt().let {
84+ promptComboBox.component.addItem(it)
85+ }
7286 }
73- }
74- .setEditAction {
75- promptTable.editPrompt()?. let {
76- promptComboBox.component.removeItem (it.first )
77- promptComboBox.component.addItem(it.second)
87+ .setEditAction {
88+ promptTable.editPrompt()?. let {
89+ promptComboBox.component.removeItem(it.first)
90+ promptComboBox.component.addItem (it.second )
91+ }
7892 }
79- }
80- .setEditActionUpdater {
81- updateActionAvailability(CommonActionsPanel .Buttons .EDIT )
82- true
83- }
84- .setRemoveAction {
85- promptTable.removePrompt()?.let {
86- promptComboBox.component.removeItem(it)
93+ .setEditActionUpdater {
94+ updateActionAvailability(CommonActionsPanel .Buttons .EDIT )
95+ true
8796 }
88- }
89- .setRemoveActionUpdater {
90- updateActionAvailability(CommonActionsPanel .Buttons .REMOVE )
91- true
92- }
93- .disableUpDownActions()
97+ .setRemoveAction {
98+ promptTable.removePrompt()?.let {
99+ promptComboBox.component.removeItem(it)
100+ }
101+ }
102+ .setRemoveActionUpdater {
103+ updateActionAvailability(CommonActionsPanel .Buttons .REMOVE )
104+ true
105+ }
106+ .disableUpDownActions()
94107
95- cell(toolbarDecorator.createPanel())
96- .align(Align .FILL )
108+ cell(toolbarDecorator.createPanel())
109+ .align(Align .FILL )
110+ }.resizableRow()
97111 }.resizableRow()
98112
99113 row {
0 commit comments