Android Open Source - sres S Res Xml Layout Generator






From Project

Back to project page sres.

License

The source code is released under:

Apache License

If you think the Android project sres listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

package me.tatarka.sres.impl;
//  w  ww. j a v  a 2  s  .com
import com.google.common.base.CaseFormat;
import com.jamesmurty.utils.XMLBuilder;
import me.tatarka.sres.Bindable;
import me.tatarka.sres.LayoutGenerator;
import me.tatarka.sres.SResOutput;
import me.tatarka.sres.ast.*;

import javax.xml.parsers.ParserConfigurationException;
import javax.xml.transform.OutputKeys;
import javax.xml.transform.TransformerException;
import java.util.Properties;

/**
 * Created by evan on 3/1/14.
 */
public class SResXmlLayoutGenerator implements LayoutGenerator {
    public static final String NS_ANDROID = "http://schemas.android.com/apk/res/android";
    public static final String NS_APP = "http://schemas.android.com/apk/res-auto";

    @Override
    public void generate(RootView rootView, SResOutput output) {
        try {
            String rootClassName =  rootView.subclass != null
                            ? rootView.subclass
                            : output.sourceInfo.getPackageName() + "."
                            + CaseFormat.LOWER_UNDERSCORE.to(CaseFormat.UPPER_CAMEL, output.sourceInfo.getName());

            XMLBuilder b = XMLBuilder.create(rootClassName);

            b.namespace("android", NS_ANDROID);
            b.namespace("app", NS_APP);

            if (rootView.bindClass != null) {
                b.namespace("bind", Bindable.NAMESPACE);
            }

            for (Attribute attribute : rootView.view.attributes) {
                buildAttribute(b, attribute);
            }

            for (Child child : rootView.view.children) {
                buildXml(b, child);
            }

            Properties props = new Properties();
            props.put(OutputKeys.OMIT_XML_DECLARATION, "yes");
            props.put(OutputKeys.INDENT, "yes");
            b.toWriter(output.writer, props);

        } catch (ParserConfigurationException | TransformerException e) {
            e.printStackTrace();
        }
    }

    private static void buildXml(XMLBuilder b, Child child) {
        if (child instanceof View) {
            buildViewXml(b, (View) child);
        } else if (child instanceof Include) {
            buildIncludeXml(b, (Include) child);
        }
    }

    private static void buildViewXml(XMLBuilder b, View view) {
        XMLBuilder e = b.e(view.name);

        for (Attribute attribute : view.attributes) {
            buildAttribute(e, attribute);
        }

        for (Child child : view.children) {
            buildXml(e, child);
        }
    }

    private static void buildIncludeXml(XMLBuilder b, Include include) {
        XMLBuilder e = b.e(Include.INCLUDE);

        for (Attribute attribute : include.attributes) {
            buildAttribute(e, attribute);
        }
    }

    private static void buildAttribute(XMLBuilder e, Attribute attribute) {
        e.a(attribute.name, attribute.value);
    }
}




Java Source Code List

me.tatarka.sres.AbstractTrackable.java
me.tatarka.sres.Bindable.java
me.tatarka.sres.ChangeTracker.java
me.tatarka.sres.FileFilter.java
me.tatarka.sres.LayoutGenerator.java
me.tatarka.sres.LayoutParser.java
me.tatarka.sres.LayoutSelectorHelper.java
me.tatarka.sres.LayoutSelector.java
me.tatarka.sres.ListView.java
me.tatarka.sres.Main.java
me.tatarka.sres.ObservableAdapter.java
me.tatarka.sres.ObservableArrayList.java
me.tatarka.sres.ObservableListViewHelper.java
me.tatarka.sres.ObservableList.java
me.tatarka.sres.ObservablePagerAdapter.java
me.tatarka.sres.SResBaseVisitor.java
me.tatarka.sres.SResLexer.java
me.tatarka.sres.SResOutput.java
me.tatarka.sres.SResParser.java
me.tatarka.sres.SResVisitor.java
me.tatarka.sres.SRes.java
me.tatarka.sres.SourceInfo.java
me.tatarka.sres.ThreadHandlerImpl.java
me.tatarka.sres.ThreadHandlerProvider.java
me.tatarka.sres.ThreadHandler.java
me.tatarka.sres.Trackable.java
me.tatarka.sres.ViewPager.java
me.tatarka.sres.ast.Attribute.java
me.tatarka.sres.ast.Binding.java
me.tatarka.sres.ast.Child.java
me.tatarka.sres.ast.Converter.java
me.tatarka.sres.ast.Include.java
me.tatarka.sres.ast.RootView.java
me.tatarka.sres.ast.View.java
me.tatarka.sres.idea.SResFileTypeFactory.java
me.tatarka.sres.idea.SResFileType.java
me.tatarka.sres.idea.SResFile.java
me.tatarka.sres.idea.SResIcons.java
me.tatarka.sres.idea.SResLanguage.java
me.tatarka.sres.idea.SResLexer.java
me.tatarka.sres.idea.SResParserDefinition.java
me.tatarka.sres.idea._SResLexer.java
me.tatarka.sres.idea.psi.SResElementType.java
me.tatarka.sres.idea.psi.SResTokenType.java
me.tatarka.sres.impl.SResCodeLayoutGenerator.java
me.tatarka.sres.impl.SResLayoutParser.java
me.tatarka.sres.impl.SResVisitor.java
me.tatarka.sres.impl.SResXmlLayoutGenerator.java
me.tatarka.sres.impl.WriterCodeWriter.java
me.tatarka.sres.property.BooleanProperty.java
me.tatarka.sres.property.ByteProperty.java
me.tatarka.sres.property.CharProperty.java
me.tatarka.sres.property.DoubleProperty.java
me.tatarka.sres.property.FloatProperty.java
me.tatarka.sres.property.IntProperty.java
me.tatarka.sres.property.LongProperty.java
me.tatarka.sres.property.Property.java
me.tatarka.sres.property.ShortProperty.java
me.tatarka.sres.sample.MainActivity.java
me.tatarka.sres.sample.MyListItemView.java
me.tatarka.sres.sample.MyListItem.java
me.tatarka.sres.sample.MyMainView.java
me.tatarka.sres.sample.MyModel.java
me.tatarka.sres.sample.MyView.java
me.tatarka.sres.util.PathTransformer.java