@@ -27,13 +27,14 @@ import com.intellij.ui.components.JBRadioButton
27
27
import com.intellij.ui.components.fields.ExtendableTextComponent
28
28
import com.intellij.ui.components.fields.ExtendableTextField
29
29
import com.intellij.ui.dsl.builder.COLUMNS_MEDIUM
30
+ import com.intellij.ui.dsl.builder.bindItem
30
31
import com.intellij.ui.dsl.builder.bindText
31
32
import com.intellij.ui.dsl.builder.columns
33
+ import com.intellij.ui.dsl.builder.panel
32
34
import com.intellij.ui.dsl.builder.toMutableProperty
33
- import com.intellij.ui.layout.GrowPolicy
35
+ import com.intellij.ui.dsl.builder.toNullableProperty
34
36
import com.intellij.ui.layout.applyToComponent
35
37
import com.intellij.ui.layout.listCellRenderer
36
- import com.intellij.ui.layout.panel
37
38
import com.intellij.ui.layout.selected
38
39
import com.intellij.util.text.nullize
39
40
import kotlinx.coroutines.Deferred
@@ -68,7 +69,6 @@ import software.aws.toolkits.telemetry.EcrTelemetry
68
69
import software.aws.toolkits.telemetry.Result
69
70
import javax.swing.JTextField
70
71
import javax.swing.plaf.basic.BasicComboBoxEditor
71
- import com.intellij.ui.dsl.builder.panel as panelv2
72
72
73
73
class PushToRepositoryAction : EcrDockerAction () {
74
74
override fun actionPerformed (selected : EcrRepositoryNode , e : AnActionEvent ) {
@@ -157,7 +157,7 @@ internal class PushToEcrDialog(
157
157
}
158
158
}
159
159
160
- override fun createCenterPanel () = panelv2 {
160
+ override fun createCenterPanel () = panel {
161
161
// valid tag is ascii letters, numbers, underscores, periods, or dashes
162
162
// https://docs.docker.com/engine/reference/commandline/tag/#extended-description
163
163
val validTagRegex = " [a-zA-Z0-9_.-]{1,128}" .toRegex()
@@ -203,54 +203,46 @@ internal class PushToEcrDialog(
203
203
204
204
private fun localImageSelectorPanel () = panel {
205
205
row(message(" ecr.push.source" )) {
206
- // property binding syntax causes kotlin compiler error for some reason
207
206
comboBox(
208
207
localImageRepoTags,
209
- { localImage },
210
- { ::localImage.set(it) },
211
208
listCellRenderer { value, _, _ ->
212
209
text = value.tag ? : value.imageId.take(15 )
213
210
}
214
- )
211
+ ).bindItem(::localImage.toNullableProperty())
215
212
.applyToComponent { ComboboxSpeedSearch (this ) }
216
- .growPolicy( GrowPolicy . MEDIUM_TEXT )
217
- .withErrorOnApplyIf(message( " ecr.image.not_selected " )) { it.selected() == null }
213
+ .errorOnApply(message( " ecr.image.not_selected " )) { it.selected() == null }
214
+ .columns( 30 ) // The size of the entire dialog is doubling if specific columns are not set for this component
218
215
}
219
216
}
220
217
221
218
private fun dockerfileConfigurationSelectorPanel () = panel {
222
219
row(message(" ecr.dockerfile.configuration.label" )) {
223
- cell {
224
- val model = CollectionComboBoxModel <DockerRunConfiguration >()
225
- rebuildRunConfigurationComboBoxModel(model)
226
- comboBox(
227
- model,
228
- { runConfiguration },
229
- { ::runConfiguration.set(it) },
230
- listCellRenderer { value, _, _ ->
231
- icon = value.icon
232
- text = value.name
233
- }
234
- )
235
- .applyToComponent {
236
- // TODO: how do we render both the Docker icon and action items correctly?
237
- isEditable = true
238
- editor = object : BasicComboBoxEditor .UIResource () {
239
- override fun createEditorComponent (): JTextField {
240
- val textField = ExtendableTextField ()
241
- textField.isEditable = false
242
-
243
- buildDockerfileActions(model, textField)
244
- textField.border = null
245
-
246
- return textField
247
- }
220
+ val model = CollectionComboBoxModel <DockerRunConfiguration >()
221
+ rebuildRunConfigurationComboBoxModel(model)
222
+ comboBox(
223
+ model,
224
+ listCellRenderer { value, _, _ ->
225
+ icon = value.icon
226
+ text = value.name
227
+ }
228
+ ).bindItem(::runConfiguration.toNullableProperty())
229
+ .applyToComponent {
230
+ // TODO: how do we render both the Docker icon and action items correctly?
231
+ isEditable = true
232
+ editor = object : BasicComboBoxEditor .UIResource () {
233
+ override fun createEditorComponent (): JTextField {
234
+ val textField = ExtendableTextField ()
235
+ textField.isEditable = false
236
+
237
+ buildDockerfileActions(model, textField)
238
+ textField.border = null
239
+
240
+ return textField
248
241
}
249
242
}
250
- .growPolicy(GrowPolicy .MEDIUM_TEXT )
251
- .withErrorOnApplyIf(message(" ecr.dockerfile.configuration.invalid" )) { it.selected() == null }
252
- .withErrorOnApplyIf(message(" ecr.dockerfile.configuration.invalid_server" )) { it.selected()?.serverName == null }
253
- }
243
+ }
244
+ .errorOnApply(message(" ecr.dockerfile.configuration.invalid" )) { it.selected() == null }
245
+ .errorOnApply(message(" ecr.dockerfile.configuration.invalid_server" )) { it.selected()?.serverName == null }
254
246
}
255
247
}
256
248
0 commit comments