feat(templates): add 'displayName' property to EnumParameter

This commit is contained in:
Akash Yadav
2023-05-08 18:15:35 +05:30
parent eb9fc07a5f
commit dbc89ee759
4 changed files with 27 additions and 10 deletions
@@ -41,5 +41,12 @@ enum class Sdk(val codename: String, val version: String, val api: Int) {
SnowCone("SnowCone", "12", 31),
SnowCodeV2("SnowCone", "12L", 32),
Tiramisu("Tiramisu", "13", 33),
UpsideDownCake("UpsideDownCake", "14", 34),
UpsideDownCake("UpsideDownCake", "14", 34);
/**
* Get the display name for this Sdk version.
*
* @return The display name.
*/
fun displayName() : String = "API ${api}: Android $version (${codename})"
}
@@ -85,11 +85,13 @@ fun baseProject(block: ProjectTemplateConfigurator): ProjectTemplate {
val language = enumParameter<Language> {
name = R.string.wizard_language
default = Java
displayName = Language::lang
}
val minSdk = enumParameter<Sdk> {
name = R.string.minimum_sdk
default = Sdk.Lollipop
displayName = Sdk::displayName
}
widgets(TextFieldWidget(projectName), TextFieldWidget(packageName),
@@ -157,16 +159,19 @@ fun baseAndroidModule(block: AndroidModuleTemplateConfigurator): ModuleTemplate
val minSdk = enumParameter<Sdk> {
name = R.string.minimum_sdk
default = Sdk.Lollipop
displayName = Sdk::displayName
}
val type = enumParameter<ModuleType> {
name = R.string.wizard_module_type
default = AndroidLibrary
displayName = ModuleType::typeName
}
val language = enumParameter<Language> {
name = R.string.wizard_language
default = Java
displayName = Language::lang
}
widgets(TextFieldWidget(moduleName), TextFieldWidget(packageName), SpinnerWidget(minSdk),
@@ -127,13 +127,17 @@ class BooleanParameterBuilder : ParameterBuilder<Boolean>() {
}
class EnumParameter<T : Enum<*>>(@StringRes name: Int, @StringRes description: Int?, default: T,
constraints: List<ParameterConstraint>, suggest: ValueSuggestion<T>
constraints: List<ParameterConstraint>,
suggest: ValueSuggestion<T>, val displayName: ((T) -> String)? = null
) : Parameter<T>(name, description, default, constraints, suggest)
class EnumParameterBuilder<T : Enum<*>> : ParameterBuilder<T>() {
var displayName: ((T) -> String)? = null
override fun build(): EnumParameter<T> {
return EnumParameter(name!!, description, default!!, constraints, suggest)
return EnumParameter(name = name!!, description = description, default = default!!,
constraints = constraints, suggest = suggest, displayName = displayName)
}
}
@@ -27,6 +27,12 @@ import java.io.File
*/
sealed class TemplateData
/**
* Recipe for creating the project/module.
*/
typealias TemplateRecipe = RecipeExecutor.() -> Unit
/**
* Base class for [TemplateData] implementations.
*
@@ -47,17 +53,12 @@ abstract class BaseTemplateData(val name: String, val projectDir: File, val lang
}
}
/**
* Recipe for creating the project/module.
*/
typealias TemplateRecipe = RecipeExecutor.() -> Unit
/**
* Language for source files.
*/
enum class Language(val lang: String, val ext: String) {
Java("Java", "java"), Kotlin("Kotlin", "kt")
Java("Java", "java"), Kotlin("Kotlin", "kt");
}
/**
@@ -67,7 +68,7 @@ enum class Language(val lang: String, val ext: String) {
*/
enum class ModuleType(val typeName: String) {
AndroidApp("Android zzApplication"), AndroidLibrary("Android Library"), JavaLibrary(
AndroidApp("Android Application"), AndroidLibrary("Android Library"), JavaLibrary(
"Java library")
}