From 99c4f74defdd3e5390da246e0eccb4a17688690a Mon Sep 17 00:00:00 2001 From: Georgii Ustinov Date: Tue, 27 Feb 2024 15:04:58 +0200 Subject: [PATCH] [Java. Logging] Forbid user to save settings, when there is incorrect identifier IDEA-347382 GitOrigin-RevId: 643049689e1c42badd26f8481092ab303a6cdf1c --- .../src/com/intellij/ui/logging/JvmLoggingConfigurable.kt | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/java/java-impl/src/com/intellij/ui/logging/JvmLoggingConfigurable.kt b/java/java-impl/src/com/intellij/ui/logging/JvmLoggingConfigurable.kt index 778f18d534cb..d457eecb2b59 100644 --- a/java/java-impl/src/com/intellij/ui/logging/JvmLoggingConfigurable.kt +++ b/java/java-impl/src/com/intellij/ui/logging/JvmLoggingConfigurable.kt @@ -15,12 +15,14 @@ import com.intellij.openapi.options.SearchableConfigurable import com.intellij.openapi.project.Project import com.intellij.openapi.ui.DialogPanel import com.intellij.psi.PsiNameHelper +import com.intellij.ui.components.JBTextField import com.intellij.ui.dsl.builder.* import com.intellij.util.concurrency.AppExecutorUtil class JvmLoggingConfigurable(private val project: Project) : DslConfigurableBase(), SearchableConfigurable, NoScroll { private lateinit var warningRow: Row + private lateinit var loggerName: Cell private val settings = project.service().state override fun getDisplayName(): String = JavaBundle.message("jvm.logging.configurable.display.name") @@ -33,7 +35,7 @@ class JvmLoggingConfigurable(private val project: Project) : DslConfigurableBase group(JavaBundle.message("jvm.logging.configurable.java.group.display.name")) { row { label(JavaBundle.message("label.configurable.logger.generation.name")) - textField() + loggerName = textField() .bindText(settings::loggerName.toNonNullableProperty(JvmLoggerFieldDelegate.LOGGER_IDENTIFIER)) .cellValidation { addInputRule(JavaBundle.message("jvm.logging.configurable.invalid.identifier.error")) { @@ -60,6 +62,10 @@ class JvmLoggingConfigurable(private val project: Project) : DslConfigurableBase return panel } + override fun isModified(): Boolean { + return PsiNameHelper.getInstance(project).isIdentifier(loggerName.component.text) && super.isModified(); + } + private fun updateWarningRow(logger: JvmLogger?) { ReadAction.nonBlocking { logger?.isAvailable(project) == false && logger !is UnspecifiedLogger } .finishOnUiThread(ModalityState.any()) { isVisible -> warningRow.visible(isVisible) }