Skip to content

Commit 64a6d20

Browse files
author
Uladzislau Kalesnikau
committed
Merge branch 'bugfix/IJMP-1653' into 'release/v1.2.5-221'
IJMP-1653 Fixed error message behavior in Jobs filter See merge request ijmp/for-mainframe!619
2 parents 259240b + 2cbd006 commit 64a6d20

1 file changed

Lines changed: 27 additions & 10 deletions

File tree

src/main/kotlin/eu/ibagroup/formainframe/explorer/ui/AddJobsFilterDialog.kt

Lines changed: 27 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,10 @@
1111
package eu.ibagroup.formainframe.explorer.ui
1212

1313
import com.intellij.openapi.project.Project
14+
import com.intellij.openapi.ui.DialogPanel
1415
import com.intellij.openapi.ui.DialogWrapper
16+
import com.intellij.openapi.ui.ValidationInfo
17+
import com.intellij.openapi.ui.validation.DialogValidation
1518
import com.intellij.ui.components.JBTextField
1619
import com.intellij.ui.dsl.builder.bindText
1720
import com.intellij.ui.dsl.builder.panel
@@ -35,9 +38,24 @@ class AddJobsFilterDialog(
3538
lateinit var prefixField: JBTextField
3639
lateinit var ownerField: JBTextField
3740
lateinit var jobIdField: JBTextField
41+
lateinit var dialogPanel: DialogPanel
3842
val sameWidthGroup = "ADD_JOB_FILTER_DIALOG_LABELS_WIDTH_GROUP"
3943

40-
return panel {
44+
class ValidatePrefix(
45+
var componentsToIsJobId: List<Pair<JBTextField, Boolean>>
46+
) : DialogValidation {
47+
override fun validate(): ValidationInfo? {
48+
dialogPanel.validateAll()
49+
var validationInfo: ValidationInfo? = null
50+
componentsToIsJobId.forEach { (component, isJobId) ->
51+
validationInfo = validateJobFilter(prefixField.text, ownerField.text, jobIdField.text, state.ws.masks, component, isJobId)
52+
if (validationInfo != null) return validationInfo
53+
}
54+
return null
55+
}
56+
}
57+
58+
dialogPanel = panel {
4159
row {
4260
label("JES working set: ")
4361
.widthGroup(sameWidthGroup)
@@ -49,9 +67,6 @@ class AddJobsFilterDialog(
4967
textField()
5068
.bindText(state::prefix)
5169
.also { prefixField = it.component }
52-
.validationOnApply {
53-
validateJobFilter(it.text, ownerField.text, jobIdField.text, state.ws.masks, it, false)
54-
}
5570
.horizontalAlign(HorizontalAlign.FILL)
5671
}
5772
row {
@@ -60,9 +75,6 @@ class AddJobsFilterDialog(
6075
textField()
6176
.bindText(state::owner)
6277
.also { ownerField = it.component }
63-
.validationOnApply {
64-
validateJobFilter(prefixField.text, it.text, jobIdField.text, state.ws.masks, it, false)
65-
}
6678
.horizontalAlign(HorizontalAlign.FILL)
6779
}
6880
row {
@@ -71,11 +83,16 @@ class AddJobsFilterDialog(
7183
textField()
7284
.bindText(state::jobId)
7385
.also { jobIdField = it.component }
74-
.validationOnApply {
75-
validateJobFilter(prefixField.text, ownerField.text, it.text, state.ws.masks, it, true)
76-
}
7786
.horizontalAlign(HorizontalAlign.FILL)
7887
}
7988
}
89+
.apply{
90+
validationsOnInput=mapOf(
91+
prefixField to listOf(ValidatePrefix(listOf(prefixField to false, ownerField to false, jobIdField to true))),
92+
ownerField to listOf(ValidatePrefix(listOf(ownerField to false, prefixField to false, jobIdField to true))),
93+
jobIdField to listOf(ValidatePrefix(listOf(jobIdField to true, prefixField to false, ownerField to false)))
94+
)
95+
}
96+
return dialogPanel
8097
}
8198
}

0 commit comments

Comments
 (0)