Skip to content

Commit a3fce16

Browse files
committed
refactor: align context settings indentation
1 parent 2b802a0 commit a3fce16

1 file changed

Lines changed: 75 additions & 142 deletions

File tree

src/main/kotlin/ee/carlrobert/codegpt/settings/configuration/ContextSuggestionConfigurationForm.kt

Lines changed: 75 additions & 142 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import com.intellij.openapi.ui.DialogPanel
66
import com.intellij.ui.EnumComboBoxModel
77
import com.intellij.ui.components.fields.IntegerField
88
import com.intellij.ui.dsl.builder.panel
9-
import com.intellij.util.ui.JBUI
109
import ee.carlrobert.codegpt.CodeGPTBundle
1110
import java.awt.Component
1211
import javax.swing.DefaultListCellRenderer
@@ -22,151 +21,57 @@ class ContextSuggestionConfigurationForm {
2221
columns = 12
2322
value = service<ConfigurationSettings>().state.contextSuggestionSettings.maxFileSuggestions
2423
}
25-
26-
private val maxDirectorySuggestionsField = IntegerField(
27-
"max_directory_suggestions",
28-
1,
29-
ContextSuggestionSettings.MAX_DIRECTORY_SUGGESTIONS
30-
).apply {
31-
columns = 12
32-
value = service<ConfigurationSettings>().state.contextSuggestionSettings.maxDirectorySuggestions
33-
}
34-
private val blankFileSuggestionModeComboBox =
35-
ComboBox(EnumComboBoxModel(ContextSuggestionBlankFileSuggestionMode::class.java)).apply {
36-
selectedItem = service<ConfigurationSettings>().state.contextSuggestionSettings.blankFileSuggestionMode
37-
renderer = object : DefaultListCellRenderer() {
38-
override fun getListCellRendererComponent(
39-
list: JList<*>?,
40-
value: Any?,
41-
index: Int,
42-
isSelected: Boolean,
43-
cellHasFocus: Boolean
44-
): Component {
45-
val displayValue =
46-
(value as? ContextSuggestionBlankFileSuggestionMode)?.displayName() ?: value
47-
return super.getListCellRendererComponent(
48-
list,
49-
displayValue,
50-
index,
51-
isSelected,
52-
cellHasFocus
53-
)
54-
}
55-
}
24+
private val maxDirectorySuggestionsField =
25+
IntegerField(
26+
"max_directory_suggestions",
27+
1,
28+
ContextSuggestionSettings.MAX_DIRECTORY_SUGGESTIONS
29+
).apply {
30+
columns = 12
31+
value =
32+
service<ConfigurationSettings>().state.contextSuggestionSettings.maxDirectorySuggestions
5633
}
34+
private val blankFileSuggestionModeComboBox =
35+
createEnumComboBox(
36+
service<ConfigurationSettings>().state.contextSuggestionSettings.blankFileSuggestionMode,
37+
ContextSuggestionBlankFileSuggestionMode::displayName
38+
)
5739
private val fileSortModeComboBox =
58-
ComboBox(EnumComboBoxModel(ContextSuggestionFileSortMode::class.java)).apply {
59-
selectedItem = service<ConfigurationSettings>().state.contextSuggestionSettings.fileSortMode
60-
renderer = object : DefaultListCellRenderer() {
61-
override fun getListCellRendererComponent(
62-
list: JList<*>?,
63-
value: Any?,
64-
index: Int,
65-
isSelected: Boolean,
66-
cellHasFocus: Boolean
67-
): Component {
68-
val displayValue = (value as? ContextSuggestionFileSortMode)?.displayName() ?: value
69-
return super.getListCellRendererComponent(
70-
list,
71-
displayValue,
72-
index,
73-
isSelected,
74-
cellHasFocus
75-
)
76-
}
77-
}
78-
}
40+
createEnumComboBox(
41+
service<ConfigurationSettings>().state.contextSuggestionSettings.fileSortMode,
42+
ContextSuggestionFileSortMode::displayName
43+
)
7944
private val pathDetailsModeComboBox =
80-
ComboBox(EnumComboBoxModel(ContextSuggestionPathDetailsMode::class.java)).apply {
81-
selectedItem = service<ConfigurationSettings>().state.contextSuggestionSettings.pathDetailsMode
82-
renderer = object : DefaultListCellRenderer() {
83-
override fun getListCellRendererComponent(
84-
list: JList<*>?,
85-
value: Any?,
86-
index: Int,
87-
isSelected: Boolean,
88-
cellHasFocus: Boolean
89-
): Component {
90-
val displayValue = (value as? ContextSuggestionPathDetailsMode)?.displayName() ?: value
91-
return super.getListCellRendererComponent(
92-
list,
93-
displayValue,
94-
index,
95-
isSelected,
96-
cellHasFocus
97-
)
98-
}
99-
}
100-
}
45+
createEnumComboBox(
46+
service<ConfigurationSettings>().state.contextSuggestionSettings.pathDetailsMode,
47+
ContextSuggestionPathDetailsMode::displayName
48+
)
10149

10250
fun createPanel(): DialogPanel {
10351
return panel {
104-
row {
105-
label(
106-
CodeGPTBundle.get(
107-
"configurationConfigurable.section.contextSuggestions.maxFileSuggestions.title"
108-
)
109-
)
110-
cell(maxFileSuggestionsField)
111-
.comment(
112-
CodeGPTBundle.get(
113-
"configurationConfigurable.section.contextSuggestions.maxFileSuggestions.description"
114-
)
115-
)
116-
}
117-
row {
118-
label(
119-
CodeGPTBundle.get(
120-
"configurationConfigurable.section.contextSuggestions.maxDirectorySuggestions.title"
121-
)
122-
)
123-
cell(maxDirectorySuggestionsField)
124-
.comment(
125-
CodeGPTBundle.get(
126-
"configurationConfigurable.section.contextSuggestions.maxDirectorySuggestions.description"
127-
)
128-
)
129-
}
130-
row {
131-
label(
132-
CodeGPTBundle.get(
133-
"configurationConfigurable.section.contextSuggestions.blankFileSuggestionMode.title"
134-
)
135-
)
136-
cell(blankFileSuggestionModeComboBox)
137-
.comment(
138-
CodeGPTBundle.get(
139-
"configurationConfigurable.section.contextSuggestions.blankFileSuggestionMode.description"
140-
)
141-
)
142-
}
143-
row {
144-
label(
145-
CodeGPTBundle.get(
146-
"configurationConfigurable.section.contextSuggestions.fileSortMode.title"
147-
)
148-
)
149-
cell(fileSortModeComboBox)
150-
.comment(
151-
CodeGPTBundle.get(
152-
"configurationConfigurable.section.contextSuggestions.fileSortMode.description"
153-
)
154-
)
155-
}
156-
row {
157-
label(
158-
CodeGPTBundle.get(
159-
"configurationConfigurable.section.contextSuggestions.pathDetailsMode.title"
160-
)
161-
)
162-
cell(pathDetailsModeComboBox)
163-
.comment(
164-
CodeGPTBundle.get(
165-
"configurationConfigurable.section.contextSuggestions.pathDetailsMode.description"
166-
)
167-
)
52+
indent {
53+
row(CodeGPTBundle.get("configurationConfigurable.section.contextSuggestions.maxFileSuggestions.title")) {
54+
cell(maxFileSuggestionsField)
55+
.comment(CodeGPTBundle.get("configurationConfigurable.section.contextSuggestions.maxFileSuggestions.title"))
56+
}
57+
row(CodeGPTBundle.get("configurationConfigurable.section.contextSuggestions.maxDirectorySuggestions.title")) {
58+
cell(maxDirectorySuggestionsField)
59+
.comment(CodeGPTBundle.get("configurationConfigurable.section.contextSuggestions.maxDirectorySuggestions.description"))
60+
}
61+
row(CodeGPTBundle.get("configurationConfigurable.section.contextSuggestions.blankFileSuggestionMode.title")) {
62+
cell(blankFileSuggestionModeComboBox)
63+
.comment(CodeGPTBundle.get("configurationConfigurable.section.contextSuggestions.blankFileSuggestionMode.description"))
64+
}
65+
row(CodeGPTBundle.get("configurationConfigurable.section.contextSuggestions.fileSortMode.title")) {
66+
cell(fileSortModeComboBox)
67+
.comment(CodeGPTBundle.get("configurationConfigurable.section.contextSuggestions.fileSortMode.description"))
68+
}
69+
row(CodeGPTBundle.get("configurationConfigurable.section.contextSuggestions.pathDetailsMode.title")) {
70+
cell(pathDetailsModeComboBox)
71+
.comment(CodeGPTBundle.get("configurationConfigurable.section.contextSuggestions.pathDetailsMode.description"))
72+
}
16873
}
169-
}.withBorder(JBUI.Borders.emptyLeft(16))
74+
}
17075
}
17176

17277
fun resetForm(prevState: ContextSuggestionSettingsState) {
@@ -186,8 +91,36 @@ class ContextSuggestionConfigurationForm {
18691
?: ContextSuggestionBlankFileSuggestionMode.OPEN_AND_RECENT
18792
fileSortMode = fileSortModeComboBox.selectedItem as? ContextSuggestionFileSortMode
18893
?: ContextSuggestionFileSortMode.PRESERVE_CURRENT_ORDER
189-
pathDetailsMode = pathDetailsModeComboBox.selectedItem as? ContextSuggestionPathDetailsMode
190-
?: ContextSuggestionPathDetailsMode.FULL_PATH
94+
pathDetailsMode =
95+
pathDetailsModeComboBox.selectedItem as? ContextSuggestionPathDetailsMode
96+
?: ContextSuggestionPathDetailsMode.FULL_PATH
97+
}
98+
}
99+
100+
private inline fun <reified T : Enum<T>> createEnumComboBox(
101+
selectedValue: T,
102+
noinline displayName: (T) -> String
103+
): ComboBox<T> {
104+
return ComboBox(EnumComboBoxModel(T::class.java)).apply {
105+
selectedItem = selectedValue
106+
renderer = object : DefaultListCellRenderer() {
107+
override fun getListCellRendererComponent(
108+
list: JList<*>?,
109+
value: Any?,
110+
index: Int,
111+
isSelected: Boolean,
112+
cellHasFocus: Boolean
113+
): Component {
114+
val displayValue = (value as? T)?.let(displayName) ?: value
115+
return super.getListCellRendererComponent(
116+
list,
117+
displayValue,
118+
index,
119+
isSelected,
120+
cellHasFocus
121+
)
122+
}
123+
}
191124
}
192125
}
193-
}
126+
}

0 commit comments

Comments
 (0)