[Java. Logging] Forbid user to save settings, when there is incorrect identifier

IDEA-347382

GitOrigin-RevId: 643049689e1c42badd26f8481092ab303a6cdf1c
This commit is contained in:
Georgii Ustinov
2024-02-27 15:04:58 +02:00
committed by intellij-monorepo-bot
parent afe5a3ffca
commit 99c4f74def

View File

@@ -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<JBTextField>
private val settings = project.service<JvmLoggingSettingsStorage>().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<DslConfigurableBase>.isModified();
}
private fun updateWarningRow(logger: JvmLogger?) {
ReadAction.nonBlocking<Boolean> { logger?.isAvailable(project) == false && logger !is UnspecifiedLogger }
.finishOnUiThread(ModalityState.any()) { isVisible -> warningRow.visible(isVisible) }