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
|
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.components
|
||||||
|
|
||||||
import com.intellij.ui.components.JBTextField
|
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.Context
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.SettingValidator
|
import org.jetbrains.kotlin.tools.projectWizard.core.entity.SettingValidator
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.textField
|
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.textField
|
||||||
@@ -17,11 +19,27 @@ class TextFieldComponent(
|
|||||||
validator,
|
validator,
|
||||||
onValueUpdate
|
onValueUpdate
|
||||||
) {
|
) {
|
||||||
|
private var isDisabled: Boolean = false
|
||||||
|
private var cachedValueWhenDisabled: String? = null
|
||||||
|
|
||||||
override val uiComponent: JBTextField = textField(initialValue.orEmpty(), ::fireValueUpdated)
|
override val uiComponent: JBTextField = textField(initialValue.orEmpty(), ::fireValueUpdated)
|
||||||
|
|
||||||
override fun updateUiValue(newValue: String) = safeUpdateUi {
|
override fun updateUiValue(newValue: String) = safeUpdateUi {
|
||||||
uiComponent.text = newValue
|
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
|
allowEventFiring = allowEventFiringSaved
|
||||||
}
|
}
|
||||||
|
|
||||||
fun validate(value: V) {
|
open fun validate(value: V) {
|
||||||
if (validator == null) return
|
if (validator == null) return
|
||||||
if (validationIndicator == null) return
|
if (validationIndicator == null) return
|
||||||
read {
|
read {
|
||||||
|
|||||||
+12
-1
@@ -1,15 +1,18 @@
|
|||||||
package org.jetbrains.kotlin.tools.projectWizard.wizard.ui.secondStep
|
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.idea.projectWizard.UiEditorUsageStats
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.Context
|
import org.jetbrains.kotlin.tools.projectWizard.core.Context
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.Reader
|
import org.jetbrains.kotlin.tools.projectWizard.core.Reader
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.core.entity.StringValidators
|
import org.jetbrains.kotlin.tools.projectWizard.core.entity.StringValidators
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.getConfiguratorSettings
|
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.getConfiguratorSettings
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.moduleConfigurators.moduleType
|
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.kotlin.ModuleType
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.plugins.templates.TemplatesPlugin
|
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
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.settings.buildsystem.Module.Companion.ALLOWED_SPECIAL_CHARS_IN_MODULE_NAMES
|
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.Template
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.templates.settings
|
import org.jetbrains.kotlin.tools.projectWizard.templates.settings
|
||||||
import org.jetbrains.kotlin.tools.projectWizard.wizard.ui.DynamicComponent
|
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(
|
private val textField = TextFieldComponent(
|
||||||
context,
|
context,
|
||||||
labelText = null,
|
labelText = null,
|
||||||
@@ -78,6 +81,14 @@ private class ModuleNameComponent(context: Context, module: Module) : TitledComp
|
|||||||
|
|
||||||
override val title: String = "Name"
|
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 {
|
companion object {
|
||||||
private val validateModuleName =
|
private val validateModuleName =
|
||||||
StringValidators.shouldNotBeBlank("Module name") and
|
StringValidators.shouldNotBeBlank("Module name") and
|
||||||
|
|||||||
Reference in New Issue
Block a user