mirror of
https://gitee.com/zhangsken/AndroidIDE.git
synced 2026-10-16 07:49:44 +08:00
Fixed: Invalid java.lang.* imports when creating Java files
This commit is contained in:
@@ -1,62 +0,0 @@
|
||||
package com.itsaky.androidide.utils;
|
||||
|
||||
import com.squareup.javapoet.JavaFile;
|
||||
import com.squareup.javapoet.MethodSpec;
|
||||
import com.squareup.javapoet.TypeSpec;
|
||||
|
||||
import javax.lang.model.element.Modifier;
|
||||
|
||||
public class ClassBuilder {
|
||||
|
||||
public static String createClass(String packageName, String className) {
|
||||
return toJavaFile(packageName, newClassSpec(className)).toString();
|
||||
}
|
||||
|
||||
// TODO: Allow user to choose number of spaces to indent
|
||||
// Most probably, get this from preferences
|
||||
public static JavaFile toJavaFile(String packageName, TypeSpec type) {
|
||||
return JavaFile.builder(packageName, type)
|
||||
.indent(" ") // Indent 4 spaces
|
||||
.build();
|
||||
}
|
||||
|
||||
public static TypeSpec newClassSpec(String className) {
|
||||
return TypeSpec.classBuilder(className).addModifiers(Modifier.PUBLIC).build();
|
||||
}
|
||||
|
||||
public static String createInterface(String packageName, String className) {
|
||||
return toJavaFile(packageName, newInterfaceSpec(className)).toString();
|
||||
}
|
||||
|
||||
public static TypeSpec newInterfaceSpec(String className) {
|
||||
return TypeSpec.interfaceBuilder(className).addModifiers(Modifier.PUBLIC).build();
|
||||
}
|
||||
|
||||
public static String createEnum(String packageName, String className) {
|
||||
return toJavaFile(packageName, newEnumSpec(className)).toString();
|
||||
}
|
||||
|
||||
public static TypeSpec newEnumSpec(String className) {
|
||||
return TypeSpec.enumBuilder(className)
|
||||
.addModifiers(Modifier.PUBLIC)
|
||||
.addEnumConstant("ENUM_DECLARED")
|
||||
.build();
|
||||
}
|
||||
|
||||
public static String createActivity(String packageName, String className) {
|
||||
MethodSpec onCreate =
|
||||
MethodSpec.methodBuilder("onCreate")
|
||||
.addAnnotation(Override.class)
|
||||
.addModifiers(Modifier.PROTECTED)
|
||||
.addParameter(android.os.Bundle.class, "savedInstanceState")
|
||||
.addStatement("super.onCreate(savedInstanceState)")
|
||||
.build();
|
||||
|
||||
TypeSpec.Builder activity =
|
||||
newClassSpec(className).toBuilder()
|
||||
.superclass(androidx.appcompat.app.AppCompatActivity.class)
|
||||
.addMethod(onCreate);
|
||||
|
||||
return JavaFile.builder(packageName, activity.build()).build().toString();
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,70 @@
|
||||
package com.itsaky.androidide.utils
|
||||
|
||||
import android.os.Bundle
|
||||
import androidx.appcompat.app.AppCompatActivity
|
||||
import com.itsaky.androidide.preferences.internal.tabSize
|
||||
import com.squareup.javapoet.JavaFile
|
||||
import com.squareup.javapoet.MethodSpec
|
||||
import com.squareup.javapoet.TypeSpec
|
||||
import javax.lang.model.element.Modifier.PROTECTED
|
||||
import javax.lang.model.element.Modifier.PUBLIC
|
||||
|
||||
object ClassBuilder {
|
||||
@JvmStatic
|
||||
fun createClass(packageName: String, className: String): String {
|
||||
return toJavaFile(packageName, newClassSpec(className)).toString()
|
||||
}
|
||||
|
||||
private fun toJavaFile(
|
||||
packageName: String,
|
||||
type: TypeSpec,
|
||||
block: JavaFile.Builder.() -> Unit = {}
|
||||
): JavaFile {
|
||||
return JavaFile.builder(packageName, type)
|
||||
.indent(" ".repeat(tabSize))
|
||||
.apply { block(this) }
|
||||
.build()
|
||||
}
|
||||
|
||||
private fun newClassSpec(className: String): TypeSpec {
|
||||
return TypeSpec.classBuilder(className).addModifiers(PUBLIC).build()
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun createInterface(packageName: String, className: String): String {
|
||||
return toJavaFile(packageName, newInterfaceSpec(className)).toString()
|
||||
}
|
||||
|
||||
private fun newInterfaceSpec(className: String): TypeSpec {
|
||||
return TypeSpec.interfaceBuilder(className).addModifiers(PUBLIC).build()
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun createEnum(packageName: String, className: String): String {
|
||||
return toJavaFile(packageName, newEnumSpec(className)).toString()
|
||||
}
|
||||
|
||||
private fun newEnumSpec(className: String): TypeSpec {
|
||||
return TypeSpec.enumBuilder(className)
|
||||
.addModifiers(PUBLIC)
|
||||
.addEnumConstant("ENUM_DECLARED")
|
||||
.build()
|
||||
}
|
||||
|
||||
@JvmStatic
|
||||
fun createActivity(packageName: String, className: String): String {
|
||||
val onCreate =
|
||||
MethodSpec.methodBuilder("onCreate")
|
||||
.addAnnotation(Override::class.java)
|
||||
.addModifiers(PROTECTED)
|
||||
.addParameter(Bundle::class.java, "savedInstanceState")
|
||||
.addStatement("super.onCreate(savedInstanceState)")
|
||||
.build()
|
||||
val activity =
|
||||
newClassSpec(className)
|
||||
.toBuilder()
|
||||
.superclass(AppCompatActivity::class.java)
|
||||
.addMethod(onCreate)
|
||||
return toJavaFile(packageName, activity.build()) { skipJavaLangImports(true) }.toString()
|
||||
}
|
||||
}
|
||||
Binary file not shown.
Reference in New Issue
Block a user