mirror of
https://gitee.com/zhangsken/AndroidIDE.git
synced 2026-10-16 15:56:48 +08:00
feat(templates): add 'displayName' property to EnumParameter
This commit is contained in:
@@ -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")
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user