Skip to content

Commit e311e38

Browse files
authored
Migrate from UI DSL v1 to v2 -5 (#3837)
* samselection panel dpnw * additinal dialogs * reverted not required changes * addressed feedback
1 parent 7c7b472 commit e311e38

File tree

2 files changed

+47
-26
lines changed

2 files changed

+47
-26
lines changed

jetbrains-core/src/software/aws/toolkits/jetbrains/services/ecs/exec/OpenShellInContainerDialog.kt

Lines changed: 25 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,12 @@ import com.intellij.openapi.application.runInEdt
99
import com.intellij.openapi.project.Project
1010
import com.intellij.openapi.ui.DialogWrapper
1111
import com.intellij.ui.CollectionComboBoxModel
12-
import com.intellij.ui.layout.GrowPolicy
12+
import com.intellij.ui.dsl.builder.AlignX
13+
import com.intellij.ui.dsl.builder.bindItem
14+
import com.intellij.ui.dsl.builder.columns
15+
import com.intellij.ui.dsl.builder.panel
16+
import com.intellij.ui.dsl.builder.toNullableProperty
1317
import com.intellij.ui.layout.applyToComponent
14-
import com.intellij.ui.layout.panel
1518
import kotlinx.coroutines.launch
1619
import kotlinx.coroutines.withContext
1720
import org.jetbrains.plugins.terminal.TerminalTabState
@@ -23,10 +26,12 @@ import software.aws.toolkits.core.utils.getLogger
2326
import software.aws.toolkits.core.utils.warn
2427
import software.aws.toolkits.jetbrains.core.coroutines.getCoroutineUiContext
2528
import software.aws.toolkits.jetbrains.core.coroutines.projectCoroutineScope
29+
import software.aws.toolkits.jetbrains.core.map
2630
import software.aws.toolkits.jetbrains.services.ecs.ContainerDetails
2731
import software.aws.toolkits.jetbrains.services.ecs.resources.EcsResources
28-
import software.aws.toolkits.jetbrains.ui.resourceSelector
32+
import software.aws.toolkits.jetbrains.ui.ResourceSelector
2933
import software.aws.toolkits.jetbrains.utils.notifyError
34+
import software.aws.toolkits.jetbrains.utils.ui.selected
3035
import software.aws.toolkits.resources.message
3136
import software.aws.toolkits.telemetry.EcsExecuteCommandType
3237
import software.aws.toolkits.telemetry.EcsTelemetry
@@ -45,6 +50,10 @@ class OpenShellInContainerDialog(
4550
var task: String? = null
4651
var shell: String = ""
4752

53+
val taskList = ResourceSelector.builder().resource(
54+
EcsResources.listTasks(container.service.clusterArn(), container.service.serviceArn()).map { it }
55+
).awsConnection(project).build()
56+
4857
init {
4958
super.init()
5059
title = message("ecs.execute_command_run_command_in_shell")
@@ -53,18 +62,22 @@ class OpenShellInContainerDialog(
5362

5463
override fun createCenterPanel(): JComponent = panel {
5564
row(message("ecs.execute_command_task.label")) {
56-
resourceSelector(
57-
EcsResources.listTasks(container.service.clusterArn(), container.service.serviceArn()),
58-
connectionSettings,
59-
::task
60-
).constraints(growX, pushX)
61-
.growPolicy(GrowPolicy.MEDIUM_TEXT)
62-
.withErrorOnApplyIf(message("ecs.execute_command_task_comboBox_empty")) { it.selected().isNullOrEmpty() }
65+
cell(taskList)
66+
.bindItem(::task.toNullableProperty())
67+
.errorOnApply(message("ecs.execute_command_task_comboBox_empty")) {
68+
it.selected().isNullOrEmpty()
69+
}.columns(30)
6370
}
6471
row(message("ecs.execute_command_shell.label")) {
65-
comboBox(shellOption, ::shell).constraints(grow)
66-
.withErrorOnApplyIf(message("ecs.execute_command_shell_comboBox_empty")) { it.editor.item.toString().isBlank() }
72+
comboBox(shellOption)
73+
.bindItem({ shell }, {
74+
if (it != null) {
75+
shell = it
76+
}
77+
})
78+
.errorOnApply(message("ecs.execute_command_shell_comboBox_empty")) { it.editor.item.toString().isBlank() }
6779
.applyToComponent { isEditable = true }
80+
.align(AlignX.FILL)
6881
}
6982
}
7083

jetbrains-core/src/software/aws/toolkits/jetbrains/services/ecs/exec/RunCommandDialog.kt

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -9,19 +9,23 @@ import com.intellij.openapi.project.Project
99
import com.intellij.openapi.ui.DialogWrapper
1010
import com.intellij.ui.CollectionComboBoxModel
1111
import com.intellij.ui.components.JBTextField
12-
import com.intellij.ui.layout.GrowPolicy
12+
import com.intellij.ui.dsl.builder.AlignX
13+
import com.intellij.ui.dsl.builder.bindItem
14+
import com.intellij.ui.dsl.builder.columns
15+
import com.intellij.ui.dsl.builder.panel
16+
import com.intellij.ui.dsl.builder.toNullableProperty
1317
import com.intellij.ui.layout.applyToComponent
14-
import com.intellij.ui.layout.panel
1518
import kotlinx.coroutines.launch
1619
import kotlinx.coroutines.withContext
1720
import software.aws.toolkits.core.ConnectionSettings
1821
import software.aws.toolkits.core.utils.getLogger
1922
import software.aws.toolkits.core.utils.warn
2023
import software.aws.toolkits.jetbrains.core.coroutines.getCoroutineUiContext
2124
import software.aws.toolkits.jetbrains.core.coroutines.projectCoroutineScope
25+
import software.aws.toolkits.jetbrains.core.map
2226
import software.aws.toolkits.jetbrains.services.ecs.ContainerDetails
2327
import software.aws.toolkits.jetbrains.services.ecs.resources.EcsResources
24-
import software.aws.toolkits.jetbrains.ui.resourceSelector
28+
import software.aws.toolkits.jetbrains.ui.ResourceSelector
2529
import software.aws.toolkits.jetbrains.utils.notifyError
2630
import software.aws.toolkits.resources.message
2731
import software.aws.toolkits.telemetry.EcsExecuteCommandType
@@ -37,6 +41,9 @@ class RunCommandDialog(private val project: Project, private val container: Cont
3741

3842
var command = ""
3943
var task: String? = null
44+
val taskList = ResourceSelector.builder().resource(
45+
EcsResources.listTasks(container.service.clusterArn(), container.service.serviceArn()).map { it }
46+
).awsConnection(project).build()
4047

4148
init {
4249
super.init()
@@ -46,26 +53,27 @@ class RunCommandDialog(private val project: Project, private val container: Cont
4653

4754
override fun createCenterPanel(): JComponent = panel {
4855
row(message("ecs.execute_command_task.label")) {
49-
resourceSelector(
50-
EcsResources.listTasks(container.service.clusterArn(), container.service.serviceArn()),
51-
connectionSettings,
52-
::task
53-
).constraints(growX, pushX)
54-
.growPolicy(GrowPolicy.MEDIUM_TEXT)
55-
.withErrorOnApplyIf(message("ecs.execute_command_task_comboBox_empty")) { it.selected().isNullOrEmpty() }
56+
cell(taskList)
57+
.bindItem(::task.toNullableProperty())
58+
.errorOnApply(message("ecs.execute_command_task_comboBox_empty")) {
59+
it.selected().isNullOrEmpty()
60+
}.columns(30)
5661
}
5762
row(message("ecs.execute_command.label")) {
58-
comboBox(commandList, ::command)
59-
.constraints(grow)
60-
.withErrorOnApplyIf(message("ecs.execute_command_no_command")) { it.item.isNullOrEmpty() }
63+
comboBox(commandList).bindItem({ command }, {
64+
if (it != null) {
65+
command = it
66+
}
67+
})
68+
.errorOnApply(message("ecs.execute_command_no_command")) { it.item.isNullOrEmpty() }
6169
.applyToComponent {
6270
isEditable = true
6371
selectedIndex = -1
6472
editor = object : BasicComboBoxEditor.UIResource() {
6573
override fun createEditorComponent() =
6674
JBTextField().also { it.emptyText.text = message("ecs.execute_command_run_command_default_text") }
6775
}
68-
}
76+
}.align(AlignX.FILL)
6977
}
7078
}
7179

0 commit comments

Comments
 (0)