Wizard: do not allow to edit module name when it is an only root module
This commit is contained in:
+19
-1
@@ -1,6 +1,8 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.components
|
||||
|
||||
import com.intellij.ui.components.JBTextField
|
||||
import com.intellij.util.ui.JBUI
|
||||
import com.intellij.util.ui.UIUtil
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.Context
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.SettingValidator
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.textField
|
||||
@@ -17,11 +19,27 @@ class TextFieldComponent(
|
||||
validator,
|
||||
onValueUpdate
|
||||
) {
|
||||
private var isDisabled: Boolean = false
|
||||
private var cachedValueWhenDisabled: String? = null
|
||||
|
||||
override val uiComponent: JBTextField = textField(initialValue.orEmpty(), ::fireValueUpdated)
|
||||
|
||||
override fun updateUiValue(newValue: String) = safeUpdateUi {
|
||||
uiComponent.text = newValue
|
||||
}
|
||||
|
||||
override fun getUiValue(): String = uiComponent.text
|
||||
fun disable(message: String) {
|
||||
cachedValueWhenDisabled = getUiValue()
|
||||
uiComponent.isEditable = false
|
||||
uiComponent.foreground = UIUtil.getLabelFontColor(UIUtil.FontColor.BRIGHTER)
|
||||
isDisabled = true
|
||||
updateUiValue(message)
|
||||
}
|
||||
|
||||
override fun validate(value: String) {
|
||||
if (isDisabled) return
|
||||
super.validate(value)
|
||||
}
|
||||
|
||||
override fun getUiValue(): String = cachedValueWhenDisabled ?: uiComponent.text
|
||||
}
|
||||
+1
-1
@@ -70,7 +70,7 @@ abstract class UIComponent<V : Any>(
|
||||
allowEventFiring = allowEventFiringSaved
|
||||
}
|
||||
|
||||
fun validate(value: V) {
|
||||
open fun validate(value: V) {
|
||||
if (validator == null) return
|
||||
if (validationIndicator == null) return
|
||||
read {
|
||||
|
||||
+12
-1
@@ -1,15 +1,18 @@
|
||||
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.secondStep
|
||||
|
||||
import com.intellij.ui.components.JBTextField
|
||||
import org.jetbrains.kotlin.idea.projectWizard.UiEditorUsageStats
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.Context
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.Reader
|
||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.StringValidators
|
||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.getConfiguratorSettings
|
||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.moduleType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.KotlinPlugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.kotlin.ModuleType
|
||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.templates.TemplatesPlugin
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module.Companion.ALLOWED_SPECIAL_CHARS_IN_MODULE_NAMES
|
||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.isRootModule
|
||||
import org.jetbrains.kotlin.tools.projectWizard.templates.Template
|
||||
import org.jetbrains.kotlin.tools.projectWizard.templates.settings
|
||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.DynamicComponent
|
||||
@@ -62,7 +65,7 @@ class ModuleSettingsComponent(
|
||||
}
|
||||
}
|
||||
|
||||
private class ModuleNameComponent(context: Context, module: Module) : TitledComponent(context) {
|
||||
private class ModuleNameComponent(context: Context, private val module: Module) : TitledComponent(context) {
|
||||
private val textField = TextFieldComponent(
|
||||
context,
|
||||
labelText = null,
|
||||
@@ -78,6 +81,14 @@ private class ModuleNameComponent(context: Context, module: Module) : TitledComp
|
||||
|
||||
override val title: String = "Name"
|
||||
|
||||
override fun onInit() {
|
||||
super.onInit()
|
||||
val isSingleRootMode = read { KotlinPlugin::modules.settingValue }.size == 1
|
||||
if (isSingleRootMode && module.isRootModule) {
|
||||
textField.disable("[The same as the project name]")
|
||||
}
|
||||
}
|
||||
|
||||
companion object {
|
||||
private val validateModuleName =
|
||||
StringValidators.shouldNotBeBlank("Module name") and
|
||||
|
||||
Reference in New Issue
Block a user