Skip to content

Commit 1e239fb

Browse files
authored
Migrate from UI DSL v1 to v2 - 2 (#3810)
* migrated from dsl v1 to v2 * added another dialog * updated sono login dialog
1 parent da926ac commit 1e239fb

File tree

6 files changed

+59
-49
lines changed

6 files changed

+59
-49
lines changed

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ toolkitVersion=1.77-SNAPSHOT
88
publishToken=
99
publishChannel=
1010

11-
ideProfileName=2023.2
11+
ideProfileName=2022.3
1212

1313
remoteRobotPort=8080
1414

jetbrains-core/src/software/aws/toolkits/jetbrains/core/experiments/ExperimentConfigurable.kt

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ package software.aws.toolkits.jetbrains.core.experiments
66
import com.intellij.icons.AllIcons
77
import com.intellij.openapi.options.BoundConfigurable
88
import com.intellij.openapi.options.SearchableConfigurable
9-
import com.intellij.ui.layout.panel
9+
import com.intellij.ui.dsl.builder.bindSelected
10+
import com.intellij.ui.dsl.builder.panel
1011
import software.aws.toolkits.core.utils.htmlWrap
1112
import software.aws.toolkits.resources.message
1213

@@ -15,8 +16,13 @@ class ExperimentConfigurable : BoundConfigurable(message("aws.toolkit.experiment
1516

1617
override fun createPanel() = panel {
1718
row { label(message("aws.toolkit.experimental.description").htmlWrap()).apply { component.icon = AllIcons.General.Warning } }
18-
ToolkitExperimentManager.visibleExperiments().forEach {
19-
row { checkBox(it.title(), it::isEnabled, it::setState, it.description()) }
19+
ToolkitExperimentManager.visibleExperiments().forEach { toolkitExperiment ->
20+
row {
21+
checkBox(toolkitExperiment.title()).bindSelected(
22+
{ toolkitExperiment.isEnabled() },
23+
{ if (it) toolkitExperiment.setState(true) else toolkitExperiment.setState(false) }
24+
)
25+
}.rowComment(toolkitExperiment.description())
2026
}
2127
}
2228
}

jetbrains-core/src/software/aws/toolkits/jetbrains/core/tools/ToolConfigurable.kt

Lines changed: 18 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,13 @@ package software.aws.toolkits.jetbrains.core.tools
66
import com.intellij.openapi.fileChooser.FileChooserDescriptorFactory
77
import com.intellij.openapi.options.BoundConfigurable
88
import com.intellij.openapi.options.SearchableConfigurable
9+
import com.intellij.openapi.ui.emptyText
910
import com.intellij.openapi.util.ClearableLazyValue
1011
import com.intellij.ui.components.JBTextField
12+
import com.intellij.ui.dsl.builder.Align
13+
import com.intellij.ui.dsl.builder.bindText
14+
import com.intellij.ui.dsl.builder.panel
1115
import com.intellij.ui.layout.applyToComponent
12-
import com.intellij.ui.layout.panel
1316
import software.aws.toolkits.jetbrains.ui.ValidatingPanel
1417
import software.aws.toolkits.resources.message
1518
import java.nio.file.Path
@@ -21,23 +24,22 @@ class ToolConfigurable : BoundConfigurable(message("executableCommon.configurabl
2124
ValidatingPanel(
2225
disposable ?: throw RuntimeException("Should never happen as `createPanel` is called after disposable is assigned"),
2326
checkContinuously = false,
24-
panel {
27+
contentPanel = panel {
2528
ToolType.EP_NAME.extensionList.forEach { toolType ->
2629
row(toolType.displayName) {
27-
textFieldWithBrowseButton(
28-
getter = { settings.getExecutablePath(toolType) ?: "" },
29-
setter = { settings.setExecutablePath(toolType, it.takeIf { v -> v.isNotBlank() }) },
30-
fileChooserDescriptor = FileChooserDescriptorFactory.createSingleFileDescriptor()
31-
).withValidationOnApply {
32-
it.textField.text.takeIf { t -> t.isNotBlank() }?.let { path ->
33-
manager.validateCompatability(Path.of(path), toolType).toValidationInfo(toolType, component)
34-
}
35-
}.applyToComponent {
36-
setEmptyText(toolType, textField as JBTextField)
37-
}.constraints(
38-
growX,
39-
pushX
40-
)
30+
textFieldWithBrowseButton(fileChooserDescriptor = FileChooserDescriptorFactory.createSingleFileDescriptor())
31+
.bindText(
32+
{ settings.getExecutablePath(toolType) ?: "" },
33+
{ settings.setExecutablePath(toolType, it.takeIf { v -> v.isNotBlank() }) }
34+
)
35+
.validationOnApply {
36+
it.textField.text.takeIf { t -> t.isNotBlank() }?.let { path ->
37+
manager.validateCompatability(Path.of(path), toolType).toValidationInfo(toolType, component)
38+
}
39+
}.applyToComponent {
40+
setEmptyText(toolType, textField as JBTextField)
41+
}.resizableColumn()
42+
.align(Align.FILL)
4143

4244
browserLink(message("aws.settings.learn_more"), toolType.documentationUrl())
4345
}

jetbrains-core/src/software/aws/toolkits/jetbrains/services/lambda/settings/LambdaSettingsConfigurable.kt

Lines changed: 5 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,8 @@ package software.aws.toolkits.jetbrains.services.lambda.settings
66
import com.intellij.openapi.options.BoundConfigurable
77
import com.intellij.openapi.options.SearchableConfigurable
88
import com.intellij.openapi.project.Project
9-
import com.intellij.ui.layout.panel
9+
import com.intellij.ui.dsl.builder.bindSelected
10+
import com.intellij.ui.dsl.builder.panel
1011
import software.aws.toolkits.jetbrains.settings.LambdaSettings
1112
import software.aws.toolkits.resources.message
1213

@@ -15,11 +16,9 @@ class LambdaSettingsConfigurable(private val project: Project) : BoundConfigurab
1516
override fun getId() = "aws.lambda"
1617
override fun createPanel() = panel {
1718
row {
18-
checkBox(
19-
message("aws.settings.sam.show_all_gutter_icons"),
20-
lambdaSettings::showAllHandlerGutterIcons,
21-
message("aws.settings.sam.show_all_gutter_icons_tooltip")
22-
)
19+
checkBox(message("aws.settings.sam.show_all_gutter_icons"))
20+
.bindSelected(lambdaSettings::showAllHandlerGutterIcons)
21+
.comment(message("aws.settings.sam.show_all_gutter_icons_tooltip"))
2322
}
2423
}
2524
}

jetbrains-core/src/software/aws/toolkits/jetbrains/settings/DynamicResourcesConfigurable.kt

Lines changed: 22 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,9 @@ import com.intellij.openapi.ui.messages.MessagesService
1111
import com.intellij.ui.CheckBoxList
1212
import com.intellij.ui.FilterComponent
1313
import com.intellij.ui.ListSpeedSearch
14-
import com.intellij.ui.layout.panel
14+
import com.intellij.ui.dsl.builder.Align
15+
import com.intellij.ui.dsl.builder.panel
16+
import com.intellij.ui.dsl.gridLayout.VerticalAlign
1517
import kotlinx.coroutines.launch
1618
import kotlinx.coroutines.withContext
1719
import software.amazon.awssdk.services.toolkittelemetry.model.Sentiment
@@ -61,18 +63,15 @@ class DynamicResourcesConfigurable : BoundConfigurable(message("aws.settings.dyn
6163
}
6264
}
6365
row {
64-
cell(isFullWidth = true) {
65-
filter(growX, pushX)
66-
link(message("aws.settings.dynamic_resources_configurable.suggest_types.prompt")) {
67-
showTypeSuggestionBox()?.let { suggestion ->
68-
submitSuggestion(suggestion)
69-
}
66+
cell(filter).resizableColumn().align(Align.FILL)
67+
link(message("aws.settings.dynamic_resources_configurable.suggest_types.prompt")) {
68+
showTypeSuggestionBox()?.let { suggestion ->
69+
submitSuggestion(suggestion)
7070
}
7171
}
7272
}
7373
row {
74-
scrollPane(checklist)
75-
.constraints(growX, pushX)
74+
scrollCell(checklist)
7675
.onIsModified { selected != DynamicResourcesSettings.getInstance().selected }
7776
.onApply {
7877
DynamicResourcesSettings.getInstance().selected = selected
@@ -81,19 +80,22 @@ class DynamicResourcesConfigurable : BoundConfigurable(message("aws.settings.dyn
8180
.onReset {
8281
selected.replace(DynamicResourcesSettings.getInstance().selected)
8382
updateCheckboxList()
84-
}
83+
}.resizableColumn().align(Align.FILL)
8584

86-
cell(isVerticalFlow = true) {
85+
panel {
8786
val sizeGroup = "buttons"
88-
button(message("aws.settings.dynamic_resources_configurable.select_all")) {
89-
checklist.toggleAll(true)
90-
}.sizeGroup(sizeGroup)
91-
92-
button(message("aws.settings.dynamic_resources_configurable.clear_all")) {
93-
checklist.toggleAll(false)
94-
}.sizeGroup(sizeGroup)
95-
}
96-
}
87+
row {
88+
button(message("aws.settings.dynamic_resources_configurable.select_all")) {
89+
checklist.toggleAll(true)
90+
}.widthGroup(sizeGroup)
91+
}
92+
row {
93+
button(message("aws.settings.dynamic_resources_configurable.clear_all")) {
94+
checklist.toggleAll(false)
95+
}.widthGroup(sizeGroup)
96+
}
97+
}.verticalAlign(VerticalAlign.TOP)
98+
}.resizableRow()
9799
}
98100

99101
private fun submitSuggestion(suggestion: String) {

jetbrains-core/src/software/aws/toolkits/jetbrains/ui/connection/SonoLoginOverlay.kt

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,8 +14,8 @@ import com.intellij.openapi.util.Disposer
1414
import com.intellij.ui.AppIcon
1515
import com.intellij.ui.components.panels.NonOpaquePanel
1616
import com.intellij.ui.components.panels.Wrapper
17+
import com.intellij.ui.dsl.builder.panel
1718
import com.intellij.ui.layout.applyToComponent
18-
import com.intellij.ui.layout.panel
1919
import com.intellij.util.ui.JBFont
2020
import icons.AwsIcons
2121
import software.aws.toolkits.core.ClientConnectionSettings
@@ -37,8 +37,9 @@ open class SonoLoginOverlay(
3737
// TODO: pending final UX
3838
panel {
3939
row {
40-
label(message("code.aws"), JBFont.h2()).applyToComponent {
40+
label(message("code.aws")).applyToComponent {
4141
icon = AwsIcons.Logos.AWS_SMILE_LARGE
42+
font = JBFont.h2()
4243
}
4344
}
4445

@@ -47,7 +48,7 @@ open class SonoLoginOverlay(
4748
}
4849

4950
row {
50-
browserLink("Learn more", CawsEndpoints.ConsoleFactory.marketing())
51+
browserLink(message("aws.settings.learn_more"), CawsEndpoints.ConsoleFactory.marketing())
5152
}
5253

5354
row {

0 commit comments

Comments
 (0)