package com.jasonette.seed.Component;
import android.content.Context;
import android.util.Log;
import android.view.Gravity;
import android.view.View;
import android.widget.TextView;
import org.json.JSONObject;
import java.util.HashMap;
import java.util.Map;
public class JasonComponentFactory {
Map<String, Integer> signature_to_type = new HashMap<String,Integer>();
public static View build(View prototype, final JSONObject component, final JSONObject parent, final Context context) {
try{
String type;
type = component.getString("type");
View view;
if(type.equalsIgnoreCase("label")){
view = JasonLabelComponent.build(prototype, component, parent, context);
} else if(type.equalsIgnoreCase("image")) {
view = JasonImageComponent.build(prototype, component, parent, context);
} else if(type.equalsIgnoreCase("button")) {
view = JasonButtonComponent.build(prototype, component, parent, context);
} else if(type.equalsIgnoreCase("space")) {
view = JasonSpaceComponent.build(prototype, component, parent, context);
} else if(type.equalsIgnoreCase("textfield")) {
view = JasonTextfieldComponent.build(prototype, component, parent, context);
} else if(type.equalsIgnoreCase("textarea")) {
view = JasonTextareaComponent.build(prototype, component, parent, context);
} else if(type.equalsIgnoreCase("html")) {
view = JasonHtmlComponent.build(prototype, component, parent, context);
} else if(type.equalsIgnoreCase("map")) {
view = JasonMapComponent.build(prototype, component, parent, context);
} else if(type.equalsIgnoreCase("slider")) {
view = JasonSliderComponent.build(prototype, component, parent, context);
} else {
// Non-existent component warning
JSONObject error_component = new JSONObject(component.toString());
error_component.put("type", "label");
error_component.put("text", "$"+component.getString("type")+"\n(not implemented yet)");
view = JasonLabelComponent.build(prototype, error_component, parent, context);
((TextView)view).setGravity(Gravity.CENTER);
}
return view;
}
catch (Exception e){
Log.d("Error", e.toString());
}
return new View(context);
}
}