package android.view;
import android.content.Context;
import android.content.res.XmlResourceParser;
import android.util.AttributeSet;
import android.util.Xml;
import java.io.FileReader;
import java.lang.reflect.Constructor;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;
import org.xmlpull.v1.XmlPullParserFactory;
public class LayoutInflater {
public interface Factory {
}
public interface Factory2 {
}
private Factory2 mFactory2;
public final LayoutInflater.Factory getFactory() {
return null;
}
public void setFactory2(Factory2 factory) {
this.mFactory2 = factory;
}
public static LayoutInflater from(Context context) {
return new LayoutInflater();
}
public final View createView(String name, String prefix, AttributeSet attrs) throws Exception {
System.out.println(">>>>>>>>>>>>>>>>>>>>>>>>> createView(" + name + ", " + prefix + ", " + attrs + ");");
String view_class_name = prefix!=null ? prefix + name : name;
Class view_class = Class.forName(view_class_name);
Constructor constructor = view_class.getConstructor(Context.class, AttributeSet.class);
View view_instance = (View)constructor.newInstance(Context.this_application, attrs);
return view_instance;
}
/**
* taken as-is
*/
protected View onCreateView(String name, AttributeSet attrs) throws Exception {
try { // FIXME ugly
return createView(name, "android.view.", attrs);
} catch (java.lang.ClassNotFoundException e) {
return createView(name, "android.widget.", attrs);
}
}
/**
* taken as-is
*/
protected View onCreateView(View parent, String name, AttributeSet attrs) throws Exception {
return onCreateView(name, attrs);
}
View createViewFromTag(View parent, String name, AttributeSet attrs) throws Exception {
if (name.equals("view")) {
name = attrs.getAttributeValue(null, "class");
}
System.out.println("******** Creating view: " + name);
View view;
if (-1 == name.indexOf('.')) {
view = onCreateView(parent, name, attrs);
} else {
view = createView(name, null, attrs);
}
System.out.println("Created view is: " + view);
return view;
}
public View inflate(int resource, ViewGroup root) {
return inflate(resource, root, root != null);
}
public View inflate(int layoutResID, ViewGroup root, boolean attachToRoot) {
XmlResourceParser xpp = Context.this_application.getResources().getLayout(layoutResID);
try {
return inflate(xpp, root, attachToRoot);
} catch (Exception e) {
throw new RuntimeException(e);
}
}
public View inflate(XmlPullParser parser, ViewGroup root, boolean attachToRoot) throws Exception {
final AttributeSet attrs = Xml.asAttributeSet(parser);
View result = root;
// Look for the root node.
int type;
while ((type = parser.next()) != XmlPullParser.START_TAG &&
type != XmlPullParser.END_DOCUMENT) {
// Empty
}
if (type != XmlPullParser.START_TAG) {
throw new Exception(parser.getPositionDescription() + ": No start tag found!");
}
final String name = parser.getName();
System.out.println("**************************");
System.out.println("Creating root view: " + name);
System.out.println("**************************");
if (name.equals("merge")) {
if (root == null || !attachToRoot) {
throw new Exception(" can be used only with a valid ViewGroup root and attachToRoot=true");
}
rInflate(parser, root, attrs, false);
} else {
// Temp is the root view that was found in the xml
View temp;
if (name.equals("blink")) {
throw new Exception("