Skip to content

Commit 3954925

Browse files
authored
UI improvements (#20)
2 parents 38d5c4a + 34e3ddd commit 3954925

File tree

5 files changed

+55
-42
lines changed

5 files changed

+55
-42
lines changed

src/rider/main/kotlin/ru/ellizio/odatacliui/dialogs/CliDialog.kt

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import ru.ellizio.odatacliui.UiBundle
1010
import ru.ellizio.odatacliui.extensions.emptyText
1111
import ru.ellizio.odatacliui.extensions.humanize
1212
import ru.ellizio.odatacliui.models.CliDialogModel
13+
import ru.ellizio.odatacliui.models.validators.CliDialogValidators
1314
import javax.swing.JComponent
1415

1516
class CliDialog(private val model: CliDialogModel) : DialogWrapper(false) {
@@ -61,16 +62,16 @@ class CliDialog(private val model: CliDialogModel) : DialogWrapper(false) {
6162
textField()
6263
.align(AlignX.FILL)
6364
.bindText(model.serviceName)
64-
.validationOnInput(model.validator.serviceNameValidation())
65-
.validationOnApply(model.validator.serviceNameValidation())
65+
.validationOnInput(CliDialogValidators.serviceNameValidator())
66+
.validationOnApply(CliDialogValidators.serviceNameValidator())
6667
}
6768
row(UiBundle.text("cli.metadata-source.row")) {
6869
textFieldWithBrowseButton(fileChooserDescriptor = FileChooserDescriptorFactory.createSingleFileDescriptor("xml"))
6970
.align(AlignX.FILL)
7071
.comment(UiBundle.text("cli.metadata-source.comment"), Int.MAX_VALUE)
7172
.bindText(model.metadataUri)
72-
.validationOnInput(model.validator.metadataUriValidation())
73-
.validationOnApply(model.validator.metadataUriValidation())
73+
.validationOnInput(CliDialogValidators.metadataUriValidator())
74+
.validationOnApply(CliDialogValidators.metadataUriValidator())
7475
}.bottomGap(BottomGap.SMALL)
7576
row {
7677
cell(tabbedPane)
@@ -91,8 +92,8 @@ class CliDialog(private val model: CliDialogModel) : DialogWrapper(false) {
9192
.align(AlignX.FILL)
9293
.comment(UiBundle.text("cli.namespace-prefix.comment"))
9394
.bindText(model.namespacePrefix)
94-
.validationOnInput(model.validator.namespacePrefixValidation())
95-
.validationOnApply(model.validator.namespacePrefixValidation())
95+
.validationOnInput(CliDialogValidators.namespacePrefixValidator())
96+
.validationOnApply(CliDialogValidators.namespacePrefixValidator())
9697
}
9798
row("--excluded-operation-imports") {
9899
textField()
@@ -158,6 +159,8 @@ class CliDialog(private val model: CliDialogModel) : DialogWrapper(false) {
158159
.emptyText(UiBundle.text("cli.proxy.empty-text"))
159160
.comment(UiBundle.text("cli.proxy.comment"))
160161
.bindText(model.proxy)
162+
.validationOnInput(CliDialogValidators.proxyValidator())
163+
.validationOnApply(CliDialogValidators.proxyValidator())
161164
}
162165
}.apply {
163166
registerValidators(disposable)

src/rider/main/kotlin/ru/ellizio/odatacliui/models/CliDialogModel.kt

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import com.jetbrains.rd.ide.model.protocolModel
77
import com.jetbrains.rider.model.dotNetActiveRuntimeModel
88
import ru.ellizio.odatacliui.Constants
99
import ru.ellizio.odatacliui.extensions.dotnetAddPackageCommand
10-
import ru.ellizio.odatacliui.models.validators.CliDialogModelValidator
1110
import ru.ellizio.odatacliui.terminal.BatchCommandLine
1211
import ru.ellizio.odatacliui.terminal.builders.BatchCommandLineBuilder
1312
import com.jetbrains.rider.projectView.solution
@@ -19,8 +18,6 @@ private const val CONNECTED_SERVICES = "Connected Services"
1918
private const val CSDL_NAME = "OData ServiceCsdl.xml"
2019

2120
class CliDialogModel(project: Project, private val actionMetadata: ActionMetadata) {
22-
val validator = CliDialogModelValidator()
23-
2421
val odataCliTool: DotnetToolDefinition
2522
val dotnetCliPath: String?
2623

src/rider/main/kotlin/ru/ellizio/odatacliui/models/validators/CliDialogModelValidator.kt

Lines changed: 0 additions & 29 deletions
This file was deleted.
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package ru.ellizio.odatacliui.models.validators
2+
3+
import com.intellij.openapi.ui.TextFieldWithBrowseButton
4+
import com.intellij.openapi.ui.ValidationInfo
5+
import com.intellij.ui.layout.ValidationInfoBuilder
6+
import javax.swing.JTextField
7+
8+
object CliDialogValidators {
9+
private val proxyRegex = Regex("^(\\w+\\\\\\w+(:\\w+)?@)?\\w+:\\d+\$")
10+
11+
fun serviceNameValidator(): ValidationInfoBuilder.(JTextField) -> ValidationInfo? = {
12+
if (it.text.isBlank())
13+
error("Service name must not be empty")
14+
else if (it.text.startsWith(' '))
15+
error("Service name must not start with a space")
16+
else if (it.text.endsWith(' '))
17+
error("Service name must not end with a space")
18+
else
19+
null
20+
}
21+
22+
fun metadataUriValidator(): ValidationInfoBuilder.(TextFieldWithBrowseButton) -> ValidationInfo? = {
23+
if (it.text.isBlank())
24+
error("Metadata source must not be empty")
25+
else
26+
null
27+
}
28+
29+
fun namespacePrefixValidator(): ValidationInfoBuilder.(JTextField) -> ValidationInfo? = {
30+
if (it.text.contains(' '))
31+
error("Namespace prefix must not contain spaces")
32+
else
33+
null
34+
}
35+
36+
fun proxyValidator(): ValidationInfoBuilder.(JTextField) -> ValidationInfo? = {
37+
if (!proxyRegex.matches(it.text))
38+
error("Proxy must be in a valid format")
39+
else
40+
null
41+
}
42+
}

src/rider/main/resources/UiBundle.properties

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,11 +3,11 @@ action.odatacliui.OpenCliDialogAction.text=OData Reference\u2026
33

44
# Dialog
55
cli.tab.generation=Generation Arguments
6-
cli.tab.request=Generation Arguments
7-
cli.cli-version.label=OData CLI Version:
6+
cli.tab.request=Request Arguments
7+
cli.cli-version.label=OData CLI version:
88
cli.cli-version.label-value.not-installed=Not installed
99
cli.cli-version.label-value.global=Global
10-
cli.cli-version.comment=Not installed? Follow <a href='https://learn.microsoft.com/en-us/odata/odatacli/getting-started#install'>instruction</a>
10+
cli.cli-version.comment=Not installed? Follow <a href='https://github.com/ellizio/rider--plugin--odata-cli-ui/blob/master/README.md#installation'>instructions</a>
1111
cli.service-name.row=Service name:
1212
cli.metadata-source.row=Metadata source:
1313
cli.metadata-source.comment=The URI of the metadata document. The value must be set to a valid service document URI or a local file path
@@ -26,7 +26,7 @@ cli.ignore-unexpected-elements.comment=This flag indicates whether to ignore une
2626
cli.upper-camel-case.comment=Transforms names (class and property names) to upper camel-case so that to better conform with C# naming conventions
2727
cli.custom-headers.empty-text=Example: Header1:HeaderValue, Header2:HeaderValue
2828
cli.custom-headers.comment=Headers that will get sent along with the request when fetching the metadata document from the service
29-
cli.proxy.empty-text=Example: domain\\user:password@SERVER:PORT
29+
cli.proxy.empty-text=Format: SERVER:PORT or domain\\user@SERVER:PORT or domain\\user:password@SERVER:PORT
3030
cli.proxy.comment=Proxy settings
3131
cli.ok-action-button.tooltip.not-installed=OData CLI not installed
3232

0 commit comments

Comments
 (0)