Search in sources :

Example 6 with IdNamingBean

use of entity.IdNamingBean in project CodeUtils by boredream.

the class AndroidUtils method createActivityContent.

/**
	 * 生成activity文件内容
	 */
public static String createActivityContent() {
    StringBuilder sb = new StringBuilder();
    sb.append("\n\n");
    // private TextView tv_name;
    for (IdNamingBean bean : idNamingBeans) {
        sb.append(StringUtils.formatSingleLine(1, "private " + bean.getViewName() + " " + bean.getIdName() + ";"));
    }
    sb.append("\n");
    // 生成initView自定义方法,并在其中依次findViewById为view成员变量赋值
    // private void initView() {
    //    tv_name = (TextView)findViewById(R.id.tv_name);
    // }
    sb.append(StringUtils.formatSingleLine(1, "private void initView() {"));
    for (IdNamingBean bean : idNamingBeans) {
        sb.append(StringUtils.formatSingleLine(2, bean.getIdName() + " = " + "(" + bean.getViewName() + ") findViewById(R.id." + bean.getIdName() + ");"));
    }
    sb.append("\n");
    // 是否包含EditText控件,如果包含,自动生成非空判断代码
    boolean hasEditText = false;
    ///**
    // * TODO 使用输入内容,可根据需要自行修改补充本方法
    // */
    //private void submit() {
    //	// 开始验证输入内容
    //	String content = et_content.getText().toString().trim();
    //	if(!TextUtils.isEmpty(content)) {
    //		Toast.makeText(this, "content不能为空", Toast.LENGTH_SHORT).show();
    //		return;
    //	}
    //	
    //	// TODO 验证成功,下面开始使用数据
    //	
    //	
    //}
    StringBuilder sbEditText = new StringBuilder();
    sbEditText.append("\n");
    sbEditText.append(StringUtils.formatSingleLine(1, "/**"));
    sbEditText.append(StringUtils.formatSingleLine(1, " * TODO 输入验证,可根据需要自行修改补充"));
    sbEditText.append(StringUtils.formatSingleLine(1, " */"));
    sbEditText.append(StringUtils.formatSingleLine(1, "private void submit() {"));
    sbEditText.append(StringUtils.formatSingleLine(2, "// 开始验证输入内容"));
    for (IdNamingBean bean : idNamingBeans) {
        Attribute attrTag = bean.getElement().attribute("tag");
        // 只判断EditText控件
        if (bean.getViewName().equals("EditText")) {
            // 带有可选标识(tag为optional)的EditText不做非空验证
            if (attrTag != null && attrTag.getValue().equals("optional")) {
                continue;
            }
            // 截取最后一个_后面的内容作为名称,不包含_时使用全部id作为名称
            String idName = bean.getIdName();
            int index = idName.lastIndexOf("_");
            String name = index == -1 ? idName : idName.substring(index + 1);
            sbEditText.append(StringUtils.formatSingleLine(2, "String " + name + " = " + idName + ".getText().toString().trim();"));
            sbEditText.append(StringUtils.formatSingleLine(2, "if(TextUtils.isEmpty(" + name + ")) {"));
            sbEditText.append(StringUtils.formatSingleLine(3, "Toast.makeText(this, \"" + name + "不能为空\", Toast.LENGTH_SHORT).show();"));
            sbEditText.append(StringUtils.formatSingleLine(3, "return;"));
            sbEditText.append(StringUtils.formatSingleLine(2, "}"));
            sbEditText.append(StringUtils.formatSingleLine(2, ""));
            hasEditText = true;
        }
    }
    sbEditText.append(StringUtils.formatSingleLine(2, "// TODO 验证成功,下面开始使用数据"));
    sbEditText.append(StringUtils.formatSingleLine(2, ""));
    sbEditText.append(StringUtils.formatSingleLine(2, ""));
    sbEditText.append(StringUtils.formatSingleLine(1, "}"));
    // 是否包含可点击的控件,如果包含,自动生成onClick相关代码
    boolean hasClickView = false;
    // 点击事件复写的onclick方法
    // @Override
    // public void onClick(View v) {
    //    switch (v.getId()) {
    //    case R.id.btn_ok:
    // 		// doSomething
    // 		break;
    //    }
    // } 
    StringBuilder sbOnClick = new StringBuilder();
    sbOnClick.append("\n");
    sbOnClick.append(StringUtils.formatSingleLine(1, "@Override"));
    sbOnClick.append(StringUtils.formatSingleLine(1, "public void onClick(View v) {"));
    sbOnClick.append(StringUtils.formatSingleLine(2, "switch (v.getId()) {"));
    for (IdNamingBean bean : idNamingBeans) {
        Attribute attrClickable = bean.getElement().attribute("clickable");
        // 只设置Button的点击事件,和参数包含clickable=true的控件
        if (bean.getViewName().equals("Button") || (attrClickable != null && attrClickable.getValue().equals("true"))) {
            // 设置监听
            // btn_ok.setOnClickListener(this);
            sb.append(StringUtils.formatSingleLine(2, bean.getIdName() + ".setOnClickListener(this);"));
            // 在onclick中分别处理不同id的点击
            sbOnClick.append(StringUtils.formatSingleLine(2, "case R.id." + bean.getIdName() + ":"));
            sbOnClick.append("\n");
            sbOnClick.append(StringUtils.formatSingleLine(3, "break;"));
            hasClickView = true;
        }
    }
    sbOnClick.append(StringUtils.formatSingleLine(2, "}"));
    sbOnClick.append(StringUtils.formatSingleLine(1, "}"));
    // 是否包含RadioGroup/Button等控件,如果包含,自动生成onCheckChanged相关代码
    boolean hasCheckedView = false;
    // 点击事件复写的onclick方法
    // @Override
    // public void onCheckedChanged(RadioGroup group, int checkedId) {
    //    switch (checkedId) {
    //    case R.id.rb_home:
    // 		// doSomething
    // 		break;
    //    }
    // }
    StringBuilder sbOnChecked = new StringBuilder();
    sbOnChecked.append("\n");
    sbOnChecked.append(StringUtils.formatSingleLine(1, "@Override"));
    sbOnChecked.append(StringUtils.formatSingleLine(1, "public void onCheckedChanged(RadioGroup group, int checkedId) {"));
    sbOnChecked.append(StringUtils.formatSingleLine(2, "switch (checkedId) {"));
    for (IdNamingBean bean : idNamingBeans) {
        // 只设置Button的点击事件,和参数包含clickable=true的控件
        if (bean.getViewName().equals("RadioGroup")) {
            // 设置监听
            // rg.setOnCheckedChangeListener(this);
            sb.append(StringUtils.formatSingleLine(2, bean.getIdName() + ".setOnCheckedChangeListener(this);"));
            hasCheckedView = true;
        } else if (bean.getViewName().equals("RadioButton")) {
            // 在onCheckedChanged中分别处理不同id的选中
            sbOnChecked.append(StringUtils.formatSingleLine(2, "case R.id." + bean.getIdName() + ":"));
            sbOnChecked.append("\n");
            sbOnChecked.append(StringUtils.formatSingleLine(3, "break;"));
            hasCheckedView = true;
        }
    }
    sbOnChecked.append(StringUtils.formatSingleLine(2, "}"));
    sbOnChecked.append(StringUtils.formatSingleLine(1, "}"));
    sb.append(StringUtils.formatSingleLine(1, "}\n"));
    sb.append("\n");
    if (hasClickView) {
        sb.append(sbOnClick);
    }
    if (hasCheckedView) {
        sb.append(sbOnChecked);
    }
    if (hasEditText) {
        sb.append(sbEditText);
    }
    String activityContent = sb.toString();
    return activityContent;
}
Also used : Attribute(org.dom4j.Attribute) IdNamingBean(entity.IdNamingBean)

Aggregations

IdNamingBean (entity.IdNamingBean)6 Attribute (org.dom4j.Attribute)3 File (java.io.File)2 Document (org.dom4j.Document)2 Element (org.dom4j.Element)2 IOException (java.io.IOException)1 ArrayList (java.util.ArrayList)1 Matcher (java.util.regex.Matcher)1 Pattern (java.util.regex.Pattern)1